mirror of
https://gitlab.com/cznic/sqlite.git
synced 2025-05-17 23:26:41 +00:00
5259 lines
344 KiB
Go
5259 lines
344 KiB
Go
// Code generated by 'ccgo -export-defines "" -ignore-unsupported-alignment -o internal/mptest/main_openbsd_amd64.go -trace-translation-units testdata/sqlite-src-3380500/mptest/mptest.c -Itestdata/sqlite-amalgamation-3380500 -l modernc.org/sqlite/lib -full-path-comments -DNDEBUG -DHAVE_USLEEP -DLONGDOUBLE_TYPE=double -DSQLITE_CORE -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_MEMORY_MANAGEMENT -DSQLITE_ENABLE_OFFSET_SQL_FUNC -DSQLITE_ENABLE_PREUPDATE_HOOK -DSQLITE_ENABLE_RBU -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_SNAPSHOT -DSQLITE_ENABLE_STAT4 -DSQLITE_ENABLE_UNLOCK_NOTIFY -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MUTEX_APPDEF=1 -DSQLITE_MUTEX_NOOP -DSQLITE_SOUNDEX -DSQLITE_THREADSAFE=1 -DSQLITE_OS_UNIX=1', DO NOT EDIT.
|
|
|
|
package main
|
|
|
|
import (
|
|
"math"
|
|
"reflect"
|
|
"sync/atomic"
|
|
"unsafe"
|
|
|
|
"modernc.org/libc"
|
|
"modernc.org/libc/sys/types"
|
|
"modernc.org/sqlite/lib"
|
|
)
|
|
|
|
var _ = math.Pi
|
|
var _ reflect.Kind
|
|
var _ atomic.Value
|
|
var _ unsafe.Pointer
|
|
var _ *libc.TLS
|
|
var _ types.Size_t
|
|
|
|
func main() { libc.Start(main1) }
|
|
|
|
const (
|
|
BIG_ENDIAN = 4321 // /usr/include/sys/endian.h:45:1:
|
|
BUFSIZ = 1024 // /usr/include/stdio.h:168:1:
|
|
BYTE_ORDER = 1234 // /usr/include/sys/endian.h:47:1:
|
|
DEFAULT_TIMEOUT = 10000 // testdata/sqlite-src-3380500/mptest/mptest.c:93:1:
|
|
E2BIG = 7 // /usr/include/sys/errno.h:48:1:
|
|
EACCES = 13 // /usr/include/sys/errno.h:55:1:
|
|
EADDRINUSE = 48 // /usr/include/sys/errno.h:103:1:
|
|
EADDRNOTAVAIL = 49 // /usr/include/sys/errno.h:104:1:
|
|
EAFNOSUPPORT = 47 // /usr/include/sys/errno.h:102:1:
|
|
EAGAIN = 35 // /usr/include/sys/errno.h:83:1:
|
|
EALREADY = 37 // /usr/include/sys/errno.h:86:1:
|
|
EAUTH = 80 // /usr/include/sys/errno.h:155:1:
|
|
EBADF = 9 // /usr/include/sys/errno.h:50:1:
|
|
EBADMSG = 92 // /usr/include/sys/errno.h:170:1:
|
|
EBADRPC = 72 // /usr/include/sys/errno.h:143:1:
|
|
EBUSY = 16 // /usr/include/sys/errno.h:60:1:
|
|
ECANCELED = 88 // /usr/include/sys/errno.h:166:1:
|
|
ECHILD = 10 // /usr/include/sys/errno.h:51:1:
|
|
ECONNABORTED = 53 // /usr/include/sys/errno.h:110:1:
|
|
ECONNREFUSED = 61 // /usr/include/sys/errno.h:120:1:
|
|
ECONNRESET = 54 // /usr/include/sys/errno.h:111:1:
|
|
EDEADLK = 11 // /usr/include/sys/errno.h:52:1:
|
|
EDESTADDRREQ = 39 // /usr/include/sys/errno.h:90:1:
|
|
EDOM = 33 // /usr/include/sys/errno.h:79:1:
|
|
EDQUOT = 69 // /usr/include/sys/errno.h:137:1:
|
|
EEXIST = 17 // /usr/include/sys/errno.h:61:1:
|
|
EFAULT = 14 // /usr/include/sys/errno.h:56:1:
|
|
EFBIG = 27 // /usr/include/sys/errno.h:71:1:
|
|
EFTYPE = 79 // /usr/include/sys/errno.h:154:1:
|
|
EHOSTDOWN = 64 // /usr/include/sys/errno.h:127:1:
|
|
EHOSTUNREACH = 65 // /usr/include/sys/errno.h:129:1:
|
|
EIDRM = 89 // /usr/include/sys/errno.h:167:1:
|
|
EILSEQ = 84 // /usr/include/sys/errno.h:160:1:
|
|
EINPROGRESS = 36 // /usr/include/sys/errno.h:85:1:
|
|
EINTR = 4 // /usr/include/sys/errno.h:45:1:
|
|
EINVAL = 22 // /usr/include/sys/errno.h:66:1:
|
|
EIO = 5 // /usr/include/sys/errno.h:46:1:
|
|
EIPSEC = 82 // /usr/include/sys/errno.h:157:1:
|
|
EISCONN = 56 // /usr/include/sys/errno.h:113:1:
|
|
EISDIR = 21 // /usr/include/sys/errno.h:65:1:
|
|
ELAST = 95 // /usr/include/sys/errno.h:175:1:
|
|
ELOOP = 62 // /usr/include/sys/errno.h:122:1:
|
|
EMEDIUMTYPE = 86 // /usr/include/sys/errno.h:163:1:
|
|
EMFILE = 24 // /usr/include/sys/errno.h:68:1:
|
|
EMLINK = 31 // /usr/include/sys/errno.h:75:1:
|
|
EMSGSIZE = 40 // /usr/include/sys/errno.h:91:1:
|
|
ENAMETOOLONG = 63 // /usr/include/sys/errno.h:123:1:
|
|
ENEEDAUTH = 81 // /usr/include/sys/errno.h:156:1:
|
|
ENETDOWN = 50 // /usr/include/sys/errno.h:107:1:
|
|
ENETRESET = 52 // /usr/include/sys/errno.h:109:1:
|
|
ENETUNREACH = 51 // /usr/include/sys/errno.h:108:1:
|
|
ENFILE = 23 // /usr/include/sys/errno.h:67:1:
|
|
ENOATTR = 83 // /usr/include/sys/errno.h:158:1:
|
|
ENOBUFS = 55 // /usr/include/sys/errno.h:112:1:
|
|
ENODEV = 19 // /usr/include/sys/errno.h:63:1:
|
|
ENOENT = 2 // /usr/include/sys/errno.h:43:1:
|
|
ENOEXEC = 8 // /usr/include/sys/errno.h:49:1:
|
|
ENOLCK = 77 // /usr/include/sys/errno.h:150:1:
|
|
ENOMEDIUM = 85 // /usr/include/sys/errno.h:162:1:
|
|
ENOMEM = 12 // /usr/include/sys/errno.h:54:1:
|
|
ENOMSG = 90 // /usr/include/sys/errno.h:168:1:
|
|
ENOPROTOOPT = 42 // /usr/include/sys/errno.h:93:1:
|
|
ENOSPC = 28 // /usr/include/sys/errno.h:72:1:
|
|
ENOSYS = 78 // /usr/include/sys/errno.h:151:1:
|
|
ENOTBLK = 15 // /usr/include/sys/errno.h:58:1:
|
|
ENOTCONN = 57 // /usr/include/sys/errno.h:114:1:
|
|
ENOTDIR = 20 // /usr/include/sys/errno.h:64:1:
|
|
ENOTEMPTY = 66 // /usr/include/sys/errno.h:130:1:
|
|
ENOTRECOVERABLE = 93 // /usr/include/sys/errno.h:171:1:
|
|
ENOTSOCK = 38 // /usr/include/sys/errno.h:89:1:
|
|
ENOTSUP = 91 // /usr/include/sys/errno.h:169:1:
|
|
ENOTTY = 25 // /usr/include/sys/errno.h:69:1:
|
|
ENXIO = 6 // /usr/include/sys/errno.h:47:1:
|
|
EOF = -1 // /usr/include/stdio.h:170:1:
|
|
EOPNOTSUPP = 45 // /usr/include/sys/errno.h:98:1:
|
|
EOVERFLOW = 87 // /usr/include/sys/errno.h:165:1:
|
|
EOWNERDEAD = 94 // /usr/include/sys/errno.h:172:1:
|
|
EPERM = 1 // /usr/include/sys/errno.h:42:1:
|
|
EPFNOSUPPORT = 46 // /usr/include/sys/errno.h:100:1:
|
|
EPIPE = 32 // /usr/include/sys/errno.h:76:1:
|
|
EPROCLIM = 67 // /usr/include/sys/errno.h:134:1:
|
|
EPROCUNAVAIL = 76 // /usr/include/sys/errno.h:147:1:
|
|
EPROGMISMATCH = 75 // /usr/include/sys/errno.h:146:1:
|
|
EPROGUNAVAIL = 74 // /usr/include/sys/errno.h:145:1:
|
|
EPROTO = 95 // /usr/include/sys/errno.h:173:1:
|
|
EPROTONOSUPPORT = 43 // /usr/include/sys/errno.h:94:1:
|
|
EPROTOTYPE = 41 // /usr/include/sys/errno.h:92:1:
|
|
ERANGE = 34 // /usr/include/sys/errno.h:80:1:
|
|
EREMOTE = 71 // /usr/include/sys/errno.h:142:1:
|
|
EROFS = 30 // /usr/include/sys/errno.h:74:1:
|
|
ERPCMISMATCH = 73 // /usr/include/sys/errno.h:144:1:
|
|
ESHUTDOWN = 58 // /usr/include/sys/errno.h:116:1:
|
|
ESOCKTNOSUPPORT = 44 // /usr/include/sys/errno.h:96:1:
|
|
ESPIPE = 29 // /usr/include/sys/errno.h:73:1:
|
|
ESRCH = 3 // /usr/include/sys/errno.h:44:1:
|
|
ESTALE = 70 // /usr/include/sys/errno.h:140:1:
|
|
ETIMEDOUT = 60 // /usr/include/sys/errno.h:119:1:
|
|
ETOOMANYREFS = 59 // /usr/include/sys/errno.h:117:1:
|
|
ETXTBSY = 26 // /usr/include/sys/errno.h:70:1:
|
|
EUSERS = 68 // /usr/include/sys/errno.h:135:1:
|
|
EWOULDBLOCK = 35 // /usr/include/sys/errno.h:84:1:
|
|
EXDEV = 18 // /usr/include/sys/errno.h:62:1:
|
|
EXIT_FAILURE = 1 // /usr/include/stdlib.h:80:1:
|
|
EXIT_SUCCESS = 0 // /usr/include/stdlib.h:81:1:
|
|
FILENAME_MAX = 1024 // /usr/include/stdio.h:178:1:
|
|
FOPEN_MAX = 20 // /usr/include/stdio.h:177:1:
|
|
FTS5_TOKENIZE_AUX = 0x0008 // testdata/sqlite-amalgamation-3380500/sqlite3.h:12752:1:
|
|
FTS5_TOKENIZE_DOCUMENT = 0x0004 // testdata/sqlite-amalgamation-3380500/sqlite3.h:12751:1:
|
|
FTS5_TOKENIZE_PREFIX = 0x0002 // testdata/sqlite-amalgamation-3380500/sqlite3.h:12750:1:
|
|
FTS5_TOKENIZE_QUERY = 0x0001 // testdata/sqlite-amalgamation-3380500/sqlite3.h:12749:1:
|
|
FTS5_TOKEN_COLOCATED = 0x0001 // testdata/sqlite-amalgamation-3380500/sqlite3.h:12756:1:
|
|
FULLY_WITHIN = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10497:1:
|
|
F_LOCK = 1 // /usr/include/unistd.h:48:1:
|
|
F_OK = 0 // /usr/include/sys/unistd.h:49:1:
|
|
F_TEST = 3 // /usr/include/unistd.h:50:1:
|
|
F_TLOCK = 2 // /usr/include/unistd.h:49:1:
|
|
F_ULOCK = 0 // /usr/include/unistd.h:47:1:
|
|
HAVE_USLEEP = 1 // <defines>:2:1:
|
|
KBIND_BLOCK_MAX = 2 // /usr/include/sys/unistd.h:77:1:
|
|
KBIND_DATA_MAX = 24 // /usr/include/sys/unistd.h:78:1:
|
|
LITTLE_ENDIAN = 1234 // /usr/include/sys/endian.h:44:1:
|
|
L_INCR = 1 // /usr/include/sys/unistd.h:62:1:
|
|
L_SET = 0 // /usr/include/sys/unistd.h:61:1:
|
|
L_XTND = 2 // /usr/include/sys/unistd.h:63:1:
|
|
L_ctermid = 1024 // /usr/include/stdio.h:306:1:
|
|
L_tmpnam = 1024 // /usr/include/stdio.h:184:1:
|
|
MX_ARG = 2 // testdata/sqlite-src-3380500/mptest/mptest.c:867:1:
|
|
NDEBUG = 1 // <defines>:1:1:
|
|
NOT_WITHIN = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10495:1:
|
|
PARTLY_WITHIN = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10496:1:
|
|
PDP_ENDIAN = 3412 // /usr/include/sys/endian.h:46:1:
|
|
P_tmpdir = "/tmp/" // /usr/include/stdio.h:182:1:
|
|
RAND_MAX = 0x7fffffff // /usr/include/stdlib.h:83:1:
|
|
R_OK = 0x04 // /usr/include/sys/unistd.h:52:1:
|
|
SEEK_CUR = 1 // /usr/include/sys/unistd.h:56:1:
|
|
SEEK_END = 2 // /usr/include/sys/unistd.h:57:1:
|
|
SEEK_SET = 0 // /usr/include/sys/unistd.h:55:1:
|
|
SQLITE3_H = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:34:1:
|
|
SQLITE3_TEXT = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4881:1:
|
|
SQLITE_ABORT = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:449:1:
|
|
SQLITE_ABORT_ROLLBACK = 516 // testdata/sqlite-amalgamation-3380500/sqlite3.h:551:1:
|
|
SQLITE_ACCESS_EXISTS = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1486:1:
|
|
SQLITE_ACCESS_READ = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1488:1:
|
|
SQLITE_ACCESS_READWRITE = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1487:1:
|
|
SQLITE_ALTER_TABLE = 26 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3176:1:
|
|
SQLITE_ANALYZE = 28 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3178:1:
|
|
SQLITE_ANY = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5339:1:
|
|
SQLITE_API = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:75:1:
|
|
SQLITE_APICALL = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:81:1:
|
|
SQLITE_ATTACH = 24 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3174:1:
|
|
SQLITE_AUTH = 23 // testdata/sqlite-amalgamation-3380500/sqlite3.h:468:1:
|
|
SQLITE_AUTH_USER = 279 // testdata/sqlite-amalgamation-3380500/sqlite3.h:567:1:
|
|
SQLITE_BLOB = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4874:1:
|
|
SQLITE_BUSY = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:450:1:
|
|
SQLITE_BUSY_RECOVERY = 261 // testdata/sqlite-amalgamation-3380500/sqlite3.h:533:1:
|
|
SQLITE_BUSY_SNAPSHOT = 517 // testdata/sqlite-amalgamation-3380500/sqlite3.h:534:1:
|
|
SQLITE_BUSY_TIMEOUT = 773 // testdata/sqlite-amalgamation-3380500/sqlite3.h:535:1:
|
|
SQLITE_CALLBACK = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:87:1:
|
|
SQLITE_CANTOPEN = 14 // testdata/sqlite-amalgamation-3380500/sqlite3.h:459:1:
|
|
SQLITE_CANTOPEN_CONVPATH = 1038 // testdata/sqlite-amalgamation-3380500/sqlite3.h:539:1:
|
|
SQLITE_CANTOPEN_DIRTYWAL = 1294 // testdata/sqlite-amalgamation-3380500/sqlite3.h:540:1:
|
|
SQLITE_CANTOPEN_FULLPATH = 782 // testdata/sqlite-amalgamation-3380500/sqlite3.h:538:1:
|
|
SQLITE_CANTOPEN_ISDIR = 526 // testdata/sqlite-amalgamation-3380500/sqlite3.h:537:1:
|
|
SQLITE_CANTOPEN_NOTEMPDIR = 270 // testdata/sqlite-amalgamation-3380500/sqlite3.h:536:1:
|
|
SQLITE_CANTOPEN_SYMLINK = 1550 // testdata/sqlite-amalgamation-3380500/sqlite3.h:541:1:
|
|
SQLITE_CDECL = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:78:1:
|
|
SQLITE_CHANGESETAPPLY_INVERT = 0x0002 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11754:1:
|
|
SQLITE_CHANGESETAPPLY_NOSAVEPOINT = 0x0001 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11753:1:
|
|
SQLITE_CHANGESETSTART_INVERT = 0x0002 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11069:1:
|
|
SQLITE_CHANGESET_ABORT = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11850:1:
|
|
SQLITE_CHANGESET_CONFLICT = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11813:1:
|
|
SQLITE_CHANGESET_CONSTRAINT = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11814:1:
|
|
SQLITE_CHANGESET_DATA = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11811:1:
|
|
SQLITE_CHANGESET_FOREIGN_KEY = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11815:1:
|
|
SQLITE_CHANGESET_NOTFOUND = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11812:1:
|
|
SQLITE_CHANGESET_OMIT = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11848:1:
|
|
SQLITE_CHANGESET_REPLACE = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:11849:1:
|
|
SQLITE_CHECKPOINT_FULL = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9386:1:
|
|
SQLITE_CHECKPOINT_PASSIVE = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9385:1:
|
|
SQLITE_CHECKPOINT_RESTART = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9387:1:
|
|
SQLITE_CHECKPOINT_TRUNCATE = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9388:1:
|
|
SQLITE_CONFIG_COVERING_INDEX_SCAN = 20 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2107:1:
|
|
SQLITE_CONFIG_GETMALLOC = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2092:1:
|
|
SQLITE_CONFIG_GETMUTEX = 11 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2098:1:
|
|
SQLITE_CONFIG_GETPCACHE = 15 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2102:1:
|
|
SQLITE_CONFIG_GETPCACHE2 = 19 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2106:1:
|
|
SQLITE_CONFIG_HEAP = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2095:1:
|
|
SQLITE_CONFIG_LOG = 16 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2103:1:
|
|
SQLITE_CONFIG_LOOKASIDE = 13 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2100:1:
|
|
SQLITE_CONFIG_MALLOC = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2091:1:
|
|
SQLITE_CONFIG_MEMDB_MAXSIZE = 29 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2116:1:
|
|
SQLITE_CONFIG_MEMSTATUS = 9 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2096:1:
|
|
SQLITE_CONFIG_MMAP_SIZE = 22 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2109:1:
|
|
SQLITE_CONFIG_MULTITHREAD = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2089:1:
|
|
SQLITE_CONFIG_MUTEX = 10 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2097:1:
|
|
SQLITE_CONFIG_PAGECACHE = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2094:1:
|
|
SQLITE_CONFIG_PCACHE = 14 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2101:1:
|
|
SQLITE_CONFIG_PCACHE2 = 18 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2105:1:
|
|
SQLITE_CONFIG_PCACHE_HDRSZ = 24 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2111:1:
|
|
SQLITE_CONFIG_PMASZ = 25 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2112:1:
|
|
SQLITE_CONFIG_SCRATCH = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2093:1:
|
|
SQLITE_CONFIG_SERIALIZED = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2090:1:
|
|
SQLITE_CONFIG_SINGLETHREAD = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2088:1:
|
|
SQLITE_CONFIG_SMALL_MALLOC = 27 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2114:1:
|
|
SQLITE_CONFIG_SORTERREF_SIZE = 28 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2115:1:
|
|
SQLITE_CONFIG_SQLLOG = 21 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2108:1:
|
|
SQLITE_CONFIG_STMTJRNL_SPILL = 26 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2113:1:
|
|
SQLITE_CONFIG_URI = 17 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2104:1:
|
|
SQLITE_CONFIG_WIN32_HEAPSIZE = 23 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2110:1:
|
|
SQLITE_CONSTRAINT = 19 // testdata/sqlite-amalgamation-3380500/sqlite3.h:464:1:
|
|
SQLITE_CONSTRAINT_CHECK = 275 // testdata/sqlite-amalgamation-3380500/sqlite3.h:552:1:
|
|
SQLITE_CONSTRAINT_COMMITHOOK = 531 // testdata/sqlite-amalgamation-3380500/sqlite3.h:553:1:
|
|
SQLITE_CONSTRAINT_DATATYPE = 3091 // testdata/sqlite-amalgamation-3380500/sqlite3.h:563:1:
|
|
SQLITE_CONSTRAINT_FOREIGNKEY = 787 // testdata/sqlite-amalgamation-3380500/sqlite3.h:554:1:
|
|
SQLITE_CONSTRAINT_FUNCTION = 1043 // testdata/sqlite-amalgamation-3380500/sqlite3.h:555:1:
|
|
SQLITE_CONSTRAINT_NOTNULL = 1299 // testdata/sqlite-amalgamation-3380500/sqlite3.h:556:1:
|
|
SQLITE_CONSTRAINT_PINNED = 2835 // testdata/sqlite-amalgamation-3380500/sqlite3.h:562:1:
|
|
SQLITE_CONSTRAINT_PRIMARYKEY = 1555 // testdata/sqlite-amalgamation-3380500/sqlite3.h:557:1:
|
|
SQLITE_CONSTRAINT_ROWID = 2579 // testdata/sqlite-amalgamation-3380500/sqlite3.h:561:1:
|
|
SQLITE_CONSTRAINT_TRIGGER = 1811 // testdata/sqlite-amalgamation-3380500/sqlite3.h:558:1:
|
|
SQLITE_CONSTRAINT_UNIQUE = 2067 // testdata/sqlite-amalgamation-3380500/sqlite3.h:559:1:
|
|
SQLITE_CONSTRAINT_VTAB = 2323 // testdata/sqlite-amalgamation-3380500/sqlite3.h:560:1:
|
|
SQLITE_COPY = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3183:1:
|
|
SQLITE_CORE = 1 // <defines>:4:1:
|
|
SQLITE_CORRUPT = 11 // testdata/sqlite-amalgamation-3380500/sqlite3.h:456:1:
|
|
SQLITE_CORRUPT_INDEX = 779 // testdata/sqlite-amalgamation-3380500/sqlite3.h:544:1:
|
|
SQLITE_CORRUPT_SEQUENCE = 523 // testdata/sqlite-amalgamation-3380500/sqlite3.h:543:1:
|
|
SQLITE_CORRUPT_VTAB = 267 // testdata/sqlite-amalgamation-3380500/sqlite3.h:542:1:
|
|
SQLITE_CREATE_INDEX = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3151:1:
|
|
SQLITE_CREATE_TABLE = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3152:1:
|
|
SQLITE_CREATE_TEMP_INDEX = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3153:1:
|
|
SQLITE_CREATE_TEMP_TABLE = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3154:1:
|
|
SQLITE_CREATE_TEMP_TRIGGER = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3155:1:
|
|
SQLITE_CREATE_TEMP_VIEW = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3156:1:
|
|
SQLITE_CREATE_TRIGGER = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3157:1:
|
|
SQLITE_CREATE_VIEW = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3158:1:
|
|
SQLITE_CREATE_VTABLE = 29 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3179:1:
|
|
SQLITE_DBCONFIG_DEFENSIVE = 1010 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2409:1:
|
|
SQLITE_DBCONFIG_DQS_DDL = 1014 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2413:1:
|
|
SQLITE_DBCONFIG_DQS_DML = 1013 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2412:1:
|
|
SQLITE_DBCONFIG_ENABLE_FKEY = 1002 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2401:1:
|
|
SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER = 1004 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2403:1:
|
|
SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION = 1005 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2404:1:
|
|
SQLITE_DBCONFIG_ENABLE_QPSG = 1007 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2406:1:
|
|
SQLITE_DBCONFIG_ENABLE_TRIGGER = 1003 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2402:1:
|
|
SQLITE_DBCONFIG_ENABLE_VIEW = 1015 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2414:1:
|
|
SQLITE_DBCONFIG_LEGACY_ALTER_TABLE = 1012 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2411:1:
|
|
SQLITE_DBCONFIG_LEGACY_FILE_FORMAT = 1016 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2415:1:
|
|
SQLITE_DBCONFIG_LOOKASIDE = 1001 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2400:1:
|
|
SQLITE_DBCONFIG_MAINDBNAME = 1000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2399:1:
|
|
SQLITE_DBCONFIG_MAX = 1017 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2417:1:
|
|
SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE = 1006 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2405:1:
|
|
SQLITE_DBCONFIG_RESET_DATABASE = 1009 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2408:1:
|
|
SQLITE_DBCONFIG_TRIGGER_EQP = 1008 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2407:1:
|
|
SQLITE_DBCONFIG_TRUSTED_SCHEMA = 1017 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2416:1:
|
|
SQLITE_DBCONFIG_WRITABLE_SCHEMA = 1011 // testdata/sqlite-amalgamation-3380500/sqlite3.h:2410:1:
|
|
SQLITE_DBSTATUS_CACHE_HIT = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8440:1:
|
|
SQLITE_DBSTATUS_CACHE_MISS = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8441:1:
|
|
SQLITE_DBSTATUS_CACHE_SPILL = 12 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8445:1:
|
|
SQLITE_DBSTATUS_CACHE_USED = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8434:1:
|
|
SQLITE_DBSTATUS_CACHE_USED_SHARED = 11 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8444:1:
|
|
SQLITE_DBSTATUS_CACHE_WRITE = 9 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8442:1:
|
|
SQLITE_DBSTATUS_DEFERRED_FKS = 10 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8443:1:
|
|
SQLITE_DBSTATUS_LOOKASIDE_HIT = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8437:1:
|
|
SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8439:1:
|
|
SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8438:1:
|
|
SQLITE_DBSTATUS_LOOKASIDE_USED = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8433:1:
|
|
SQLITE_DBSTATUS_MAX = 12 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8446:1:
|
|
SQLITE_DBSTATUS_SCHEMA_USED = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8435:1:
|
|
SQLITE_DBSTATUS_STMT_USED = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8436:1:
|
|
SQLITE_DELETE = 9 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3159:1:
|
|
SQLITE_DENY = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3128:1:
|
|
SQLITE_DEPRECATED = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:106:1:
|
|
SQLITE_DESERIALIZE_FREEONCLOSE = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10371:1:
|
|
SQLITE_DESERIALIZE_READONLY = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10373:1:
|
|
SQLITE_DESERIALIZE_RESIZEABLE = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10372:1:
|
|
SQLITE_DETACH = 25 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3175:1:
|
|
SQLITE_DETERMINISTIC = 0x000000800 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5407:1:
|
|
SQLITE_DIRECTONLY = 0x000080000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5408:1:
|
|
SQLITE_DONE = 101 // testdata/sqlite-amalgamation-3380500/sqlite3.h:475:1:
|
|
SQLITE_DROP_INDEX = 10 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3160:1:
|
|
SQLITE_DROP_TABLE = 11 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3161:1:
|
|
SQLITE_DROP_TEMP_INDEX = 12 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3162:1:
|
|
SQLITE_DROP_TEMP_TABLE = 13 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3163:1:
|
|
SQLITE_DROP_TEMP_TRIGGER = 14 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3164:1:
|
|
SQLITE_DROP_TEMP_VIEW = 15 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3165:1:
|
|
SQLITE_DROP_TRIGGER = 16 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3166:1:
|
|
SQLITE_DROP_VIEW = 17 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3167:1:
|
|
SQLITE_DROP_VTABLE = 30 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3180:1:
|
|
SQLITE_EMPTY = 16 // testdata/sqlite-amalgamation-3380500/sqlite3.h:461:1:
|
|
SQLITE_ENABLE_COLUMN_METADATA = 1 // <defines>:5:1:
|
|
SQLITE_ENABLE_FTS5 = 1 // <defines>:6:1:
|
|
SQLITE_ENABLE_GEOPOLY = 1 // <defines>:7:1:
|
|
SQLITE_ENABLE_MATH_FUNCTIONS = 1 // <defines>:8:1:
|
|
SQLITE_ENABLE_MEMORY_MANAGEMENT = 1 // <defines>:9:1:
|
|
SQLITE_ENABLE_OFFSET_SQL_FUNC = 1 // <defines>:10:1:
|
|
SQLITE_ENABLE_PREUPDATE_HOOK = 1 // <defines>:11:1:
|
|
SQLITE_ENABLE_RBU = 1 // <defines>:12:1:
|
|
SQLITE_ENABLE_RTREE = 1 // <defines>:13:1:
|
|
SQLITE_ENABLE_SESSION = 1 // <defines>:14:1:
|
|
SQLITE_ENABLE_SNAPSHOT = 1 // <defines>:15:1:
|
|
SQLITE_ENABLE_STAT4 = 1 // <defines>:16:1:
|
|
SQLITE_ENABLE_UNLOCK_NOTIFY = 1 // <defines>:17:1:
|
|
SQLITE_ERROR = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:446:1:
|
|
SQLITE_ERROR_MISSING_COLLSEQ = 257 // testdata/sqlite-amalgamation-3380500/sqlite3.h:495:1:
|
|
SQLITE_ERROR_RETRY = 513 // testdata/sqlite-amalgamation-3380500/sqlite3.h:496:1:
|
|
SQLITE_ERROR_SNAPSHOT = 769 // testdata/sqlite-amalgamation-3380500/sqlite3.h:497:1:
|
|
SQLITE_EXPERIMENTAL = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:107:1:
|
|
SQLITE_FAIL = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9793:1:
|
|
SQLITE_FCNTL_BEGIN_ATOMIC_WRITE = 31 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1216:1:
|
|
SQLITE_FCNTL_BUSYHANDLER = 15 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1201:1:
|
|
SQLITE_FCNTL_CHUNK_SIZE = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1192:1:
|
|
SQLITE_FCNTL_CKPT_DONE = 37 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1222:1:
|
|
SQLITE_FCNTL_CKPT_START = 39 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1224:1:
|
|
SQLITE_FCNTL_CKSM_FILE = 41 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1226:1:
|
|
SQLITE_FCNTL_COMMIT_ATOMIC_WRITE = 32 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1217:1:
|
|
SQLITE_FCNTL_COMMIT_PHASETWO = 22 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1207:1:
|
|
SQLITE_FCNTL_DATA_VERSION = 35 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1220:1:
|
|
SQLITE_FCNTL_EXTERNAL_READER = 40 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1225:1:
|
|
SQLITE_FCNTL_FILE_POINTER = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1193:1:
|
|
SQLITE_FCNTL_GET_LOCKPROXYFILE = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1188:1:
|
|
SQLITE_FCNTL_HAS_MOVED = 20 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1205:1:
|
|
SQLITE_FCNTL_JOURNAL_POINTER = 28 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1213:1:
|
|
SQLITE_FCNTL_LAST_ERRNO = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1190:1:
|
|
SQLITE_FCNTL_LOCKSTATE = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1187:1:
|
|
SQLITE_FCNTL_LOCK_TIMEOUT = 34 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1219:1:
|
|
SQLITE_FCNTL_MMAP_SIZE = 18 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1203:1:
|
|
SQLITE_FCNTL_OVERWRITE = 11 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1197:1:
|
|
SQLITE_FCNTL_PDB = 30 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1215:1:
|
|
SQLITE_FCNTL_PERSIST_WAL = 10 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1196:1:
|
|
SQLITE_FCNTL_POWERSAFE_OVERWRITE = 13 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1199:1:
|
|
SQLITE_FCNTL_PRAGMA = 14 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1200:1:
|
|
SQLITE_FCNTL_RBU = 26 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1211:1:
|
|
SQLITE_FCNTL_RESERVE_BYTES = 38 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1223:1:
|
|
SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE = 33 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1218:1:
|
|
SQLITE_FCNTL_SET_LOCKPROXYFILE = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1189:1:
|
|
SQLITE_FCNTL_SIZE_HINT = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1191:1:
|
|
SQLITE_FCNTL_SIZE_LIMIT = 36 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1221:1:
|
|
SQLITE_FCNTL_SYNC = 21 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1206:1:
|
|
SQLITE_FCNTL_SYNC_OMITTED = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1194:1:
|
|
SQLITE_FCNTL_TEMPFILENAME = 16 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1202:1:
|
|
SQLITE_FCNTL_TRACE = 19 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1204:1:
|
|
SQLITE_FCNTL_VFSNAME = 12 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1198:1:
|
|
SQLITE_FCNTL_VFS_POINTER = 27 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1212:1:
|
|
SQLITE_FCNTL_WAL_BLOCK = 24 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1209:1:
|
|
SQLITE_FCNTL_WIN32_AV_RETRY = 9 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1195:1:
|
|
SQLITE_FCNTL_WIN32_GET_HANDLE = 29 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1214:1:
|
|
SQLITE_FCNTL_WIN32_SET_HANDLE = 23 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1208:1:
|
|
SQLITE_FCNTL_ZIPVFS = 25 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1210:1:
|
|
SQLITE_FLOAT = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4873:1:
|
|
SQLITE_FORMAT = 24 // testdata/sqlite-amalgamation-3380500/sqlite3.h:469:1:
|
|
SQLITE_FULL = 13 // testdata/sqlite-amalgamation-3380500/sqlite3.h:458:1:
|
|
SQLITE_FUNCTION = 31 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3181:1:
|
|
SQLITE_GET_LOCKPROXYFILE = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1229:1:
|
|
SQLITE_IGNORE = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3129:1:
|
|
SQLITE_INDEX_CONSTRAINT_EQ = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7177:1:
|
|
SQLITE_INDEX_CONSTRAINT_FUNCTION = 150 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7193:1:
|
|
SQLITE_INDEX_CONSTRAINT_GE = 32 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7181:1:
|
|
SQLITE_INDEX_CONSTRAINT_GLOB = 66 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7184:1:
|
|
SQLITE_INDEX_CONSTRAINT_GT = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7178:1:
|
|
SQLITE_INDEX_CONSTRAINT_IS = 72 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7190:1:
|
|
SQLITE_INDEX_CONSTRAINT_ISNOT = 69 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7187:1:
|
|
SQLITE_INDEX_CONSTRAINT_ISNOTNULL = 70 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7188:1:
|
|
SQLITE_INDEX_CONSTRAINT_ISNULL = 71 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7189:1:
|
|
SQLITE_INDEX_CONSTRAINT_LE = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7179:1:
|
|
SQLITE_INDEX_CONSTRAINT_LIKE = 65 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7183:1:
|
|
SQLITE_INDEX_CONSTRAINT_LIMIT = 73 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7191:1:
|
|
SQLITE_INDEX_CONSTRAINT_LT = 16 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7180:1:
|
|
SQLITE_INDEX_CONSTRAINT_MATCH = 64 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7182:1:
|
|
SQLITE_INDEX_CONSTRAINT_NE = 68 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7186:1:
|
|
SQLITE_INDEX_CONSTRAINT_OFFSET = 74 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7192:1:
|
|
SQLITE_INDEX_CONSTRAINT_REGEXP = 67 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7185:1:
|
|
SQLITE_INDEX_SCAN_UNIQUE = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7137:1:
|
|
SQLITE_INNOCUOUS = 0x000200000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5410:1:
|
|
SQLITE_INSERT = 18 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3168:1:
|
|
SQLITE_INTEGER = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4872:1:
|
|
SQLITE_INTERNAL = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:447:1:
|
|
SQLITE_INTERRUPT = 9 // testdata/sqlite-amalgamation-3380500/sqlite3.h:454:1:
|
|
SQLITE_IOCAP_ATOMIC = 0x00000001 // testdata/sqlite-amalgamation-3380500/sqlite3.h:652:1:
|
|
SQLITE_IOCAP_ATOMIC16K = 0x00000040 // testdata/sqlite-amalgamation-3380500/sqlite3.h:658:1:
|
|
SQLITE_IOCAP_ATOMIC1K = 0x00000004 // testdata/sqlite-amalgamation-3380500/sqlite3.h:654:1:
|
|
SQLITE_IOCAP_ATOMIC2K = 0x00000008 // testdata/sqlite-amalgamation-3380500/sqlite3.h:655:1:
|
|
SQLITE_IOCAP_ATOMIC32K = 0x00000080 // testdata/sqlite-amalgamation-3380500/sqlite3.h:659:1:
|
|
SQLITE_IOCAP_ATOMIC4K = 0x00000010 // testdata/sqlite-amalgamation-3380500/sqlite3.h:656:1:
|
|
SQLITE_IOCAP_ATOMIC512 = 0x00000002 // testdata/sqlite-amalgamation-3380500/sqlite3.h:653:1:
|
|
SQLITE_IOCAP_ATOMIC64K = 0x00000100 // testdata/sqlite-amalgamation-3380500/sqlite3.h:660:1:
|
|
SQLITE_IOCAP_ATOMIC8K = 0x00000020 // testdata/sqlite-amalgamation-3380500/sqlite3.h:657:1:
|
|
SQLITE_IOCAP_BATCH_ATOMIC = 0x00004000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:666:1:
|
|
SQLITE_IOCAP_IMMUTABLE = 0x00002000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:665:1:
|
|
SQLITE_IOCAP_POWERSAFE_OVERWRITE = 0x00001000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:664:1:
|
|
SQLITE_IOCAP_SAFE_APPEND = 0x00000200 // testdata/sqlite-amalgamation-3380500/sqlite3.h:661:1:
|
|
SQLITE_IOCAP_SEQUENTIAL = 0x00000400 // testdata/sqlite-amalgamation-3380500/sqlite3.h:662:1:
|
|
SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN = 0x00000800 // testdata/sqlite-amalgamation-3380500/sqlite3.h:663:1:
|
|
SQLITE_IOERR = 10 // testdata/sqlite-amalgamation-3380500/sqlite3.h:455:1:
|
|
SQLITE_IOERR_ACCESS = 3338 // testdata/sqlite-amalgamation-3380500/sqlite3.h:510:1:
|
|
SQLITE_IOERR_AUTH = 7178 // testdata/sqlite-amalgamation-3380500/sqlite3.h:525:1:
|
|
SQLITE_IOERR_BEGIN_ATOMIC = 7434 // testdata/sqlite-amalgamation-3380500/sqlite3.h:526:1:
|
|
SQLITE_IOERR_BLOCKED = 2826 // testdata/sqlite-amalgamation-3380500/sqlite3.h:508:1:
|
|
SQLITE_IOERR_CHECKRESERVEDLOCK = 3594 // testdata/sqlite-amalgamation-3380500/sqlite3.h:511:1:
|
|
SQLITE_IOERR_CLOSE = 4106 // testdata/sqlite-amalgamation-3380500/sqlite3.h:513:1:
|
|
SQLITE_IOERR_COMMIT_ATOMIC = 7690 // testdata/sqlite-amalgamation-3380500/sqlite3.h:527:1:
|
|
SQLITE_IOERR_CONVPATH = 6666 // testdata/sqlite-amalgamation-3380500/sqlite3.h:523:1:
|
|
SQLITE_IOERR_CORRUPTFS = 8458 // testdata/sqlite-amalgamation-3380500/sqlite3.h:530:1:
|
|
SQLITE_IOERR_DATA = 8202 // testdata/sqlite-amalgamation-3380500/sqlite3.h:529:1:
|
|
SQLITE_IOERR_DELETE = 2570 // testdata/sqlite-amalgamation-3380500/sqlite3.h:507:1:
|
|
SQLITE_IOERR_DELETE_NOENT = 5898 // testdata/sqlite-amalgamation-3380500/sqlite3.h:520:1:
|
|
SQLITE_IOERR_DIR_CLOSE = 4362 // testdata/sqlite-amalgamation-3380500/sqlite3.h:514:1:
|
|
SQLITE_IOERR_DIR_FSYNC = 1290 // testdata/sqlite-amalgamation-3380500/sqlite3.h:502:1:
|
|
SQLITE_IOERR_FSTAT = 1802 // testdata/sqlite-amalgamation-3380500/sqlite3.h:504:1:
|
|
SQLITE_IOERR_FSYNC = 1034 // testdata/sqlite-amalgamation-3380500/sqlite3.h:501:1:
|
|
SQLITE_IOERR_GETTEMPPATH = 6410 // testdata/sqlite-amalgamation-3380500/sqlite3.h:522:1:
|
|
SQLITE_IOERR_LOCK = 3850 // testdata/sqlite-amalgamation-3380500/sqlite3.h:512:1:
|
|
SQLITE_IOERR_MMAP = 6154 // testdata/sqlite-amalgamation-3380500/sqlite3.h:521:1:
|
|
SQLITE_IOERR_NOMEM = 3082 // testdata/sqlite-amalgamation-3380500/sqlite3.h:509:1:
|
|
SQLITE_IOERR_RDLOCK = 2314 // testdata/sqlite-amalgamation-3380500/sqlite3.h:506:1:
|
|
SQLITE_IOERR_READ = 266 // testdata/sqlite-amalgamation-3380500/sqlite3.h:498:1:
|
|
SQLITE_IOERR_ROLLBACK_ATOMIC = 7946 // testdata/sqlite-amalgamation-3380500/sqlite3.h:528:1:
|
|
SQLITE_IOERR_SEEK = 5642 // testdata/sqlite-amalgamation-3380500/sqlite3.h:519:1:
|
|
SQLITE_IOERR_SHMLOCK = 5130 // testdata/sqlite-amalgamation-3380500/sqlite3.h:517:1:
|
|
SQLITE_IOERR_SHMMAP = 5386 // testdata/sqlite-amalgamation-3380500/sqlite3.h:518:1:
|
|
SQLITE_IOERR_SHMOPEN = 4618 // testdata/sqlite-amalgamation-3380500/sqlite3.h:515:1:
|
|
SQLITE_IOERR_SHMSIZE = 4874 // testdata/sqlite-amalgamation-3380500/sqlite3.h:516:1:
|
|
SQLITE_IOERR_SHORT_READ = 522 // testdata/sqlite-amalgamation-3380500/sqlite3.h:499:1:
|
|
SQLITE_IOERR_TRUNCATE = 1546 // testdata/sqlite-amalgamation-3380500/sqlite3.h:503:1:
|
|
SQLITE_IOERR_UNLOCK = 2058 // testdata/sqlite-amalgamation-3380500/sqlite3.h:505:1:
|
|
SQLITE_IOERR_VNODE = 6922 // testdata/sqlite-amalgamation-3380500/sqlite3.h:524:1:
|
|
SQLITE_IOERR_WRITE = 778 // testdata/sqlite-amalgamation-3380500/sqlite3.h:500:1:
|
|
SQLITE_LAST_ERRNO = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1231:1:
|
|
SQLITE_LIKE_DOESNT_MATCH_BLOBS = 1 // <defines>:18:1:
|
|
SQLITE_LIMIT_ATTACHED = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4008:1:
|
|
SQLITE_LIMIT_COLUMN = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4003:1:
|
|
SQLITE_LIMIT_COMPOUND_SELECT = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4005:1:
|
|
SQLITE_LIMIT_EXPR_DEPTH = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4004:1:
|
|
SQLITE_LIMIT_FUNCTION_ARG = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4007:1:
|
|
SQLITE_LIMIT_LENGTH = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4001:1:
|
|
SQLITE_LIMIT_LIKE_PATTERN_LENGTH = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4009:1:
|
|
SQLITE_LIMIT_SQL_LENGTH = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4002:1:
|
|
SQLITE_LIMIT_TRIGGER_DEPTH = 10 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4011:1:
|
|
SQLITE_LIMIT_VARIABLE_NUMBER = 9 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4010:1:
|
|
SQLITE_LIMIT_VDBE_OP = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4006:1:
|
|
SQLITE_LIMIT_WORKER_THREADS = 11 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4012:1:
|
|
SQLITE_LOCKED = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:451:1:
|
|
SQLITE_LOCKED_SHAREDCACHE = 262 // testdata/sqlite-amalgamation-3380500/sqlite3.h:531:1:
|
|
SQLITE_LOCKED_VTAB = 518 // testdata/sqlite-amalgamation-3380500/sqlite3.h:532:1:
|
|
SQLITE_LOCK_EXCLUSIVE = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:679:1:
|
|
SQLITE_LOCK_NONE = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:675:1:
|
|
SQLITE_LOCK_PENDING = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:678:1:
|
|
SQLITE_LOCK_RESERVED = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:677:1:
|
|
SQLITE_LOCK_SHARED = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:676:1:
|
|
SQLITE_MISMATCH = 20 // testdata/sqlite-amalgamation-3380500/sqlite3.h:465:1:
|
|
SQLITE_MISUSE = 21 // testdata/sqlite-amalgamation-3380500/sqlite3.h:466:1:
|
|
SQLITE_MUTEX_APPDEF = 1 // <defines>:19:1:
|
|
SQLITE_MUTEX_FAST = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7861:1:
|
|
SQLITE_MUTEX_NOOP = 1 // <defines>:20:1:
|
|
SQLITE_MUTEX_RECURSIVE = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7862:1:
|
|
SQLITE_MUTEX_STATIC_APP1 = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7871:1:
|
|
SQLITE_MUTEX_STATIC_APP2 = 9 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7872:1:
|
|
SQLITE_MUTEX_STATIC_APP3 = 10 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7873:1:
|
|
SQLITE_MUTEX_STATIC_LRU = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7868:1:
|
|
SQLITE_MUTEX_STATIC_LRU2 = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7869:1:
|
|
SQLITE_MUTEX_STATIC_MAIN = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7863:1:
|
|
SQLITE_MUTEX_STATIC_MASTER = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7879:1:
|
|
SQLITE_MUTEX_STATIC_MEM = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7864:1:
|
|
SQLITE_MUTEX_STATIC_MEM2 = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7865:1:
|
|
SQLITE_MUTEX_STATIC_OPEN = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7866:1:
|
|
SQLITE_MUTEX_STATIC_PMEM = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7870:1:
|
|
SQLITE_MUTEX_STATIC_PRNG = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7867:1:
|
|
SQLITE_MUTEX_STATIC_VFS1 = 11 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7874:1:
|
|
SQLITE_MUTEX_STATIC_VFS2 = 12 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7875:1:
|
|
SQLITE_MUTEX_STATIC_VFS3 = 13 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7876:1:
|
|
SQLITE_NOLFS = 22 // testdata/sqlite-amalgamation-3380500/sqlite3.h:467:1:
|
|
SQLITE_NOMEM = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:452:1:
|
|
SQLITE_NOTADB = 26 // testdata/sqlite-amalgamation-3380500/sqlite3.h:471:1:
|
|
SQLITE_NOTFOUND = 12 // testdata/sqlite-amalgamation-3380500/sqlite3.h:457:1:
|
|
SQLITE_NOTICE = 27 // testdata/sqlite-amalgamation-3380500/sqlite3.h:472:1:
|
|
SQLITE_NOTICE_RECOVER_ROLLBACK = 539 // testdata/sqlite-amalgamation-3380500/sqlite3.h:565:1:
|
|
SQLITE_NOTICE_RECOVER_WAL = 283 // testdata/sqlite-amalgamation-3380500/sqlite3.h:564:1:
|
|
SQLITE_NULL = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4875:1:
|
|
SQLITE_OK = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:444:1:
|
|
SQLITE_OK_LOAD_PERMANENTLY = 256 // testdata/sqlite-amalgamation-3380500/sqlite3.h:568:1:
|
|
SQLITE_OK_SYMLINK = 512 // testdata/sqlite-amalgamation-3380500/sqlite3.h:569:1:
|
|
SQLITE_OPEN_AUTOPROXY = 0x00000020 // testdata/sqlite-amalgamation-3380500/sqlite3.h:596:1:
|
|
SQLITE_OPEN_CREATE = 0x00000004 // testdata/sqlite-amalgamation-3380500/sqlite3.h:593:1:
|
|
SQLITE_OPEN_DELETEONCLOSE = 0x00000008 // testdata/sqlite-amalgamation-3380500/sqlite3.h:594:1:
|
|
SQLITE_OPEN_EXCLUSIVE = 0x00000010 // testdata/sqlite-amalgamation-3380500/sqlite3.h:595:1:
|
|
SQLITE_OPEN_EXRESCODE = 0x02000000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:612:1:
|
|
SQLITE_OPEN_FULLMUTEX = 0x00010000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:607:1:
|
|
SQLITE_OPEN_MAIN_DB = 0x00000100 // testdata/sqlite-amalgamation-3380500/sqlite3.h:599:1:
|
|
SQLITE_OPEN_MAIN_JOURNAL = 0x00000800 // testdata/sqlite-amalgamation-3380500/sqlite3.h:602:1:
|
|
SQLITE_OPEN_MASTER_JOURNAL = 0x00004000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:616:1:
|
|
SQLITE_OPEN_MEMORY = 0x00000080 // testdata/sqlite-amalgamation-3380500/sqlite3.h:598:1:
|
|
SQLITE_OPEN_NOFOLLOW = 0x01000000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:611:1:
|
|
SQLITE_OPEN_NOMUTEX = 0x00008000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:606:1:
|
|
SQLITE_OPEN_PRIVATECACHE = 0x00040000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:609:1:
|
|
SQLITE_OPEN_READONLY = 0x00000001 // testdata/sqlite-amalgamation-3380500/sqlite3.h:591:1:
|
|
SQLITE_OPEN_READWRITE = 0x00000002 // testdata/sqlite-amalgamation-3380500/sqlite3.h:592:1:
|
|
SQLITE_OPEN_SHAREDCACHE = 0x00020000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:608:1:
|
|
SQLITE_OPEN_SUBJOURNAL = 0x00002000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:604:1:
|
|
SQLITE_OPEN_SUPER_JOURNAL = 0x00004000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:605:1:
|
|
SQLITE_OPEN_TEMP_DB = 0x00000200 // testdata/sqlite-amalgamation-3380500/sqlite3.h:600:1:
|
|
SQLITE_OPEN_TEMP_JOURNAL = 0x00001000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:603:1:
|
|
SQLITE_OPEN_TRANSIENT_DB = 0x00000400 // testdata/sqlite-amalgamation-3380500/sqlite3.h:601:1:
|
|
SQLITE_OPEN_URI = 0x00000040 // testdata/sqlite-amalgamation-3380500/sqlite3.h:597:1:
|
|
SQLITE_OPEN_WAL = 0x00080000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:610:1:
|
|
SQLITE_OS_UNIX = 1 // <defines>:23:1:
|
|
SQLITE_PERM = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:448:1:
|
|
SQLITE_PRAGMA = 19 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3169:1:
|
|
SQLITE_PREPARE_NORMALIZE = 0x02 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4050:1:
|
|
SQLITE_PREPARE_NO_VTAB = 0x04 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4051:1:
|
|
SQLITE_PREPARE_PERSISTENT = 0x01 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4049:1:
|
|
SQLITE_PROTOCOL = 15 // testdata/sqlite-amalgamation-3380500/sqlite3.h:460:1:
|
|
SQLITE_RANGE = 25 // testdata/sqlite-amalgamation-3380500/sqlite3.h:470:1:
|
|
SQLITE_READ = 20 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3170:1:
|
|
SQLITE_READONLY = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:453:1:
|
|
SQLITE_READONLY_CANTINIT = 1288 // testdata/sqlite-amalgamation-3380500/sqlite3.h:549:1:
|
|
SQLITE_READONLY_CANTLOCK = 520 // testdata/sqlite-amalgamation-3380500/sqlite3.h:546:1:
|
|
SQLITE_READONLY_DBMOVED = 1032 // testdata/sqlite-amalgamation-3380500/sqlite3.h:548:1:
|
|
SQLITE_READONLY_DIRECTORY = 1544 // testdata/sqlite-amalgamation-3380500/sqlite3.h:550:1:
|
|
SQLITE_READONLY_RECOVERY = 264 // testdata/sqlite-amalgamation-3380500/sqlite3.h:545:1:
|
|
SQLITE_READONLY_ROLLBACK = 776 // testdata/sqlite-amalgamation-3380500/sqlite3.h:547:1:
|
|
SQLITE_RECURSIVE = 33 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3184:1:
|
|
SQLITE_REINDEX = 27 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3177:1:
|
|
SQLITE_REPLACE = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9795:1:
|
|
SQLITE_ROLLBACK = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9791:1:
|
|
SQLITE_ROW = 100 // testdata/sqlite-amalgamation-3380500/sqlite3.h:474:1:
|
|
SQLITE_SAVEPOINT = 32 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3182:1:
|
|
SQLITE_SCANSTAT_EST = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9846:1:
|
|
SQLITE_SCANSTAT_EXPLAIN = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9848:1:
|
|
SQLITE_SCANSTAT_NAME = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9847:1:
|
|
SQLITE_SCANSTAT_NLOOP = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9844:1:
|
|
SQLITE_SCANSTAT_NVISIT = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9845:1:
|
|
SQLITE_SCANSTAT_SELECTID = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9849:1:
|
|
SQLITE_SCHEMA = 17 // testdata/sqlite-amalgamation-3380500/sqlite3.h:462:1:
|
|
SQLITE_SELECT = 21 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3171:1:
|
|
SQLITE_SERIALIZE_NOCOPY = 0x001 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10306:1:
|
|
SQLITE_SESSION_CONFIG_STRMSIZE = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:12218:1:
|
|
SQLITE_SESSION_OBJCONFIG_SIZE = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10619:1:
|
|
SQLITE_SET_LOCKPROXYFILE = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1230:1:
|
|
SQLITE_SHM_EXCLUSIVE = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1515:1:
|
|
SQLITE_SHM_LOCK = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1513:1:
|
|
SQLITE_SHM_NLOCK = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1525:1:
|
|
SQLITE_SHM_SHARED = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1514:1:
|
|
SQLITE_SHM_UNLOCK = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:1512:1:
|
|
SQLITE_SOUNDEX = 1 // <defines>:21:1:
|
|
SQLITE_SOURCE_ID = "2022-05-06 15:25:27 78d9c993d404cdfaa7fdd2973fa1052e3da9f66215cff9c5540ebe55c407d9fe" // testdata/sqlite-amalgamation-3380500/sqlite3.h:151:1:
|
|
SQLITE_STATUS_MALLOC_COUNT = 9 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8295:1:
|
|
SQLITE_STATUS_MALLOC_SIZE = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8291:1:
|
|
SQLITE_STATUS_MEMORY_USED = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8286:1:
|
|
SQLITE_STATUS_PAGECACHE_OVERFLOW = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8288:1:
|
|
SQLITE_STATUS_PAGECACHE_SIZE = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8293:1:
|
|
SQLITE_STATUS_PAGECACHE_USED = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8287:1:
|
|
SQLITE_STATUS_PARSER_STACK = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8292:1:
|
|
SQLITE_STATUS_SCRATCH_OVERFLOW = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8290:1:
|
|
SQLITE_STATUS_SCRATCH_SIZE = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8294:1:
|
|
SQLITE_STATUS_SCRATCH_USED = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8289:1:
|
|
SQLITE_STDCALL = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:84:1:
|
|
SQLITE_STMTSTATUS_AUTOINDEX = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8542:1:
|
|
SQLITE_STMTSTATUS_FILTER_HIT = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8547:1:
|
|
SQLITE_STMTSTATUS_FILTER_MISS = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8546:1:
|
|
SQLITE_STMTSTATUS_FULLSCAN_STEP = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8540:1:
|
|
SQLITE_STMTSTATUS_MEMUSED = 99 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8548:1:
|
|
SQLITE_STMTSTATUS_REPREPARE = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8544:1:
|
|
SQLITE_STMTSTATUS_RUN = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8545:1:
|
|
SQLITE_STMTSTATUS_SORT = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8541:1:
|
|
SQLITE_STMTSTATUS_VM_STEP = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:8543:1:
|
|
SQLITE_SUBTYPE = 0x000100000 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5409:1:
|
|
SQLITE_SYNC_DATAONLY = 0x00010 // testdata/sqlite-amalgamation-3380500/sqlite3.h:709:1:
|
|
SQLITE_SYNC_FULL = 0x00003 // testdata/sqlite-amalgamation-3380500/sqlite3.h:708:1:
|
|
SQLITE_SYNC_NORMAL = 0x00002 // testdata/sqlite-amalgamation-3380500/sqlite3.h:707:1:
|
|
SQLITE_SYSAPI = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:90:1:
|
|
SQLITE_TESTCTRL_ALWAYS = 13 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7976:1:
|
|
SQLITE_TESTCTRL_ASSERT = 12 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7975:1:
|
|
SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS = 10 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7973:1:
|
|
SQLITE_TESTCTRL_BITVEC_TEST = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7971:1:
|
|
SQLITE_TESTCTRL_BYTEORDER = 22 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7987:1:
|
|
SQLITE_TESTCTRL_EXPLAIN_STMT = 19 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7983:1:
|
|
SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS = 29 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7994:1:
|
|
SQLITE_TESTCTRL_FAULT_INSTALL = 9 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7972:1:
|
|
SQLITE_TESTCTRL_FIRST = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7967:1:
|
|
SQLITE_TESTCTRL_IMPOSTER = 25 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7990:1:
|
|
SQLITE_TESTCTRL_INTERNAL_FUNCTIONS = 17 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7981:1:
|
|
SQLITE_TESTCTRL_ISINIT = 23 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7988:1:
|
|
SQLITE_TESTCTRL_ISKEYWORD = 16 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7979:1:
|
|
SQLITE_TESTCTRL_LAST = 33 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7999:1:
|
|
SQLITE_TESTCTRL_LOCALTIME_FAULT = 18 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7982:1:
|
|
SQLITE_TESTCTRL_LOGEST = 33 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7998:1:
|
|
SQLITE_TESTCTRL_NEVER_CORRUPT = 20 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7985:1:
|
|
SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD = 19 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7984:1:
|
|
SQLITE_TESTCTRL_OPTIMIZATIONS = 15 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7978:1:
|
|
SQLITE_TESTCTRL_PARSER_COVERAGE = 26 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7991:1:
|
|
SQLITE_TESTCTRL_PENDING_BYTE = 11 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7974:1:
|
|
SQLITE_TESTCTRL_PRNG_RESET = 7 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7970:1:
|
|
SQLITE_TESTCTRL_PRNG_RESTORE = 6 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7969:1:
|
|
SQLITE_TESTCTRL_PRNG_SAVE = 5 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7968:1:
|
|
SQLITE_TESTCTRL_PRNG_SEED = 28 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7993:1:
|
|
SQLITE_TESTCTRL_RESERVE = 14 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7977:1:
|
|
SQLITE_TESTCTRL_RESULT_INTREAL = 27 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7992:1:
|
|
SQLITE_TESTCTRL_SCRATCHMALLOC = 17 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7980:1:
|
|
SQLITE_TESTCTRL_SEEK_COUNT = 30 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7995:1:
|
|
SQLITE_TESTCTRL_SORTER_MMAP = 24 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7989:1:
|
|
SQLITE_TESTCTRL_TRACEFLAGS = 31 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7996:1:
|
|
SQLITE_TESTCTRL_TUNE = 32 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7997:1:
|
|
SQLITE_TESTCTRL_VDBE_COVERAGE = 21 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7986:1:
|
|
SQLITE_TEXT = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:4879:1:
|
|
SQLITE_THREADSAFE = 1 // <defines>:22:1:
|
|
SQLITE_TOOBIG = 18 // testdata/sqlite-amalgamation-3380500/sqlite3.h:463:1:
|
|
SQLITE_TRACE_CLOSE = 0x08 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3278:1:
|
|
SQLITE_TRACE_PROFILE = 0x02 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3276:1:
|
|
SQLITE_TRACE_ROW = 0x04 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3277:1:
|
|
SQLITE_TRACE_STMT = 0x01 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3275:1:
|
|
SQLITE_TRANSACTION = 22 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3172:1:
|
|
SQLITE_TXN_NONE = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:6367:1:
|
|
SQLITE_TXN_READ = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:6368:1:
|
|
SQLITE_TXN_WRITE = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:6369:1:
|
|
SQLITE_UPDATE = 23 // testdata/sqlite-amalgamation-3380500/sqlite3.h:3173:1:
|
|
SQLITE_UTF16 = 4 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5338:1:
|
|
SQLITE_UTF16BE = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5337:1:
|
|
SQLITE_UTF16LE = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5336:1:
|
|
SQLITE_UTF16_ALIGNED = 8 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5340:1:
|
|
SQLITE_UTF8 = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:5335:1:
|
|
SQLITE_VERSION = "3.38.5" // testdata/sqlite-amalgamation-3380500/sqlite3.h:149:1:
|
|
SQLITE_VERSION_NUMBER = 3038005 // testdata/sqlite-amalgamation-3380500/sqlite3.h:150:1:
|
|
SQLITE_VTAB_CONSTRAINT_SUPPORT = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9472:1:
|
|
SQLITE_VTAB_DIRECTONLY = 3 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9474:1:
|
|
SQLITE_VTAB_INNOCUOUS = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:9473:1:
|
|
SQLITE_WARNING = 28 // testdata/sqlite-amalgamation-3380500/sqlite3.h:473:1:
|
|
SQLITE_WARNING_AUTOINDEX = 284 // testdata/sqlite-amalgamation-3380500/sqlite3.h:566:1:
|
|
SQLITE_WIN32_DATA_DIRECTORY_TYPE = 1 // testdata/sqlite-amalgamation-3380500/sqlite3.h:6238:1:
|
|
SQLITE_WIN32_TEMP_DIRECTORY_TYPE = 2 // testdata/sqlite-amalgamation-3380500/sqlite3.h:6239:1:
|
|
STDERR_FILENO = 2 // /usr/include/unistd.h:44:1:
|
|
STDIN_FILENO = 0 // /usr/include/unistd.h:42:1:
|
|
STDOUT_FILENO = 1 // /usr/include/unistd.h:43:1:
|
|
TMP_MAX = 0x7fffffff // /usr/include/stdio.h:185:1:
|
|
W_OK = 0x02 // /usr/include/sys/unistd.h:51:1:
|
|
X_OK = 0x01 // /usr/include/sys/unistd.h:50:1:
|
|
X_ASSERT_H_ = 0 // /usr/include/assert.h:63:1:
|
|
X_B = 0x80 // /usr/include/ctype.h:52:1:
|
|
X_BIG_ENDIAN = 4321 // /usr/include/sys/_endian.h:43:1:
|
|
X_BYTE_ORDER = 1234 // /usr/include/machine/endian.h:58:1:
|
|
X_C = 0x20 // /usr/include/ctype.h:50:1:
|
|
X_CLOCKID_T_DEFINED_ = 0 // /usr/include/sys/types.h:163:1:
|
|
X_CLOCK_T_DEFINED_ = 0 // /usr/include/sys/types.h:158:1:
|
|
X_CS_PATH = 1 // /usr/include/unistd.h:286:1:
|
|
X_CS_POSIX_V6_ILP32_OFF32_CFLAGS = 2 // /usr/include/unistd.h:287:1:
|
|
X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS = 3 // /usr/include/unistd.h:288:1:
|
|
X_CS_POSIX_V6_ILP32_OFF32_LIBS = 4 // /usr/include/unistd.h:289:1:
|
|
X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS = 5 // /usr/include/unistd.h:290:1:
|
|
X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS = 6 // /usr/include/unistd.h:291:1:
|
|
X_CS_POSIX_V6_ILP32_OFFBIG_LIBS = 7 // /usr/include/unistd.h:292:1:
|
|
X_CS_POSIX_V6_LP64_OFF64_CFLAGS = 8 // /usr/include/unistd.h:293:1:
|
|
X_CS_POSIX_V6_LP64_OFF64_LDFLAGS = 9 // /usr/include/unistd.h:294:1:
|
|
X_CS_POSIX_V6_LP64_OFF64_LIBS = 10 // /usr/include/unistd.h:295:1:
|
|
X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS = 11 // /usr/include/unistd.h:296:1:
|
|
X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS = 12 // /usr/include/unistd.h:297:1:
|
|
X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS = 13 // /usr/include/unistd.h:298:1:
|
|
X_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS = 14 // /usr/include/unistd.h:299:1:
|
|
X_CS_POSIX_V7_ILP32_OFF32_CFLAGS = 16 // /usr/include/unistd.h:301:1:
|
|
X_CS_POSIX_V7_ILP32_OFF32_LDFLAGS = 17 // /usr/include/unistd.h:302:1:
|
|
X_CS_POSIX_V7_ILP32_OFF32_LIBS = 18 // /usr/include/unistd.h:303:1:
|
|
X_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS = 19 // /usr/include/unistd.h:304:1:
|
|
X_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS = 20 // /usr/include/unistd.h:305:1:
|
|
X_CS_POSIX_V7_ILP32_OFFBIG_LIBS = 21 // /usr/include/unistd.h:306:1:
|
|
X_CS_POSIX_V7_LP64_OFF64_CFLAGS = 22 // /usr/include/unistd.h:307:1:
|
|
X_CS_POSIX_V7_LP64_OFF64_LDFLAGS = 23 // /usr/include/unistd.h:308:1:
|
|
X_CS_POSIX_V7_LP64_OFF64_LIBS = 24 // /usr/include/unistd.h:309:1:
|
|
X_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS = 25 // /usr/include/unistd.h:310:1:
|
|
X_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS = 26 // /usr/include/unistd.h:311:1:
|
|
X_CS_POSIX_V7_LPBIG_OFFBIG_LIBS = 27 // /usr/include/unistd.h:312:1:
|
|
X_CS_POSIX_V7_THREADS_CFLAGS = 28 // /usr/include/unistd.h:313:1:
|
|
X_CS_POSIX_V7_THREADS_LDFLAGS = 29 // /usr/include/unistd.h:314:1:
|
|
X_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS = 30 // /usr/include/unistd.h:315:1:
|
|
X_CS_V6_ENV = 15 // /usr/include/unistd.h:300:1:
|
|
X_CS_V7_ENV = 31 // /usr/include/unistd.h:316:1:
|
|
X_CTYPE_H_ = 0 // /usr/include/ctype.h:41:1:
|
|
X_ERRNO_H_ = 0 // /usr/include/errno.h:40:1:
|
|
X_FILE_OFFSET_BITS = 64 // <builtin>:25:1:
|
|
X_FSTDIO = 0 // /usr/include/stdio.h:59:1:
|
|
X_FTS5_H = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:12252:1:
|
|
X_GETOPT_DEFINED_ = 0 // /usr/include/unistd.h:385:1:
|
|
X_INT16_T_DEFINED_ = 0 // /usr/include/sys/types.h:84:1:
|
|
X_INT32_T_DEFINED_ = 0 // /usr/include/sys/types.h:94:1:
|
|
X_INT64_T_DEFINED_ = 0 // /usr/include/sys/types.h:104:1:
|
|
X_INT8_T_DEFINED_ = 0 // /usr/include/sys/types.h:74:1:
|
|
X_INTPTR_T_DEFINED_ = 0 // /usr/include/unistd.h:319:1:
|
|
X_IOFBF = 0 // /usr/include/stdio.h:164:1:
|
|
X_IOLBF = 1 // /usr/include/stdio.h:165:1:
|
|
X_IONBF = 2 // /usr/include/stdio.h:166:1:
|
|
X_L = 0x02 // /usr/include/ctype.h:46:1:
|
|
X_LITTLE_ENDIAN = 1234 // /usr/include/sys/_endian.h:42:1:
|
|
X_LOCALE_T_DEFINED_ = 0 // /usr/include/strings.h:52:1:
|
|
X_LP64 = 1 // <predefined>:1:1:
|
|
X_MACHINE_CDEFS_H_ = 0 // /usr/include/machine/cdefs.h:9:1:
|
|
X_MACHINE_ENDIAN_H_ = 0 // /usr/include/machine/endian.h:28:1:
|
|
X_MACHINE__TYPES_H_ = 0 // /usr/include/machine/_types.h:36:1:
|
|
X_MAX_PAGE_SHIFT = 12 // /usr/include/machine/_types.h:52:1:
|
|
X_N = 0x04 // /usr/include/ctype.h:47:1:
|
|
X_OFF_T_DEFINED_ = 0 // /usr/include/sys/types.h:193:1:
|
|
X_P = 0x10 // /usr/include/ctype.h:49:1:
|
|
X_PC_2_SYMLINKS = 10 // /usr/include/sys/unistd.h:93:1:
|
|
X_PC_ALLOC_SIZE_MIN = 11 // /usr/include/sys/unistd.h:94:1:
|
|
X_PC_ASYNC_IO = 12 // /usr/include/sys/unistd.h:95:1:
|
|
X_PC_CHOWN_RESTRICTED = 7 // /usr/include/sys/unistd.h:90:1:
|
|
X_PC_FILESIZEBITS = 13 // /usr/include/sys/unistd.h:96:1:
|
|
X_PC_LINK_MAX = 1 // /usr/include/sys/unistd.h:84:1:
|
|
X_PC_MAX_CANON = 2 // /usr/include/sys/unistd.h:85:1:
|
|
X_PC_MAX_INPUT = 3 // /usr/include/sys/unistd.h:86:1:
|
|
X_PC_NAME_MAX = 4 // /usr/include/sys/unistd.h:87:1:
|
|
X_PC_NO_TRUNC = 8 // /usr/include/sys/unistd.h:91:1:
|
|
X_PC_PATH_MAX = 5 // /usr/include/sys/unistd.h:88:1:
|
|
X_PC_PIPE_BUF = 6 // /usr/include/sys/unistd.h:89:1:
|
|
X_PC_PRIO_IO = 14 // /usr/include/sys/unistd.h:97:1:
|
|
X_PC_REC_INCR_XFER_SIZE = 15 // /usr/include/sys/unistd.h:98:1:
|
|
X_PC_REC_MAX_XFER_SIZE = 16 // /usr/include/sys/unistd.h:99:1:
|
|
X_PC_REC_MIN_XFER_SIZE = 17 // /usr/include/sys/unistd.h:100:1:
|
|
X_PC_REC_XFER_ALIGN = 18 // /usr/include/sys/unistd.h:101:1:
|
|
X_PC_SYMLINK_MAX = 19 // /usr/include/sys/unistd.h:102:1:
|
|
X_PC_SYNC_IO = 20 // /usr/include/sys/unistd.h:103:1:
|
|
X_PC_TIMESTAMP_RESOLUTION = 21 // /usr/include/sys/unistd.h:104:1:
|
|
X_PC_VDISABLE = 9 // /usr/include/sys/unistd.h:92:1:
|
|
X_PDP_ENDIAN = 3412 // /usr/include/sys/_endian.h:44:1:
|
|
X_PID_T_DEFINED_ = 0 // /usr/include/sys/types.h:168:1:
|
|
X_POSIX2_CHAR_TERM = 1 // /usr/include/unistd.h:116:1:
|
|
X_POSIX2_C_BIND = 200112 // /usr/include/unistd.h:114:1:
|
|
X_POSIX2_C_DEV = -1 // /usr/include/unistd.h:115:1:
|
|
X_POSIX2_FORT_DEV = -1 // /usr/include/unistd.h:117:1:
|
|
X_POSIX2_FORT_RUN = -1 // /usr/include/unistd.h:118:1:
|
|
X_POSIX2_LOCALEDEF = -1 // /usr/include/unistd.h:119:1:
|
|
X_POSIX2_PBS = -1 // /usr/include/unistd.h:120:1:
|
|
X_POSIX2_PBS_ACCOUNTING = -1 // /usr/include/unistd.h:121:1:
|
|
X_POSIX2_PBS_CHECKPOINT = -1 // /usr/include/unistd.h:122:1:
|
|
X_POSIX2_PBS_LOCATE = -1 // /usr/include/unistd.h:123:1:
|
|
X_POSIX2_PBS_MESSAGE = -1 // /usr/include/unistd.h:124:1:
|
|
X_POSIX2_PBS_TRACK = -1 // /usr/include/unistd.h:125:1:
|
|
X_POSIX2_SW_DEV = 200112 // /usr/include/unistd.h:126:1:
|
|
X_POSIX2_UPE = 200112 // /usr/include/unistd.h:127:1:
|
|
X_POSIX2_VERSION = 200809 // /usr/include/unistd.h:148:1:
|
|
X_POSIX_ADVISORY_INFO = -1 // /usr/include/unistd.h:65:1:
|
|
X_POSIX_ASYNCHRONOUS_IO = -1 // /usr/include/unistd.h:66:1:
|
|
X_POSIX_ASYNC_IO = -1 // /usr/include/sys/unistd.h:41:1:
|
|
X_POSIX_BARRIERS = 200112 // /usr/include/unistd.h:67:1:
|
|
X_POSIX_CHOWN_RESTRICTED = 1 // /usr/include/unistd.h:68:1:
|
|
X_POSIX_CLOCK_SELECTION = -1 // /usr/include/unistd.h:69:1:
|
|
X_POSIX_CPUTIME = 200809 // /usr/include/unistd.h:70:1:
|
|
X_POSIX_FSYNC = 200112 // /usr/include/unistd.h:71:1:
|
|
X_POSIX_IPV6 = 0 // /usr/include/unistd.h:72:1:
|
|
X_POSIX_JOB_CONTROL = 1 // /usr/include/unistd.h:73:1:
|
|
X_POSIX_MAPPED_FILES = 200112 // /usr/include/unistd.h:74:1:
|
|
X_POSIX_MEMLOCK = 200112 // /usr/include/unistd.h:75:1:
|
|
X_POSIX_MEMLOCK_RANGE = 200112 // /usr/include/unistd.h:76:1:
|
|
X_POSIX_MEMORY_PROTECTION = 200112 // /usr/include/unistd.h:77:1:
|
|
X_POSIX_MESSAGE_PASSING = -1 // /usr/include/unistd.h:78:1:
|
|
X_POSIX_MONOTONIC_CLOCK = 200112 // /usr/include/unistd.h:79:1:
|
|
X_POSIX_NO_TRUNC = 1 // /usr/include/unistd.h:80:1:
|
|
X_POSIX_PRIORITIZED_IO = -1 // /usr/include/unistd.h:81:1:
|
|
X_POSIX_PRIORITY_SCHEDULING = -1 // /usr/include/unistd.h:82:1:
|
|
X_POSIX_PRIO_IO = -1 // /usr/include/sys/unistd.h:42:1:
|
|
X_POSIX_RAW_SOCKETS = 200112 // /usr/include/unistd.h:83:1:
|
|
X_POSIX_READER_WRITER_LOCKS = 200112 // /usr/include/unistd.h:84:1:
|
|
X_POSIX_REALTIME_SIGNALS = -1 // /usr/include/unistd.h:85:1:
|
|
X_POSIX_REGEXP = 1 // /usr/include/unistd.h:86:1:
|
|
X_POSIX_SAVED_IDS = 1 // /usr/include/unistd.h:87:1:
|
|
X_POSIX_SEMAPHORES = 200112 // /usr/include/unistd.h:88:1:
|
|
X_POSIX_SHARED_MEMORY_OBJECTS = 200809 // /usr/include/unistd.h:89:1:
|
|
X_POSIX_SHELL = 1 // /usr/include/unistd.h:90:1:
|
|
X_POSIX_SPAWN = 200112 // /usr/include/unistd.h:91:1:
|
|
X_POSIX_SPIN_LOCKS = 200112 // /usr/include/unistd.h:92:1:
|
|
X_POSIX_SPORADIC_SERVER = -1 // /usr/include/unistd.h:93:1:
|
|
X_POSIX_SYNCHRONIZED_IO = -1 // /usr/include/unistd.h:94:1:
|
|
X_POSIX_SYNC_IO = -1 // /usr/include/sys/unistd.h:43:1:
|
|
X_POSIX_THREADS = 200112 // /usr/include/unistd.h:106:1:
|
|
X_POSIX_THREAD_ATTR_STACKADDR = 200112 // /usr/include/unistd.h:95:1:
|
|
X_POSIX_THREAD_ATTR_STACKSIZE = 200112 // /usr/include/unistd.h:96:1:
|
|
X_POSIX_THREAD_CPUTIME = 200809 // /usr/include/unistd.h:97:1:
|
|
X_POSIX_THREAD_PRIORITY_SCHEDULING = -1 // /usr/include/unistd.h:100:1:
|
|
X_POSIX_THREAD_PRIO_INHERIT = -1 // /usr/include/unistd.h:98:1:
|
|
X_POSIX_THREAD_PRIO_PROTECT = -1 // /usr/include/unistd.h:99:1:
|
|
X_POSIX_THREAD_PROCESS_SHARED = -1 // /usr/include/unistd.h:101:1:
|
|
X_POSIX_THREAD_ROBUST_PRIO_INHERIT = -1 // /usr/include/unistd.h:102:1:
|
|
X_POSIX_THREAD_ROBUST_PRIO_PROTECT = -1 // /usr/include/unistd.h:103:1:
|
|
X_POSIX_THREAD_SAFE_FUNCTIONS = 200112 // /usr/include/unistd.h:104:1:
|
|
X_POSIX_THREAD_SPORADIC_SERVER = -1 // /usr/include/unistd.h:105:1:
|
|
X_POSIX_TIMEOUTS = 200112 // /usr/include/unistd.h:107:1:
|
|
X_POSIX_TIMERS = -1 // /usr/include/unistd.h:108:1:
|
|
X_POSIX_TRACE = -1 // /usr/include/unistd.h:109:1:
|
|
X_POSIX_TRACE_EVENT_FILTER = -1 // /usr/include/unistd.h:110:1:
|
|
X_POSIX_TRACE_INHERIT = -1 // /usr/include/unistd.h:111:1:
|
|
X_POSIX_TRACE_LOG = -1 // /usr/include/unistd.h:112:1:
|
|
X_POSIX_TYPED_MEMORY_OBJECTS = -1 // /usr/include/unistd.h:113:1:
|
|
X_POSIX_V6_ILP32_OFF32 = -1 // /usr/include/unistd.h:128:1:
|
|
X_POSIX_V6_ILP32_OFFBIG = 0 // /usr/include/unistd.h:129:1:
|
|
X_POSIX_V6_LP64_OFF64 = 0 // /usr/include/unistd.h:130:1:
|
|
X_POSIX_V6_LPBIG_OFFBIG = 0 // /usr/include/unistd.h:131:1:
|
|
X_POSIX_V7_ILP32_OFF32 = -1 // /usr/include/unistd.h:132:1:
|
|
X_POSIX_V7_ILP32_OFFBIG = 0 // /usr/include/unistd.h:133:1:
|
|
X_POSIX_V7_LP64_OFF64 = 0 // /usr/include/unistd.h:134:1:
|
|
X_POSIX_V7_LPBIG_OFFBIG = 0 // /usr/include/unistd.h:135:1:
|
|
X_POSIX_VDISABLE = 255 // /usr/include/sys/unistd.h:40:1:
|
|
X_POSIX_VERSION = 200809 // /usr/include/sys/unistd.h:46:1:
|
|
X_QUAD_HIGHWORD = 1 // /usr/include/sys/_endian.h:95:1:
|
|
X_QUAD_LOWWORD = 0 // /usr/include/sys/_endian.h:96:1:
|
|
X_RET_PROTECTOR = 1 // <predefined>:2:1:
|
|
X_S = 0x08 // /usr/include/ctype.h:48:1:
|
|
X_SC_2_CHAR_TERM = 20 // /usr/include/unistd.h:172:1:
|
|
X_SC_2_C_BIND = 18 // /usr/include/unistd.h:170:1:
|
|
X_SC_2_C_DEV = 19 // /usr/include/unistd.h:171:1:
|
|
X_SC_2_FORT_DEV = 21 // /usr/include/unistd.h:173:1:
|
|
X_SC_2_FORT_RUN = 22 // /usr/include/unistd.h:174:1:
|
|
X_SC_2_LOCALEDEF = 23 // /usr/include/unistd.h:175:1:
|
|
X_SC_2_PBS = 35 // /usr/include/unistd.h:188:1:
|
|
X_SC_2_PBS_ACCOUNTING = 36 // /usr/include/unistd.h:189:1:
|
|
X_SC_2_PBS_CHECKPOINT = 37 // /usr/include/unistd.h:190:1:
|
|
X_SC_2_PBS_LOCATE = 38 // /usr/include/unistd.h:191:1:
|
|
X_SC_2_PBS_MESSAGE = 39 // /usr/include/unistd.h:192:1:
|
|
X_SC_2_PBS_TRACK = 40 // /usr/include/unistd.h:193:1:
|
|
X_SC_2_SW_DEV = 24 // /usr/include/unistd.h:176:1:
|
|
X_SC_2_UPE = 25 // /usr/include/unistd.h:177:1:
|
|
X_SC_2_VERSION = 17 // /usr/include/unistd.h:169:1:
|
|
X_SC_ADVISORY_INFO = 41 // /usr/include/unistd.h:194:1:
|
|
X_SC_AIO_LISTIO_MAX = 42 // /usr/include/unistd.h:195:1:
|
|
X_SC_AIO_MAX = 43 // /usr/include/unistd.h:196:1:
|
|
X_SC_AIO_PRIO_DELTA_MAX = 44 // /usr/include/unistd.h:197:1:
|
|
X_SC_ARG_MAX = 1 // /usr/include/unistd.h:153:1:
|
|
X_SC_ASYNCHRONOUS_IO = 45 // /usr/include/unistd.h:198:1:
|
|
X_SC_ATEXIT_MAX = 46 // /usr/include/unistd.h:199:1:
|
|
X_SC_AVPHYS_PAGES = 501 // /usr/include/unistd.h:281:1:
|
|
X_SC_BARRIERS = 47 // /usr/include/unistd.h:200:1:
|
|
X_SC_BC_BASE_MAX = 9 // /usr/include/unistd.h:161:1:
|
|
X_SC_BC_DIM_MAX = 10 // /usr/include/unistd.h:162:1:
|
|
X_SC_BC_SCALE_MAX = 11 // /usr/include/unistd.h:163:1:
|
|
X_SC_BC_STRING_MAX = 12 // /usr/include/unistd.h:164:1:
|
|
X_SC_CHILD_MAX = 2 // /usr/include/unistd.h:154:1:
|
|
X_SC_CLK_TCK = 3 // /usr/include/unistd.h:155:1:
|
|
X_SC_CLOCK_SELECTION = 48 // /usr/include/unistd.h:201:1:
|
|
X_SC_COLL_WEIGHTS_MAX = 13 // /usr/include/unistd.h:165:1:
|
|
X_SC_CPUTIME = 49 // /usr/include/unistd.h:202:1:
|
|
X_SC_DELAYTIMER_MAX = 50 // /usr/include/unistd.h:203:1:
|
|
X_SC_EXPR_NEST_MAX = 14 // /usr/include/unistd.h:166:1:
|
|
X_SC_FSYNC = 29 // /usr/include/unistd.h:182:1:
|
|
X_SC_GETGR_R_SIZE_MAX = 100 // /usr/include/unistd.h:253:1:
|
|
X_SC_GETPW_R_SIZE_MAX = 101 // /usr/include/unistd.h:254:1:
|
|
X_SC_HOST_NAME_MAX = 33 // /usr/include/unistd.h:186:1:
|
|
X_SC_IOV_MAX = 51 // /usr/include/unistd.h:204:1:
|
|
X_SC_IPV6 = 52 // /usr/include/unistd.h:205:1:
|
|
X_SC_JOB_CONTROL = 6 // /usr/include/unistd.h:158:1:
|
|
X_SC_LINE_MAX = 15 // /usr/include/unistd.h:167:1:
|
|
X_SC_LOGIN_NAME_MAX = 102 // /usr/include/unistd.h:255:1:
|
|
X_SC_MAPPED_FILES = 53 // /usr/include/unistd.h:206:1:
|
|
X_SC_MEMLOCK = 54 // /usr/include/unistd.h:207:1:
|
|
X_SC_MEMLOCK_RANGE = 55 // /usr/include/unistd.h:208:1:
|
|
X_SC_MEMORY_PROTECTION = 56 // /usr/include/unistd.h:209:1:
|
|
X_SC_MESSAGE_PASSING = 57 // /usr/include/unistd.h:210:1:
|
|
X_SC_MONOTONIC_CLOCK = 34 // /usr/include/unistd.h:187:1:
|
|
X_SC_MQ_OPEN_MAX = 58 // /usr/include/unistd.h:211:1:
|
|
X_SC_MQ_PRIO_MAX = 59 // /usr/include/unistd.h:212:1:
|
|
X_SC_NGROUPS_MAX = 4 // /usr/include/unistd.h:156:1:
|
|
X_SC_NPROCESSORS_CONF = 502 // /usr/include/unistd.h:282:1:
|
|
X_SC_NPROCESSORS_ONLN = 503 // /usr/include/unistd.h:283:1:
|
|
X_SC_OPEN_MAX = 5 // /usr/include/unistd.h:157:1:
|
|
X_SC_PAGESIZE = 28 // /usr/include/unistd.h:180:1:
|
|
X_SC_PAGE_SIZE = 28 // /usr/include/unistd.h:181:1:
|
|
X_SC_PHYS_PAGES = 500 // /usr/include/unistd.h:280:1:
|
|
X_SC_PRIORITIZED_IO = 60 // /usr/include/unistd.h:213:1:
|
|
X_SC_PRIORITY_SCHEDULING = 61 // /usr/include/unistd.h:214:1:
|
|
X_SC_RAW_SOCKETS = 62 // /usr/include/unistd.h:215:1:
|
|
X_SC_READER_WRITER_LOCKS = 63 // /usr/include/unistd.h:216:1:
|
|
X_SC_REALTIME_SIGNALS = 64 // /usr/include/unistd.h:217:1:
|
|
X_SC_REGEXP = 65 // /usr/include/unistd.h:218:1:
|
|
X_SC_RE_DUP_MAX = 16 // /usr/include/unistd.h:168:1:
|
|
X_SC_RTSIG_MAX = 66 // /usr/include/unistd.h:219:1:
|
|
X_SC_SAVED_IDS = 7 // /usr/include/unistd.h:159:1:
|
|
X_SC_SEMAPHORES = 67 // /usr/include/unistd.h:220:1:
|
|
X_SC_SEM_NSEMS_MAX = 31 // /usr/include/unistd.h:184:1:
|
|
X_SC_SEM_VALUE_MAX = 32 // /usr/include/unistd.h:185:1:
|
|
X_SC_SHARED_MEMORY_OBJECTS = 68 // /usr/include/unistd.h:221:1:
|
|
X_SC_SHELL = 69 // /usr/include/unistd.h:222:1:
|
|
X_SC_SIGQUEUE_MAX = 70 // /usr/include/unistd.h:223:1:
|
|
X_SC_SPAWN = 71 // /usr/include/unistd.h:224:1:
|
|
X_SC_SPIN_LOCKS = 72 // /usr/include/unistd.h:225:1:
|
|
X_SC_SPORADIC_SERVER = 73 // /usr/include/unistd.h:226:1:
|
|
X_SC_SS_REPL_MAX = 74 // /usr/include/unistd.h:227:1:
|
|
X_SC_STREAM_MAX = 26 // /usr/include/unistd.h:178:1:
|
|
X_SC_SYMLOOP_MAX = 76 // /usr/include/unistd.h:229:1:
|
|
X_SC_SYNCHRONIZED_IO = 75 // /usr/include/unistd.h:228:1:
|
|
X_SC_THREADS = 91 // /usr/include/unistd.h:244:1:
|
|
X_SC_THREAD_ATTR_STACKADDR = 77 // /usr/include/unistd.h:230:1:
|
|
X_SC_THREAD_ATTR_STACKSIZE = 78 // /usr/include/unistd.h:231:1:
|
|
X_SC_THREAD_CPUTIME = 79 // /usr/include/unistd.h:232:1:
|
|
X_SC_THREAD_DESTRUCTOR_ITERATIONS = 80 // /usr/include/unistd.h:233:1:
|
|
X_SC_THREAD_KEYS_MAX = 81 // /usr/include/unistd.h:234:1:
|
|
X_SC_THREAD_PRIORITY_SCHEDULING = 84 // /usr/include/unistd.h:237:1:
|
|
X_SC_THREAD_PRIO_INHERIT = 82 // /usr/include/unistd.h:235:1:
|
|
X_SC_THREAD_PRIO_PROTECT = 83 // /usr/include/unistd.h:236:1:
|
|
X_SC_THREAD_PROCESS_SHARED = 85 // /usr/include/unistd.h:238:1:
|
|
X_SC_THREAD_ROBUST_PRIO_INHERIT = 86 // /usr/include/unistd.h:239:1:
|
|
X_SC_THREAD_ROBUST_PRIO_PROTECT = 87 // /usr/include/unistd.h:240:1:
|
|
X_SC_THREAD_SAFE_FUNCTIONS = 103 // /usr/include/unistd.h:256:1:
|
|
X_SC_THREAD_SPORADIC_SERVER = 88 // /usr/include/unistd.h:241:1:
|
|
X_SC_THREAD_STACK_MIN = 89 // /usr/include/unistd.h:242:1:
|
|
X_SC_THREAD_THREADS_MAX = 90 // /usr/include/unistd.h:243:1:
|
|
X_SC_TIMEOUTS = 92 // /usr/include/unistd.h:245:1:
|
|
X_SC_TIMERS = 94 // /usr/include/unistd.h:247:1:
|
|
X_SC_TIMER_MAX = 93 // /usr/include/unistd.h:246:1:
|
|
X_SC_TRACE = 95 // /usr/include/unistd.h:248:1:
|
|
X_SC_TRACE_EVENT_FILTER = 96 // /usr/include/unistd.h:249:1:
|
|
X_SC_TRACE_EVENT_NAME_MAX = 97 // /usr/include/unistd.h:250:1:
|
|
X_SC_TRACE_INHERIT = 98 // /usr/include/unistd.h:251:1:
|
|
X_SC_TRACE_LOG = 99 // /usr/include/unistd.h:252:1:
|
|
X_SC_TRACE_NAME_MAX = 104 // /usr/include/unistd.h:257:1:
|
|
X_SC_TRACE_SYS_MAX = 105 // /usr/include/unistd.h:258:1:
|
|
X_SC_TRACE_USER_EVENT_MAX = 106 // /usr/include/unistd.h:259:1:
|
|
X_SC_TTY_NAME_MAX = 107 // /usr/include/unistd.h:260:1:
|
|
X_SC_TYPED_MEMORY_OBJECTS = 108 // /usr/include/unistd.h:261:1:
|
|
X_SC_TZNAME_MAX = 27 // /usr/include/unistd.h:179:1:
|
|
X_SC_V6_ILP32_OFF32 = 109 // /usr/include/unistd.h:262:1:
|
|
X_SC_V6_ILP32_OFFBIG = 110 // /usr/include/unistd.h:263:1:
|
|
X_SC_V6_LP64_OFF64 = 111 // /usr/include/unistd.h:264:1:
|
|
X_SC_V6_LPBIG_OFFBIG = 112 // /usr/include/unistd.h:265:1:
|
|
X_SC_V7_ILP32_OFF32 = 113 // /usr/include/unistd.h:266:1:
|
|
X_SC_V7_ILP32_OFFBIG = 114 // /usr/include/unistd.h:267:1:
|
|
X_SC_V7_LP64_OFF64 = 115 // /usr/include/unistd.h:268:1:
|
|
X_SC_V7_LPBIG_OFFBIG = 116 // /usr/include/unistd.h:269:1:
|
|
X_SC_VERSION = 8 // /usr/include/unistd.h:160:1:
|
|
X_SC_XOPEN_CRYPT = 117 // /usr/include/unistd.h:270:1:
|
|
X_SC_XOPEN_ENH_I18N = 118 // /usr/include/unistd.h:271:1:
|
|
X_SC_XOPEN_LEGACY = 119 // /usr/include/unistd.h:272:1:
|
|
X_SC_XOPEN_REALTIME = 120 // /usr/include/unistd.h:273:1:
|
|
X_SC_XOPEN_REALTIME_THREADS = 121 // /usr/include/unistd.h:274:1:
|
|
X_SC_XOPEN_SHM = 30 // /usr/include/unistd.h:183:1:
|
|
X_SC_XOPEN_STREAMS = 122 // /usr/include/unistd.h:275:1:
|
|
X_SC_XOPEN_UNIX = 123 // /usr/include/unistd.h:276:1:
|
|
X_SC_XOPEN_UUCP = 124 // /usr/include/unistd.h:277:1:
|
|
X_SC_XOPEN_VERSION = 125 // /usr/include/unistd.h:278:1:
|
|
X_SIZE_T_DEFINED_ = 0 // /usr/include/sys/types.h:173:1:
|
|
X_SQLITE3RTREE_H_ = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10403:1:
|
|
X_SSIZE_T_DEFINED_ = 0 // /usr/include/sys/types.h:178:1:
|
|
X_STACKALIGNBYTES = 15 // /usr/include/machine/_types.h:49:1:
|
|
X_STDARG_H_ = 0 // /usr/include/stdarg.h:19:1:
|
|
X_STDIO_H_ = 0 // /usr/include/stdio.h:39:1:
|
|
X_STDLIB_H_ = 0 // /usr/include/stdlib.h:36:1:
|
|
X_STRINGS_H_ = 0 // /usr/include/strings.h:35:1:
|
|
X_STRING_H_ = 0 // /usr/include/string.h:36:1:
|
|
X_SYS_CDEFS_H_ = 0 // /usr/include/sys/cdefs.h:39:1:
|
|
X_SYS_ENDIAN_H_ = 0 // /usr/include/sys/endian.h:38:1:
|
|
X_SYS_TYPES_H_ = 0 // /usr/include/sys/types.h:41:1:
|
|
X_SYS_UNISTD_H_ = 0 // /usr/include/sys/unistd.h:36:1:
|
|
X_SYS__ENDIAN_H_ = 0 // /usr/include/sys/_endian.h:34:1:
|
|
X_SYS__TYPES_H_ = 0 // /usr/include/sys/_types.h:35:1:
|
|
X_TIMER_T_DEFINED_ = 0 // /usr/include/sys/types.h:188:1:
|
|
X_TIME_T_DEFINED_ = 0 // /usr/include/sys/types.h:183:1:
|
|
X_U = 0x01 // /usr/include/ctype.h:45:1:
|
|
X_UINT16_T_DEFINED_ = 0 // /usr/include/sys/types.h:89:1:
|
|
X_UINT32_T_DEFINED_ = 0 // /usr/include/sys/types.h:99:1:
|
|
X_UINT64_T_DEFINED_ = 0 // /usr/include/sys/types.h:109:1:
|
|
X_UINT8_T_DEFINED_ = 0 // /usr/include/sys/types.h:79:1:
|
|
X_UNISTD_H_ = 0 // /usr/include/unistd.h:36:1:
|
|
X_WCHAR_T_DEFINED_ = 0 // /usr/include/stdlib.h:52:1:
|
|
X_X = 0x40 // /usr/include/ctype.h:51:1:
|
|
X_XOPEN_CRYPT = 1 // /usr/include/unistd.h:137:1:
|
|
X_XOPEN_ENH_I18N = -1 // /usr/include/unistd.h:138:1:
|
|
X_XOPEN_LEGACY = -1 // /usr/include/unistd.h:139:1:
|
|
X_XOPEN_REALTIME = -1 // /usr/include/unistd.h:140:1:
|
|
X_XOPEN_REALTIME_THREADS = -1 // /usr/include/unistd.h:141:1:
|
|
X_XOPEN_SHM = 1 // /usr/include/unistd.h:142:1:
|
|
X_XOPEN_STREAMS = -1 // /usr/include/unistd.h:143:1:
|
|
X_XOPEN_UNIX = -1 // /usr/include/unistd.h:145:1:
|
|
X_XOPEN_UUCP = -1 // /usr/include/unistd.h:144:1:
|
|
Unix = 1 // <predefined>:340:1:
|
|
)
|
|
|
|
type ptrdiff_t = int64 /* <builtin>:3:26 */
|
|
|
|
type size_t = uint64 /* <builtin>:9:23 */
|
|
|
|
type wchar_t = int32 /* <builtin>:15:24 */
|
|
|
|
// Note that the type used in va_arg is supposed to match the
|
|
// actual type **after default promotions**.
|
|
// Thus, va_arg (..., short) is not valid.
|
|
|
|
type va_list = uintptr /* /usr/include/stdarg.h:39:24 */
|
|
|
|
// CAPI3REF: 64-Bit Integer Types
|
|
// KEYWORDS: sqlite_int64 sqlite_uint64
|
|
//
|
|
// Because there is no cross-platform way to specify 64-bit integer types
|
|
// SQLite includes typedefs for 64-bit signed and unsigned integers.
|
|
//
|
|
// The sqlite3_int64 and sqlite3_uint64 are the preferred type definitions.
|
|
// The sqlite_int64 and sqlite_uint64 types are supported for backwards
|
|
// compatibility only.
|
|
//
|
|
// ^The sqlite3_int64 and sqlite_int64 types can store integer values
|
|
// between -9223372036854775808 and +9223372036854775807 inclusive. ^The
|
|
// sqlite3_uint64 and sqlite_uint64 types can store integer values
|
|
// between 0 and +18446744073709551615 inclusive.
|
|
type sqlite_int64 = int64 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:301:25 */
|
|
type sqlite_uint64 = uint64 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:302:34 */
|
|
type sqlite3_int64 = sqlite_int64 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:304:22 */
|
|
type sqlite3_uint64 = sqlite_uint64 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:305:23 */
|
|
|
|
// The type for a callback function.
|
|
// This is legacy and deprecated. It is included for historical
|
|
// compatibility and is not documented.
|
|
type sqlite3_callback = uintptr /* testdata/sqlite-amalgamation-3380500/sqlite3.h:361:13 */
|
|
|
|
// CAPI3REF: Result Codes
|
|
// KEYWORDS: {result code definitions}
|
|
//
|
|
// Many SQLite functions return an integer result code from the set shown
|
|
// here in order to indicate success or failure.
|
|
//
|
|
// New error codes may be added in future versions of SQLite.
|
|
//
|
|
// See also: [extended result code definitions]
|
|
// beginning-of-error-codes
|
|
// end-of-error-codes
|
|
|
|
// CAPI3REF: Extended Result Codes
|
|
// KEYWORDS: {extended result code definitions}
|
|
//
|
|
// In its default configuration, SQLite API routines return one of 30 integer
|
|
// [result codes]. However, experience has shown that many of
|
|
// these result codes are too coarse-grained. They do not provide as
|
|
// much information about problems as programmers might like. In an effort to
|
|
// address this, newer versions of SQLite (version 3.3.8 [dateof:3.3.8]
|
|
// and later) include
|
|
// support for additional result codes that provide more detailed information
|
|
// about errors. These [extended result codes] are enabled or disabled
|
|
// on a per database connection basis using the
|
|
// [sqlite3_extended_result_codes()] API. Or, the extended code for
|
|
// the most recent error can be obtained using
|
|
// [sqlite3_extended_errcode()].
|
|
|
|
// CAPI3REF: Flags For File Open Operations
|
|
//
|
|
// These bit values are intended for use in the
|
|
// 3rd parameter to the [sqlite3_open_v2()] interface and
|
|
// in the 4th parameter to the [sqlite3_vfs.xOpen] method.
|
|
//
|
|
// Only those flags marked as "Ok for sqlite3_open_v2()" may be
|
|
// used as the third argument to the [sqlite3_open_v2()] interface.
|
|
// The other flags have historically been ignored by sqlite3_open_v2(),
|
|
// though future versions of SQLite might change so that an error is
|
|
// raised if any of the disallowed bits are passed into sqlite3_open_v2().
|
|
// Applications should not depend on the historical behavior.
|
|
//
|
|
// Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
|
|
// [sqlite3_open_v2()] does *not* cause the underlying database file
|
|
// to be opened using O_EXCL. Passing SQLITE_OPEN_EXCLUSIVE into
|
|
// [sqlite3_open_v2()] has historically be a no-op and might become an
|
|
// error in future versions of SQLite.
|
|
|
|
// Reserved: 0x00F00000
|
|
// Legacy compatibility:
|
|
|
|
// CAPI3REF: Device Characteristics
|
|
//
|
|
// The xDeviceCharacteristics method of the [sqlite3_io_methods]
|
|
// object returns an integer which is a vector of these
|
|
// bit values expressing I/O characteristics of the mass storage
|
|
// device that holds the file that the [sqlite3_io_methods]
|
|
// refers to.
|
|
//
|
|
// The SQLITE_IOCAP_ATOMIC property means that all writes of
|
|
// any size are atomic. The SQLITE_IOCAP_ATOMICnnn values
|
|
// mean that writes of blocks that are nnn bytes in size and
|
|
// are aligned to an address which is an integer multiple of
|
|
// nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means
|
|
// that when data is appended to a file, the data is appended
|
|
// first then the size of the file is extended, never the other
|
|
// way around. The SQLITE_IOCAP_SEQUENTIAL property means that
|
|
// information is written to disk in the same order as calls
|
|
// to xWrite(). The SQLITE_IOCAP_POWERSAFE_OVERWRITE property means that
|
|
// after reboot following a crash or power loss, the only bytes in a
|
|
// file that were written at the application level might have changed
|
|
// and that adjacent bytes, even bytes within the same sector are
|
|
// guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN
|
|
// flag indicates that a file cannot be deleted when open. The
|
|
// SQLITE_IOCAP_IMMUTABLE flag indicates that the file is on
|
|
// read-only media and cannot be changed even by processes with
|
|
// elevated privileges.
|
|
//
|
|
// The SQLITE_IOCAP_BATCH_ATOMIC property means that the underlying
|
|
// filesystem supports doing multiple write operations atomically when those
|
|
// write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and
|
|
// [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE].
|
|
|
|
// CAPI3REF: File Locking Levels
|
|
//
|
|
// SQLite uses one of these integer values as the second
|
|
// argument to calls it makes to the xLock() and xUnlock() methods
|
|
// of an [sqlite3_io_methods] object.
|
|
|
|
// CAPI3REF: Synchronization Type Flags
|
|
//
|
|
// When SQLite invokes the xSync() method of an
|
|
// [sqlite3_io_methods] object it uses a combination of
|
|
// these integer values as the second argument.
|
|
//
|
|
// When the SQLITE_SYNC_DATAONLY flag is used, it means that the
|
|
// sync operation only needs to flush data to mass storage. Inode
|
|
// information need not be flushed. If the lower four bits of the flag
|
|
// equal SQLITE_SYNC_NORMAL, that means to use normal fsync() semantics.
|
|
// If the lower four bits equal SQLITE_SYNC_FULL, that means
|
|
// to use Mac OS X style fullsync instead of fsync().
|
|
//
|
|
// Do not confuse the SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags
|
|
// with the [PRAGMA synchronous]=NORMAL and [PRAGMA synchronous]=FULL
|
|
// settings. The [synchronous pragma] determines when calls to the
|
|
// xSync VFS method occur and applies uniformly across all platforms.
|
|
// The SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags determine how
|
|
// energetic or rigorous or forceful the sync operations are and
|
|
// only make a difference on Mac OSX for the default SQLite code.
|
|
// (Third-party VFS implementations might also make the distinction
|
|
// between SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL, but among the
|
|
// operating systems natively supported by SQLite, only Mac OSX
|
|
// cares about the difference.)
|
|
|
|
// CAPI3REF: OS Interface Open File Handle
|
|
//
|
|
// An [sqlite3_file] object represents an open file in the
|
|
// [sqlite3_vfs | OS interface layer]. Individual OS interface
|
|
// implementations will
|
|
// want to subclass this object by appending additional fields
|
|
// for their own use. The pMethods entry is a pointer to an
|
|
// [sqlite3_io_methods] object that defines methods for performing
|
|
// I/O operations on the open file.
|
|
type sqlite3_file1 = struct{ pMethods uintptr } /* testdata/sqlite-amalgamation-3380500/sqlite3.h:722:9 */
|
|
|
|
// CAPI3REF: Result Codes
|
|
// KEYWORDS: {result code definitions}
|
|
//
|
|
// Many SQLite functions return an integer result code from the set shown
|
|
// here in order to indicate success or failure.
|
|
//
|
|
// New error codes may be added in future versions of SQLite.
|
|
//
|
|
// See also: [extended result code definitions]
|
|
// beginning-of-error-codes
|
|
// end-of-error-codes
|
|
|
|
// CAPI3REF: Extended Result Codes
|
|
// KEYWORDS: {extended result code definitions}
|
|
//
|
|
// In its default configuration, SQLite API routines return one of 30 integer
|
|
// [result codes]. However, experience has shown that many of
|
|
// these result codes are too coarse-grained. They do not provide as
|
|
// much information about problems as programmers might like. In an effort to
|
|
// address this, newer versions of SQLite (version 3.3.8 [dateof:3.3.8]
|
|
// and later) include
|
|
// support for additional result codes that provide more detailed information
|
|
// about errors. These [extended result codes] are enabled or disabled
|
|
// on a per database connection basis using the
|
|
// [sqlite3_extended_result_codes()] API. Or, the extended code for
|
|
// the most recent error can be obtained using
|
|
// [sqlite3_extended_errcode()].
|
|
|
|
// CAPI3REF: Flags For File Open Operations
|
|
//
|
|
// These bit values are intended for use in the
|
|
// 3rd parameter to the [sqlite3_open_v2()] interface and
|
|
// in the 4th parameter to the [sqlite3_vfs.xOpen] method.
|
|
//
|
|
// Only those flags marked as "Ok for sqlite3_open_v2()" may be
|
|
// used as the third argument to the [sqlite3_open_v2()] interface.
|
|
// The other flags have historically been ignored by sqlite3_open_v2(),
|
|
// though future versions of SQLite might change so that an error is
|
|
// raised if any of the disallowed bits are passed into sqlite3_open_v2().
|
|
// Applications should not depend on the historical behavior.
|
|
//
|
|
// Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
|
|
// [sqlite3_open_v2()] does *not* cause the underlying database file
|
|
// to be opened using O_EXCL. Passing SQLITE_OPEN_EXCLUSIVE into
|
|
// [sqlite3_open_v2()] has historically be a no-op and might become an
|
|
// error in future versions of SQLite.
|
|
|
|
// Reserved: 0x00F00000
|
|
// Legacy compatibility:
|
|
|
|
// CAPI3REF: Device Characteristics
|
|
//
|
|
// The xDeviceCharacteristics method of the [sqlite3_io_methods]
|
|
// object returns an integer which is a vector of these
|
|
// bit values expressing I/O characteristics of the mass storage
|
|
// device that holds the file that the [sqlite3_io_methods]
|
|
// refers to.
|
|
//
|
|
// The SQLITE_IOCAP_ATOMIC property means that all writes of
|
|
// any size are atomic. The SQLITE_IOCAP_ATOMICnnn values
|
|
// mean that writes of blocks that are nnn bytes in size and
|
|
// are aligned to an address which is an integer multiple of
|
|
// nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means
|
|
// that when data is appended to a file, the data is appended
|
|
// first then the size of the file is extended, never the other
|
|
// way around. The SQLITE_IOCAP_SEQUENTIAL property means that
|
|
// information is written to disk in the same order as calls
|
|
// to xWrite(). The SQLITE_IOCAP_POWERSAFE_OVERWRITE property means that
|
|
// after reboot following a crash or power loss, the only bytes in a
|
|
// file that were written at the application level might have changed
|
|
// and that adjacent bytes, even bytes within the same sector are
|
|
// guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN
|
|
// flag indicates that a file cannot be deleted when open. The
|
|
// SQLITE_IOCAP_IMMUTABLE flag indicates that the file is on
|
|
// read-only media and cannot be changed even by processes with
|
|
// elevated privileges.
|
|
//
|
|
// The SQLITE_IOCAP_BATCH_ATOMIC property means that the underlying
|
|
// filesystem supports doing multiple write operations atomically when those
|
|
// write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and
|
|
// [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE].
|
|
|
|
// CAPI3REF: File Locking Levels
|
|
//
|
|
// SQLite uses one of these integer values as the second
|
|
// argument to calls it makes to the xLock() and xUnlock() methods
|
|
// of an [sqlite3_io_methods] object.
|
|
|
|
// CAPI3REF: Synchronization Type Flags
|
|
//
|
|
// When SQLite invokes the xSync() method of an
|
|
// [sqlite3_io_methods] object it uses a combination of
|
|
// these integer values as the second argument.
|
|
//
|
|
// When the SQLITE_SYNC_DATAONLY flag is used, it means that the
|
|
// sync operation only needs to flush data to mass storage. Inode
|
|
// information need not be flushed. If the lower four bits of the flag
|
|
// equal SQLITE_SYNC_NORMAL, that means to use normal fsync() semantics.
|
|
// If the lower four bits equal SQLITE_SYNC_FULL, that means
|
|
// to use Mac OS X style fullsync instead of fsync().
|
|
//
|
|
// Do not confuse the SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags
|
|
// with the [PRAGMA synchronous]=NORMAL and [PRAGMA synchronous]=FULL
|
|
// settings. The [synchronous pragma] determines when calls to the
|
|
// xSync VFS method occur and applies uniformly across all platforms.
|
|
// The SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags determine how
|
|
// energetic or rigorous or forceful the sync operations are and
|
|
// only make a difference on Mac OSX for the default SQLite code.
|
|
// (Third-party VFS implementations might also make the distinction
|
|
// between SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL, but among the
|
|
// operating systems natively supported by SQLite, only Mac OSX
|
|
// cares about the difference.)
|
|
|
|
// CAPI3REF: OS Interface Open File Handle
|
|
//
|
|
// An [sqlite3_file] object represents an open file in the
|
|
// [sqlite3_vfs | OS interface layer]. Individual OS interface
|
|
// implementations will
|
|
// want to subclass this object by appending additional fields
|
|
// for their own use. The pMethods entry is a pointer to an
|
|
// [sqlite3_io_methods] object that defines methods for performing
|
|
// I/O operations on the open file.
|
|
type sqlite3_file = sqlite3_file1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:722:29 */
|
|
type sqlite3_io_methods1 = struct {
|
|
iVersion int32
|
|
_ [4]byte
|
|
xClose uintptr
|
|
xRead uintptr
|
|
xWrite uintptr
|
|
xTruncate uintptr
|
|
xSync uintptr
|
|
xFileSize uintptr
|
|
xLock uintptr
|
|
xUnlock uintptr
|
|
xCheckReservedLock uintptr
|
|
xFileControl uintptr
|
|
xSectorSize uintptr
|
|
xDeviceCharacteristics uintptr
|
|
xShmMap uintptr
|
|
xShmLock uintptr
|
|
xShmBarrier uintptr
|
|
xShmUnmap uintptr
|
|
xFetch uintptr
|
|
xUnfetch uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:722:9 */
|
|
|
|
// CAPI3REF: OS Interface File Virtual Methods Object
|
|
//
|
|
// Every file opened by the [sqlite3_vfs.xOpen] method populates an
|
|
// [sqlite3_file] object (or, more commonly, a subclass of the
|
|
// [sqlite3_file] object) with a pointer to an instance of this object.
|
|
// This object defines the methods used to perform various operations
|
|
// against the open file represented by the [sqlite3_file] object.
|
|
//
|
|
// If the [sqlite3_vfs.xOpen] method sets the sqlite3_file.pMethods element
|
|
// to a non-NULL pointer, then the sqlite3_io_methods.xClose method
|
|
// may be invoked even if the [sqlite3_vfs.xOpen] reported that it failed. The
|
|
// only way to prevent a call to xClose following a failed [sqlite3_vfs.xOpen]
|
|
// is for the [sqlite3_vfs.xOpen] to set the sqlite3_file.pMethods element
|
|
// to NULL.
|
|
//
|
|
// The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or
|
|
// [SQLITE_SYNC_FULL]. The first choice is the normal fsync().
|
|
// The second choice is a Mac OS X style fullsync. The [SQLITE_SYNC_DATAONLY]
|
|
// flag may be ORed in to indicate that only the data of the file
|
|
// and not its inode needs to be synced.
|
|
//
|
|
// The integer values to xLock() and xUnlock() are one of
|
|
// <ul>
|
|
// <li> [SQLITE_LOCK_NONE],
|
|
// <li> [SQLITE_LOCK_SHARED],
|
|
// <li> [SQLITE_LOCK_RESERVED],
|
|
// <li> [SQLITE_LOCK_PENDING], or
|
|
// <li> [SQLITE_LOCK_EXCLUSIVE].
|
|
// </ul>
|
|
// xLock() increases the lock. xUnlock() decreases the lock.
|
|
// The xCheckReservedLock() method checks whether any database connection,
|
|
// either in this process or in some other process, is holding a RESERVED,
|
|
// PENDING, or EXCLUSIVE lock on the file. It returns true
|
|
// if such a lock exists and false otherwise.
|
|
//
|
|
// The xFileControl() method is a generic interface that allows custom
|
|
// VFS implementations to directly control an open file using the
|
|
// [sqlite3_file_control()] interface. The second "op" argument is an
|
|
// integer opcode. The third argument is a generic pointer intended to
|
|
// point to a structure that may contain arguments or space in which to
|
|
// write return values. Potential uses for xFileControl() might be
|
|
// functions to enable blocking locks with timeouts, to change the
|
|
// locking strategy (for example to use dot-file locks), to inquire
|
|
// about the status of a lock, or to break stale locks. The SQLite
|
|
// core reserves all opcodes less than 100 for its own use.
|
|
// A [file control opcodes | list of opcodes] less than 100 is available.
|
|
// Applications that define a custom xFileControl method should use opcodes
|
|
// greater than 100 to avoid conflicts. VFS implementations should
|
|
// return [SQLITE_NOTFOUND] for file control opcodes that they do not
|
|
// recognize.
|
|
//
|
|
// The xSectorSize() method returns the sector size of the
|
|
// device that underlies the file. The sector size is the
|
|
// minimum write that can be performed without disturbing
|
|
// other bytes in the file. The xDeviceCharacteristics()
|
|
// method returns a bit vector describing behaviors of the
|
|
// underlying device:
|
|
//
|
|
// <ul>
|
|
// <li> [SQLITE_IOCAP_ATOMIC]
|
|
// <li> [SQLITE_IOCAP_ATOMIC512]
|
|
// <li> [SQLITE_IOCAP_ATOMIC1K]
|
|
// <li> [SQLITE_IOCAP_ATOMIC2K]
|
|
// <li> [SQLITE_IOCAP_ATOMIC4K]
|
|
// <li> [SQLITE_IOCAP_ATOMIC8K]
|
|
// <li> [SQLITE_IOCAP_ATOMIC16K]
|
|
// <li> [SQLITE_IOCAP_ATOMIC32K]
|
|
// <li> [SQLITE_IOCAP_ATOMIC64K]
|
|
// <li> [SQLITE_IOCAP_SAFE_APPEND]
|
|
// <li> [SQLITE_IOCAP_SEQUENTIAL]
|
|
// <li> [SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN]
|
|
// <li> [SQLITE_IOCAP_POWERSAFE_OVERWRITE]
|
|
// <li> [SQLITE_IOCAP_IMMUTABLE]
|
|
// <li> [SQLITE_IOCAP_BATCH_ATOMIC]
|
|
// </ul>
|
|
//
|
|
// The SQLITE_IOCAP_ATOMIC property means that all writes of
|
|
// any size are atomic. The SQLITE_IOCAP_ATOMICnnn values
|
|
// mean that writes of blocks that are nnn bytes in size and
|
|
// are aligned to an address which is an integer multiple of
|
|
// nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means
|
|
// that when data is appended to a file, the data is appended
|
|
// first then the size of the file is extended, never the other
|
|
// way around. The SQLITE_IOCAP_SEQUENTIAL property means that
|
|
// information is written to disk in the same order as calls
|
|
// to xWrite().
|
|
//
|
|
// If xRead() returns SQLITE_IOERR_SHORT_READ it must also fill
|
|
// in the unread portions of the buffer with zeros. A VFS that
|
|
// fails to zero-fill short reads might seem to work. However,
|
|
// failure to zero-fill short reads will eventually lead to
|
|
// database corruption.
|
|
type sqlite3_io_methods = sqlite3_io_methods1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:821:35 */
|
|
|
|
// CAPI3REF: OS Interface Object
|
|
//
|
|
// An instance of the sqlite3_vfs object defines the interface between
|
|
// the SQLite core and the underlying operating system. The "vfs"
|
|
// in the name of the object stands for "virtual file system". See
|
|
// the [VFS | VFS documentation] for further information.
|
|
//
|
|
// The VFS interface is sometimes extended by adding new methods onto
|
|
// the end. Each time such an extension occurs, the iVersion field
|
|
// is incremented. The iVersion value started out as 1 in
|
|
// SQLite [version 3.5.0] on [dateof:3.5.0], then increased to 2
|
|
// with SQLite [version 3.7.0] on [dateof:3.7.0], and then increased
|
|
// to 3 with SQLite [version 3.7.6] on [dateof:3.7.6]. Additional fields
|
|
// may be appended to the sqlite3_vfs object and the iVersion value
|
|
// may increase again in future versions of SQLite.
|
|
// Note that due to an oversight, the structure
|
|
// of the sqlite3_vfs object changed in the transition from
|
|
// SQLite [version 3.5.9] to [version 3.6.0] on [dateof:3.6.0]
|
|
// and yet the iVersion field was not increased.
|
|
//
|
|
// The szOsFile field is the size of the subclassed [sqlite3_file]
|
|
// structure used by this VFS. mxPathname is the maximum length of
|
|
// a pathname in this VFS.
|
|
//
|
|
// Registered sqlite3_vfs objects are kept on a linked list formed by
|
|
// the pNext pointer. The [sqlite3_vfs_register()]
|
|
// and [sqlite3_vfs_unregister()] interfaces manage this list
|
|
// in a thread-safe way. The [sqlite3_vfs_find()] interface
|
|
// searches the list. Neither the application code nor the VFS
|
|
// implementation should use the pNext pointer.
|
|
//
|
|
// The pNext field is the only field in the sqlite3_vfs
|
|
// structure that SQLite will ever modify. SQLite will only access
|
|
// or modify this field while holding a particular static mutex.
|
|
// The application should never modify anything within the sqlite3_vfs
|
|
// object once the object has been registered.
|
|
//
|
|
// The zName field holds the name of the VFS module. The name must
|
|
// be unique across all VFS modules.
|
|
//
|
|
// [[sqlite3_vfs.xOpen]]
|
|
// ^SQLite guarantees that the zFilename parameter to xOpen
|
|
// is either a NULL pointer or string obtained
|
|
// from xFullPathname() with an optional suffix added.
|
|
// ^If a suffix is added to the zFilename parameter, it will
|
|
// consist of a single "-" character followed by no more than
|
|
// 11 alphanumeric and/or "-" characters.
|
|
// ^SQLite further guarantees that
|
|
// the string will be valid and unchanged until xClose() is
|
|
// called. Because of the previous sentence,
|
|
// the [sqlite3_file] can safely store a pointer to the
|
|
// filename if it needs to remember the filename for some reason.
|
|
// If the zFilename parameter to xOpen is a NULL pointer then xOpen
|
|
// must invent its own temporary name for the file. ^Whenever the
|
|
// xFilename parameter is NULL it will also be the case that the
|
|
// flags parameter will include [SQLITE_OPEN_DELETEONCLOSE].
|
|
//
|
|
// The flags argument to xOpen() includes all bits set in
|
|
// the flags argument to [sqlite3_open_v2()]. Or if [sqlite3_open()]
|
|
// or [sqlite3_open16()] is used, then flags includes at least
|
|
// [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
|
|
// If xOpen() opens a file read-only then it sets *pOutFlags to
|
|
// include [SQLITE_OPEN_READONLY]. Other bits in *pOutFlags may be set.
|
|
//
|
|
// ^(SQLite will also add one of the following flags to the xOpen()
|
|
// call, depending on the object being opened:
|
|
//
|
|
// <ul>
|
|
// <li> [SQLITE_OPEN_MAIN_DB]
|
|
// <li> [SQLITE_OPEN_MAIN_JOURNAL]
|
|
// <li> [SQLITE_OPEN_TEMP_DB]
|
|
// <li> [SQLITE_OPEN_TEMP_JOURNAL]
|
|
// <li> [SQLITE_OPEN_TRANSIENT_DB]
|
|
// <li> [SQLITE_OPEN_SUBJOURNAL]
|
|
// <li> [SQLITE_OPEN_SUPER_JOURNAL]
|
|
// <li> [SQLITE_OPEN_WAL]
|
|
// </ul>)^
|
|
//
|
|
// The file I/O implementation can use the object type flags to
|
|
// change the way it deals with files. For example, an application
|
|
// that does not care about crash recovery or rollback might make
|
|
// the open of a journal file a no-op. Writes to this journal would
|
|
// also be no-ops, and any attempt to read the journal would return
|
|
// SQLITE_IOERR. Or the implementation might recognize that a database
|
|
// file will be doing page-aligned sector reads and writes in a random
|
|
// order and set up its I/O subsystem accordingly.
|
|
//
|
|
// SQLite might also add one of the following flags to the xOpen method:
|
|
//
|
|
// <ul>
|
|
// <li> [SQLITE_OPEN_DELETEONCLOSE]
|
|
// <li> [SQLITE_OPEN_EXCLUSIVE]
|
|
// </ul>
|
|
//
|
|
// The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
|
|
// deleted when it is closed. ^The [SQLITE_OPEN_DELETEONCLOSE]
|
|
// will be set for TEMP databases and their journals, transient
|
|
// databases, and subjournals.
|
|
//
|
|
// ^The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction
|
|
// with the [SQLITE_OPEN_CREATE] flag, which are both directly
|
|
// analogous to the O_EXCL and O_CREAT flags of the POSIX open()
|
|
// API. The SQLITE_OPEN_EXCLUSIVE flag, when paired with the
|
|
// SQLITE_OPEN_CREATE, is used to indicate that file should always
|
|
// be created, and that it is an error if it already exists.
|
|
// It is <i>not</i> used to indicate the file should be opened
|
|
// for exclusive access.
|
|
//
|
|
// ^At least szOsFile bytes of memory are allocated by SQLite
|
|
// to hold the [sqlite3_file] structure passed as the third
|
|
// argument to xOpen. The xOpen method does not have to
|
|
// allocate the structure; it should just fill it in. Note that
|
|
// the xOpen method must set the sqlite3_file.pMethods to either
|
|
// a valid [sqlite3_io_methods] object or to NULL. xOpen must do
|
|
// this even if the open fails. SQLite expects that the sqlite3_file.pMethods
|
|
// element will be valid after xOpen returns regardless of the success
|
|
// or failure of the xOpen call.
|
|
//
|
|
// [[sqlite3_vfs.xAccess]]
|
|
// ^The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS]
|
|
// to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to
|
|
// test whether a file is readable and writable, or [SQLITE_ACCESS_READ]
|
|
// to test whether a file is at least readable. The SQLITE_ACCESS_READ
|
|
// flag is never actually used and is not implemented in the built-in
|
|
// VFSes of SQLite. The file is named by the second argument and can be a
|
|
// directory. The xAccess method returns [SQLITE_OK] on success or some
|
|
// non-zero error code if there is an I/O error or if the name of
|
|
// the file given in the second argument is illegal. If SQLITE_OK
|
|
// is returned, then non-zero or zero is written into *pResOut to indicate
|
|
// whether or not the file is accessible.
|
|
//
|
|
// ^SQLite will always allocate at least mxPathname+1 bytes for the
|
|
// output buffer xFullPathname. The exact size of the output buffer
|
|
// is also passed as a parameter to both methods. If the output buffer
|
|
// is not large enough, [SQLITE_CANTOPEN] should be returned. Since this is
|
|
// handled as a fatal error by SQLite, vfs implementations should endeavor
|
|
// to prevent this by setting mxPathname to a sufficiently large value.
|
|
//
|
|
// The xRandomness(), xSleep(), xCurrentTime(), and xCurrentTimeInt64()
|
|
// interfaces are not strictly a part of the filesystem, but they are
|
|
// included in the VFS structure for completeness.
|
|
// The xRandomness() function attempts to return nBytes bytes
|
|
// of good-quality randomness into zOut. The return value is
|
|
// the actual number of bytes of randomness obtained.
|
|
// The xSleep() method causes the calling thread to sleep for at
|
|
// least the number of microseconds given. ^The xCurrentTime()
|
|
// method returns a Julian Day Number for the current date and time as
|
|
// a floating point value.
|
|
// ^The xCurrentTimeInt64() method returns, as an integer, the Julian
|
|
// Day Number multiplied by 86400000 (the number of milliseconds in
|
|
// a 24-hour day).
|
|
// ^SQLite will use the xCurrentTimeInt64() method to get the current
|
|
// date and time if that method is available (if iVersion is 2 or
|
|
// greater and the function pointer is not NULL) and will fall back
|
|
// to xCurrentTime() if xCurrentTimeInt64() is unavailable.
|
|
//
|
|
// ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
|
|
// are not used by the SQLite core. These optional interfaces are provided
|
|
// by some VFSes to facilitate testing of the VFS code. By overriding
|
|
// system calls with functions under its control, a test program can
|
|
// simulate faults and error conditions that would otherwise be difficult
|
|
// or impossible to induce. The set of system calls that can be overridden
|
|
// varies from one VFS to another, and from one version of the same VFS to the
|
|
// next. Applications that use these interfaces must be prepared for any
|
|
// or all of these interfaces to be NULL or for their behavior to change
|
|
// from one release to the next. Applications must not attempt to access
|
|
// any of these methods if the iVersion of the VFS is less than 3.
|
|
type sqlite3_vfs1 = struct {
|
|
iVersion int32
|
|
szOsFile int32
|
|
mxPathname int32
|
|
_ [4]byte
|
|
pNext uintptr
|
|
zName uintptr
|
|
pAppData uintptr
|
|
xOpen uintptr
|
|
xDelete uintptr
|
|
xAccess uintptr
|
|
xFullPathname uintptr
|
|
xDlOpen uintptr
|
|
xDlError uintptr
|
|
xDlSym uintptr
|
|
xDlClose uintptr
|
|
xRandomness uintptr
|
|
xSleep uintptr
|
|
xCurrentTime uintptr
|
|
xGetLastError uintptr
|
|
xCurrentTimeInt64 uintptr
|
|
xSetSystemCall uintptr
|
|
xGetSystemCall uintptr
|
|
xNextSystemCall uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:1425:9 */
|
|
|
|
// CAPI3REF: OS Interface Object
|
|
//
|
|
// An instance of the sqlite3_vfs object defines the interface between
|
|
// the SQLite core and the underlying operating system. The "vfs"
|
|
// in the name of the object stands for "virtual file system". See
|
|
// the [VFS | VFS documentation] for further information.
|
|
//
|
|
// The VFS interface is sometimes extended by adding new methods onto
|
|
// the end. Each time such an extension occurs, the iVersion field
|
|
// is incremented. The iVersion value started out as 1 in
|
|
// SQLite [version 3.5.0] on [dateof:3.5.0], then increased to 2
|
|
// with SQLite [version 3.7.0] on [dateof:3.7.0], and then increased
|
|
// to 3 with SQLite [version 3.7.6] on [dateof:3.7.6]. Additional fields
|
|
// may be appended to the sqlite3_vfs object and the iVersion value
|
|
// may increase again in future versions of SQLite.
|
|
// Note that due to an oversight, the structure
|
|
// of the sqlite3_vfs object changed in the transition from
|
|
// SQLite [version 3.5.9] to [version 3.6.0] on [dateof:3.6.0]
|
|
// and yet the iVersion field was not increased.
|
|
//
|
|
// The szOsFile field is the size of the subclassed [sqlite3_file]
|
|
// structure used by this VFS. mxPathname is the maximum length of
|
|
// a pathname in this VFS.
|
|
//
|
|
// Registered sqlite3_vfs objects are kept on a linked list formed by
|
|
// the pNext pointer. The [sqlite3_vfs_register()]
|
|
// and [sqlite3_vfs_unregister()] interfaces manage this list
|
|
// in a thread-safe way. The [sqlite3_vfs_find()] interface
|
|
// searches the list. Neither the application code nor the VFS
|
|
// implementation should use the pNext pointer.
|
|
//
|
|
// The pNext field is the only field in the sqlite3_vfs
|
|
// structure that SQLite will ever modify. SQLite will only access
|
|
// or modify this field while holding a particular static mutex.
|
|
// The application should never modify anything within the sqlite3_vfs
|
|
// object once the object has been registered.
|
|
//
|
|
// The zName field holds the name of the VFS module. The name must
|
|
// be unique across all VFS modules.
|
|
//
|
|
// [[sqlite3_vfs.xOpen]]
|
|
// ^SQLite guarantees that the zFilename parameter to xOpen
|
|
// is either a NULL pointer or string obtained
|
|
// from xFullPathname() with an optional suffix added.
|
|
// ^If a suffix is added to the zFilename parameter, it will
|
|
// consist of a single "-" character followed by no more than
|
|
// 11 alphanumeric and/or "-" characters.
|
|
// ^SQLite further guarantees that
|
|
// the string will be valid and unchanged until xClose() is
|
|
// called. Because of the previous sentence,
|
|
// the [sqlite3_file] can safely store a pointer to the
|
|
// filename if it needs to remember the filename for some reason.
|
|
// If the zFilename parameter to xOpen is a NULL pointer then xOpen
|
|
// must invent its own temporary name for the file. ^Whenever the
|
|
// xFilename parameter is NULL it will also be the case that the
|
|
// flags parameter will include [SQLITE_OPEN_DELETEONCLOSE].
|
|
//
|
|
// The flags argument to xOpen() includes all bits set in
|
|
// the flags argument to [sqlite3_open_v2()]. Or if [sqlite3_open()]
|
|
// or [sqlite3_open16()] is used, then flags includes at least
|
|
// [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
|
|
// If xOpen() opens a file read-only then it sets *pOutFlags to
|
|
// include [SQLITE_OPEN_READONLY]. Other bits in *pOutFlags may be set.
|
|
//
|
|
// ^(SQLite will also add one of the following flags to the xOpen()
|
|
// call, depending on the object being opened:
|
|
//
|
|
// <ul>
|
|
// <li> [SQLITE_OPEN_MAIN_DB]
|
|
// <li> [SQLITE_OPEN_MAIN_JOURNAL]
|
|
// <li> [SQLITE_OPEN_TEMP_DB]
|
|
// <li> [SQLITE_OPEN_TEMP_JOURNAL]
|
|
// <li> [SQLITE_OPEN_TRANSIENT_DB]
|
|
// <li> [SQLITE_OPEN_SUBJOURNAL]
|
|
// <li> [SQLITE_OPEN_SUPER_JOURNAL]
|
|
// <li> [SQLITE_OPEN_WAL]
|
|
// </ul>)^
|
|
//
|
|
// The file I/O implementation can use the object type flags to
|
|
// change the way it deals with files. For example, an application
|
|
// that does not care about crash recovery or rollback might make
|
|
// the open of a journal file a no-op. Writes to this journal would
|
|
// also be no-ops, and any attempt to read the journal would return
|
|
// SQLITE_IOERR. Or the implementation might recognize that a database
|
|
// file will be doing page-aligned sector reads and writes in a random
|
|
// order and set up its I/O subsystem accordingly.
|
|
//
|
|
// SQLite might also add one of the following flags to the xOpen method:
|
|
//
|
|
// <ul>
|
|
// <li> [SQLITE_OPEN_DELETEONCLOSE]
|
|
// <li> [SQLITE_OPEN_EXCLUSIVE]
|
|
// </ul>
|
|
//
|
|
// The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
|
|
// deleted when it is closed. ^The [SQLITE_OPEN_DELETEONCLOSE]
|
|
// will be set for TEMP databases and their journals, transient
|
|
// databases, and subjournals.
|
|
//
|
|
// ^The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction
|
|
// with the [SQLITE_OPEN_CREATE] flag, which are both directly
|
|
// analogous to the O_EXCL and O_CREAT flags of the POSIX open()
|
|
// API. The SQLITE_OPEN_EXCLUSIVE flag, when paired with the
|
|
// SQLITE_OPEN_CREATE, is used to indicate that file should always
|
|
// be created, and that it is an error if it already exists.
|
|
// It is <i>not</i> used to indicate the file should be opened
|
|
// for exclusive access.
|
|
//
|
|
// ^At least szOsFile bytes of memory are allocated by SQLite
|
|
// to hold the [sqlite3_file] structure passed as the third
|
|
// argument to xOpen. The xOpen method does not have to
|
|
// allocate the structure; it should just fill it in. Note that
|
|
// the xOpen method must set the sqlite3_file.pMethods to either
|
|
// a valid [sqlite3_io_methods] object or to NULL. xOpen must do
|
|
// this even if the open fails. SQLite expects that the sqlite3_file.pMethods
|
|
// element will be valid after xOpen returns regardless of the success
|
|
// or failure of the xOpen call.
|
|
//
|
|
// [[sqlite3_vfs.xAccess]]
|
|
// ^The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS]
|
|
// to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to
|
|
// test whether a file is readable and writable, or [SQLITE_ACCESS_READ]
|
|
// to test whether a file is at least readable. The SQLITE_ACCESS_READ
|
|
// flag is never actually used and is not implemented in the built-in
|
|
// VFSes of SQLite. The file is named by the second argument and can be a
|
|
// directory. The xAccess method returns [SQLITE_OK] on success or some
|
|
// non-zero error code if there is an I/O error or if the name of
|
|
// the file given in the second argument is illegal. If SQLITE_OK
|
|
// is returned, then non-zero or zero is written into *pResOut to indicate
|
|
// whether or not the file is accessible.
|
|
//
|
|
// ^SQLite will always allocate at least mxPathname+1 bytes for the
|
|
// output buffer xFullPathname. The exact size of the output buffer
|
|
// is also passed as a parameter to both methods. If the output buffer
|
|
// is not large enough, [SQLITE_CANTOPEN] should be returned. Since this is
|
|
// handled as a fatal error by SQLite, vfs implementations should endeavor
|
|
// to prevent this by setting mxPathname to a sufficiently large value.
|
|
//
|
|
// The xRandomness(), xSleep(), xCurrentTime(), and xCurrentTimeInt64()
|
|
// interfaces are not strictly a part of the filesystem, but they are
|
|
// included in the VFS structure for completeness.
|
|
// The xRandomness() function attempts to return nBytes bytes
|
|
// of good-quality randomness into zOut. The return value is
|
|
// the actual number of bytes of randomness obtained.
|
|
// The xSleep() method causes the calling thread to sleep for at
|
|
// least the number of microseconds given. ^The xCurrentTime()
|
|
// method returns a Julian Day Number for the current date and time as
|
|
// a floating point value.
|
|
// ^The xCurrentTimeInt64() method returns, as an integer, the Julian
|
|
// Day Number multiplied by 86400000 (the number of milliseconds in
|
|
// a 24-hour day).
|
|
// ^SQLite will use the xCurrentTimeInt64() method to get the current
|
|
// date and time if that method is available (if iVersion is 2 or
|
|
// greater and the function pointer is not NULL) and will fall back
|
|
// to xCurrentTime() if xCurrentTimeInt64() is unavailable.
|
|
//
|
|
// ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
|
|
// are not used by the SQLite core. These optional interfaces are provided
|
|
// by some VFSes to facilitate testing of the VFS code. By overriding
|
|
// system calls with functions under its control, a test program can
|
|
// simulate faults and error conditions that would otherwise be difficult
|
|
// or impossible to induce. The set of system calls that can be overridden
|
|
// varies from one VFS to another, and from one version of the same VFS to the
|
|
// next. Applications that use these interfaces must be prepared for any
|
|
// or all of these interfaces to be NULL or for their behavior to change
|
|
// from one release to the next. Applications must not attempt to access
|
|
// any of these methods if the iVersion of the VFS is less than 3.
|
|
type sqlite3_vfs = sqlite3_vfs1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:1425:28 */
|
|
type sqlite3_syscall_ptr = uintptr /* testdata/sqlite-amalgamation-3380500/sqlite3.h:1426:14 */
|
|
|
|
// CAPI3REF: Memory Allocation Routines
|
|
//
|
|
// An instance of this object defines the interface between SQLite
|
|
// and low-level memory allocation routines.
|
|
//
|
|
// This object is used in only one place in the SQLite interface.
|
|
// A pointer to an instance of this object is the argument to
|
|
// [sqlite3_config()] when the configuration option is
|
|
// [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC].
|
|
// By creating an instance of this object
|
|
// and passing it to [sqlite3_config]([SQLITE_CONFIG_MALLOC])
|
|
// during configuration, an application can specify an alternative
|
|
// memory allocation subsystem for SQLite to use for all of its
|
|
// dynamic memory needs.
|
|
//
|
|
// Note that SQLite comes with several [built-in memory allocators]
|
|
// that are perfectly adequate for the overwhelming majority of applications
|
|
// and that this object is only useful to a tiny minority of applications
|
|
// with specialized memory allocation requirements. This object is
|
|
// also used during testing of SQLite in order to specify an alternative
|
|
// memory allocator that simulates memory out-of-memory conditions in
|
|
// order to verify that SQLite recovers gracefully from such
|
|
// conditions.
|
|
//
|
|
// The xMalloc, xRealloc, and xFree methods must work like the
|
|
// malloc(), realloc() and free() functions from the standard C library.
|
|
// ^SQLite guarantees that the second argument to
|
|
// xRealloc is always a value returned by a prior call to xRoundup.
|
|
//
|
|
// xSize should return the allocated size of a memory allocation
|
|
// previously obtained from xMalloc or xRealloc. The allocated size
|
|
// is always at least as big as the requested size but may be larger.
|
|
//
|
|
// The xRoundup method returns what would be the allocated size of
|
|
// a memory allocation given a particular requested size. Most memory
|
|
// allocators round up memory allocations at least to the next multiple
|
|
// of 8. Some allocators round up to a larger multiple or to a power of 2.
|
|
// Every memory allocation request coming in through [sqlite3_malloc()]
|
|
// or [sqlite3_realloc()] first calls xRoundup. If xRoundup returns 0,
|
|
// that causes the corresponding memory allocation to fail.
|
|
//
|
|
// The xInit method initializes the memory allocator. For example,
|
|
// it might allocate any required mutexes or initialize internal data
|
|
// structures. The xShutdown method is invoked (indirectly) by
|
|
// [sqlite3_shutdown()] and should deallocate any resources acquired
|
|
// by xInit. The pAppData pointer is used as the only parameter to
|
|
// xInit and xShutdown.
|
|
//
|
|
// SQLite holds the [SQLITE_MUTEX_STATIC_MAIN] mutex when it invokes
|
|
// the xInit method, so the xInit method need not be threadsafe. The
|
|
// xShutdown method is only called from [sqlite3_shutdown()] so it does
|
|
// not need to be threadsafe either. For all other methods, SQLite
|
|
// holds the [SQLITE_MUTEX_STATIC_MEM] mutex as long as the
|
|
// [SQLITE_CONFIG_MEMSTATUS] configuration option is turned on (which
|
|
// it is by default) and so the methods are automatically serialized.
|
|
// However, if [SQLITE_CONFIG_MEMSTATUS] is disabled, then the other
|
|
// methods must be threadsafe or else make their own arrangements for
|
|
// serialization.
|
|
//
|
|
// SQLite will never invoke xInit() more than once without an intervening
|
|
// call to xShutdown().
|
|
type sqlite3_mem_methods1 = struct {
|
|
xMalloc uintptr
|
|
xFree uintptr
|
|
xRealloc uintptr
|
|
xSize uintptr
|
|
xRoundup uintptr
|
|
xInit uintptr
|
|
xShutdown uintptr
|
|
pAppData uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:1723:9 */
|
|
|
|
// CAPI3REF: Memory Allocation Routines
|
|
//
|
|
// An instance of this object defines the interface between SQLite
|
|
// and low-level memory allocation routines.
|
|
//
|
|
// This object is used in only one place in the SQLite interface.
|
|
// A pointer to an instance of this object is the argument to
|
|
// [sqlite3_config()] when the configuration option is
|
|
// [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC].
|
|
// By creating an instance of this object
|
|
// and passing it to [sqlite3_config]([SQLITE_CONFIG_MALLOC])
|
|
// during configuration, an application can specify an alternative
|
|
// memory allocation subsystem for SQLite to use for all of its
|
|
// dynamic memory needs.
|
|
//
|
|
// Note that SQLite comes with several [built-in memory allocators]
|
|
// that are perfectly adequate for the overwhelming majority of applications
|
|
// and that this object is only useful to a tiny minority of applications
|
|
// with specialized memory allocation requirements. This object is
|
|
// also used during testing of SQLite in order to specify an alternative
|
|
// memory allocator that simulates memory out-of-memory conditions in
|
|
// order to verify that SQLite recovers gracefully from such
|
|
// conditions.
|
|
//
|
|
// The xMalloc, xRealloc, and xFree methods must work like the
|
|
// malloc(), realloc() and free() functions from the standard C library.
|
|
// ^SQLite guarantees that the second argument to
|
|
// xRealloc is always a value returned by a prior call to xRoundup.
|
|
//
|
|
// xSize should return the allocated size of a memory allocation
|
|
// previously obtained from xMalloc or xRealloc. The allocated size
|
|
// is always at least as big as the requested size but may be larger.
|
|
//
|
|
// The xRoundup method returns what would be the allocated size of
|
|
// a memory allocation given a particular requested size. Most memory
|
|
// allocators round up memory allocations at least to the next multiple
|
|
// of 8. Some allocators round up to a larger multiple or to a power of 2.
|
|
// Every memory allocation request coming in through [sqlite3_malloc()]
|
|
// or [sqlite3_realloc()] first calls xRoundup. If xRoundup returns 0,
|
|
// that causes the corresponding memory allocation to fail.
|
|
//
|
|
// The xInit method initializes the memory allocator. For example,
|
|
// it might allocate any required mutexes or initialize internal data
|
|
// structures. The xShutdown method is invoked (indirectly) by
|
|
// [sqlite3_shutdown()] and should deallocate any resources acquired
|
|
// by xInit. The pAppData pointer is used as the only parameter to
|
|
// xInit and xShutdown.
|
|
//
|
|
// SQLite holds the [SQLITE_MUTEX_STATIC_MAIN] mutex when it invokes
|
|
// the xInit method, so the xInit method need not be threadsafe. The
|
|
// xShutdown method is only called from [sqlite3_shutdown()] so it does
|
|
// not need to be threadsafe either. For all other methods, SQLite
|
|
// holds the [SQLITE_MUTEX_STATIC_MEM] mutex as long as the
|
|
// [SQLITE_CONFIG_MEMSTATUS] configuration option is turned on (which
|
|
// it is by default) and so the methods are automatically serialized.
|
|
// However, if [SQLITE_CONFIG_MEMSTATUS] is disabled, then the other
|
|
// methods must be threadsafe or else make their own arrangements for
|
|
// serialization.
|
|
//
|
|
// SQLite will never invoke xInit() more than once without an intervening
|
|
// call to xShutdown().
|
|
type sqlite3_mem_methods = sqlite3_mem_methods1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:1723:36 */
|
|
|
|
// CAPI3REF: Constants Defining Special Destructor Behavior
|
|
//
|
|
// These are special values for the destructor that is passed in as the
|
|
// final argument to routines like [sqlite3_result_blob()]. ^If the destructor
|
|
// argument is SQLITE_STATIC, it means that the content pointer is constant
|
|
// and will never change. It does not need to be destroyed. ^The
|
|
// SQLITE_TRANSIENT value means that the content will likely change in
|
|
// the near future and that SQLite should make its own private copy of
|
|
// the content before returning.
|
|
//
|
|
// The typedef is necessary to work around problems in certain
|
|
// C++ compilers.
|
|
type sqlite3_destructor_type = uintptr /* testdata/sqlite-amalgamation-3380500/sqlite3.h:5752:14 */
|
|
|
|
// The interface to the virtual-table mechanism is currently considered
|
|
// to be experimental. The interface might change in incompatible ways.
|
|
// If this is a problem for you, do not use the interface at this time.
|
|
//
|
|
// When the virtual-table mechanism stabilizes, we will declare the
|
|
// interface fixed, support it indefinitely, and remove this comment.
|
|
|
|
// Structures used by the virtual table interface
|
|
type sqlite3_vtab1 = struct {
|
|
pModule uintptr
|
|
nRef int32
|
|
_ [4]byte
|
|
zErrMsg uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6937:9 */
|
|
|
|
// The interface to the virtual-table mechanism is currently considered
|
|
// to be experimental. The interface might change in incompatible ways.
|
|
// If this is a problem for you, do not use the interface at this time.
|
|
//
|
|
// When the virtual-table mechanism stabilizes, we will declare the
|
|
// interface fixed, support it indefinitely, and remove this comment.
|
|
|
|
// Structures used by the virtual table interface
|
|
type sqlite3_vtab = sqlite3_vtab1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6937:29 */
|
|
type sqlite3_index_info1 = struct {
|
|
nConstraint int32
|
|
_ [4]byte
|
|
aConstraint uintptr
|
|
nOrderBy int32
|
|
_ [4]byte
|
|
aOrderBy uintptr
|
|
aConstraintUsage uintptr
|
|
idxNum int32
|
|
_ [4]byte
|
|
idxStr uintptr
|
|
needToFreeIdxStr int32
|
|
orderByConsumed int32
|
|
estimatedCost float64
|
|
estimatedRows sqlite3_int64
|
|
idxFlags int32
|
|
_ [4]byte
|
|
colUsed sqlite3_uint64
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6938:9 */
|
|
|
|
type sqlite3_index_info = sqlite3_index_info1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6938:35 */
|
|
type sqlite3_vtab_cursor1 = struct{ pVtab uintptr } /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6939:9 */
|
|
|
|
type sqlite3_vtab_cursor = sqlite3_vtab_cursor1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6939:36 */
|
|
type sqlite3_module1 = struct {
|
|
iVersion int32
|
|
_ [4]byte
|
|
xCreate uintptr
|
|
xConnect uintptr
|
|
xBestIndex uintptr
|
|
xDisconnect uintptr
|
|
xDestroy uintptr
|
|
xOpen uintptr
|
|
xClose uintptr
|
|
xFilter uintptr
|
|
xNext uintptr
|
|
xEof uintptr
|
|
xColumn uintptr
|
|
xRowid uintptr
|
|
xUpdate uintptr
|
|
xBegin uintptr
|
|
xSync uintptr
|
|
xCommit uintptr
|
|
xRollback uintptr
|
|
xFindFunction uintptr
|
|
xRename uintptr
|
|
xSavepoint uintptr
|
|
xRelease uintptr
|
|
xRollbackTo uintptr
|
|
xShadowName uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6937:9 */
|
|
|
|
type sqlite3_module = sqlite3_module1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6940:31 */
|
|
|
|
// CAPI3REF: Virtual Table Indexing Information
|
|
// KEYWORDS: sqlite3_index_info
|
|
//
|
|
// The sqlite3_index_info structure and its substructures is used as part
|
|
// of the [virtual table] interface to
|
|
// pass information into and receive the reply from the [xBestIndex]
|
|
// method of a [virtual table module]. The fields under **Inputs** are the
|
|
// inputs to xBestIndex and are read-only. xBestIndex inserts its
|
|
// results into the **Outputs** fields.
|
|
//
|
|
// ^(The aConstraint[] array records WHERE clause constraints of the form:
|
|
//
|
|
// <blockquote>column OP expr</blockquote>
|
|
//
|
|
// where OP is =, <, <=, >, or >=.)^ ^(The particular operator is
|
|
// stored in aConstraint[].op using one of the
|
|
// [SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_ values].)^
|
|
// ^(The index of the column is stored in
|
|
// aConstraint[].iColumn.)^ ^(aConstraint[].usable is TRUE if the
|
|
// expr on the right-hand side can be evaluated (and thus the constraint
|
|
// is usable) and false if it cannot.)^
|
|
//
|
|
// ^The optimizer automatically inverts terms of the form "expr OP column"
|
|
// and makes other simplifications to the WHERE clause in an attempt to
|
|
// get as many WHERE clause terms into the form shown above as possible.
|
|
// ^The aConstraint[] array only reports WHERE clause terms that are
|
|
// relevant to the particular virtual table being queried.
|
|
//
|
|
// ^Information about the ORDER BY clause is stored in aOrderBy[].
|
|
// ^Each term of aOrderBy records a column of the ORDER BY clause.
|
|
//
|
|
// The colUsed field indicates which columns of the virtual table may be
|
|
// required by the current scan. Virtual table columns are numbered from
|
|
// zero in the order in which they appear within the CREATE TABLE statement
|
|
// passed to sqlite3_declare_vtab(). For the first 63 columns (columns 0-62),
|
|
// the corresponding bit is set within the colUsed mask if the column may be
|
|
// required by SQLite. If the table has at least 64 columns and any column
|
|
// to the right of the first 63 is required, then bit 63 of colUsed is also
|
|
// set. In other words, column iCol may be required if the expression
|
|
// (colUsed & ((sqlite3_uint64)1 << (iCol>=63 ? 63 : iCol))) evaluates to
|
|
// non-zero.
|
|
//
|
|
// The [xBestIndex] method must fill aConstraintUsage[] with information
|
|
// about what parameters to pass to xFilter. ^If argvIndex>0 then
|
|
// the right-hand side of the corresponding aConstraint[] is evaluated
|
|
// and becomes the argvIndex-th entry in argv. ^(If aConstraintUsage[].omit
|
|
// is true, then the constraint is assumed to be fully handled by the
|
|
// virtual table and might not be checked again by the byte code.)^ ^(The
|
|
// aConstraintUsage[].omit flag is an optimization hint. When the omit flag
|
|
// is left in its default setting of false, the constraint will always be
|
|
// checked separately in byte code. If the omit flag is change to true, then
|
|
// the constraint may or may not be checked in byte code. In other words,
|
|
// when the omit flag is true there is no guarantee that the constraint will
|
|
// not be checked again using byte code.)^
|
|
//
|
|
// ^The idxNum and idxPtr values are recorded and passed into the
|
|
// [xFilter] method.
|
|
// ^[sqlite3_free()] is used to free idxPtr if and only if
|
|
// needToFreeIdxPtr is true.
|
|
//
|
|
// ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in
|
|
// the correct order to satisfy the ORDER BY clause so that no separate
|
|
// sorting step is required.
|
|
//
|
|
// ^The estimatedCost value is an estimate of the cost of a particular
|
|
// strategy. A cost of N indicates that the cost of the strategy is similar
|
|
// to a linear scan of an SQLite table with N rows. A cost of log(N)
|
|
// indicates that the expense of the operation is similar to that of a
|
|
// binary search on a unique indexed field of an SQLite table with N rows.
|
|
//
|
|
// ^The estimatedRows value is an estimate of the number of rows that
|
|
// will be returned by the strategy.
|
|
//
|
|
// The xBestIndex method may optionally populate the idxFlags field with a
|
|
// mask of SQLITE_INDEX_SCAN_* flags. Currently there is only one such flag -
|
|
// SQLITE_INDEX_SCAN_UNIQUE. If the xBestIndex method sets this flag, SQLite
|
|
// assumes that the strategy may visit at most one row.
|
|
//
|
|
// Additionally, if xBestIndex sets the SQLITE_INDEX_SCAN_UNIQUE flag, then
|
|
// SQLite also assumes that if a call to the xUpdate() method is made as
|
|
// part of the same statement to delete or update a virtual table row and the
|
|
// implementation returns SQLITE_CONSTRAINT, then there is no need to rollback
|
|
// any database changes. In other words, if the xUpdate() returns
|
|
// SQLITE_CONSTRAINT, the database contents must be exactly as they were
|
|
// before xUpdate was called. By contrast, if SQLITE_INDEX_SCAN_UNIQUE is not
|
|
// set and xUpdate returns SQLITE_CONSTRAINT, any database changes made by
|
|
// the xUpdate method are automatically rolled back by SQLite.
|
|
//
|
|
// IMPORTANT: The estimatedRows field was added to the sqlite3_index_info
|
|
// structure for SQLite [version 3.8.2] ([dateof:3.8.2]).
|
|
// If a virtual table extension is
|
|
// used with an SQLite version earlier than 3.8.2, the results of attempting
|
|
// to read or write the estimatedRows field are undefined (but are likely
|
|
// to include crashing the application). The estimatedRows field should
|
|
// therefore only be used if [sqlite3_libversion_number()] returns a
|
|
// value greater than or equal to 3008002. Similarly, the idxFlags field
|
|
// was added for [version 3.9.0] ([dateof:3.9.0]).
|
|
// It may therefore only be used if
|
|
// sqlite3_libversion_number() returns a value greater than or equal to
|
|
// 3009000.
|
|
type sqlite3_index_constraint = struct {
|
|
iColumn int32
|
|
op uint8
|
|
usable uint8
|
|
_ [2]byte
|
|
iTermOffset int32
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6938:9 */
|
|
|
|
// CAPI3REF: Virtual Table Indexing Information
|
|
// KEYWORDS: sqlite3_index_info
|
|
//
|
|
// The sqlite3_index_info structure and its substructures is used as part
|
|
// of the [virtual table] interface to
|
|
// pass information into and receive the reply from the [xBestIndex]
|
|
// method of a [virtual table module]. The fields under **Inputs** are the
|
|
// inputs to xBestIndex and are read-only. xBestIndex inserts its
|
|
// results into the **Outputs** fields.
|
|
//
|
|
// ^(The aConstraint[] array records WHERE clause constraints of the form:
|
|
//
|
|
// <blockquote>column OP expr</blockquote>
|
|
//
|
|
// where OP is =, <, <=, >, or >=.)^ ^(The particular operator is
|
|
// stored in aConstraint[].op using one of the
|
|
// [SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_ values].)^
|
|
// ^(The index of the column is stored in
|
|
// aConstraint[].iColumn.)^ ^(aConstraint[].usable is TRUE if the
|
|
// expr on the right-hand side can be evaluated (and thus the constraint
|
|
// is usable) and false if it cannot.)^
|
|
//
|
|
// ^The optimizer automatically inverts terms of the form "expr OP column"
|
|
// and makes other simplifications to the WHERE clause in an attempt to
|
|
// get as many WHERE clause terms into the form shown above as possible.
|
|
// ^The aConstraint[] array only reports WHERE clause terms that are
|
|
// relevant to the particular virtual table being queried.
|
|
//
|
|
// ^Information about the ORDER BY clause is stored in aOrderBy[].
|
|
// ^Each term of aOrderBy records a column of the ORDER BY clause.
|
|
//
|
|
// The colUsed field indicates which columns of the virtual table may be
|
|
// required by the current scan. Virtual table columns are numbered from
|
|
// zero in the order in which they appear within the CREATE TABLE statement
|
|
// passed to sqlite3_declare_vtab(). For the first 63 columns (columns 0-62),
|
|
// the corresponding bit is set within the colUsed mask if the column may be
|
|
// required by SQLite. If the table has at least 64 columns and any column
|
|
// to the right of the first 63 is required, then bit 63 of colUsed is also
|
|
// set. In other words, column iCol may be required if the expression
|
|
// (colUsed & ((sqlite3_uint64)1 << (iCol>=63 ? 63 : iCol))) evaluates to
|
|
// non-zero.
|
|
//
|
|
// The [xBestIndex] method must fill aConstraintUsage[] with information
|
|
// about what parameters to pass to xFilter. ^If argvIndex>0 then
|
|
// the right-hand side of the corresponding aConstraint[] is evaluated
|
|
// and becomes the argvIndex-th entry in argv. ^(If aConstraintUsage[].omit
|
|
// is true, then the constraint is assumed to be fully handled by the
|
|
// virtual table and might not be checked again by the byte code.)^ ^(The
|
|
// aConstraintUsage[].omit flag is an optimization hint. When the omit flag
|
|
// is left in its default setting of false, the constraint will always be
|
|
// checked separately in byte code. If the omit flag is change to true, then
|
|
// the constraint may or may not be checked in byte code. In other words,
|
|
// when the omit flag is true there is no guarantee that the constraint will
|
|
// not be checked again using byte code.)^
|
|
//
|
|
// ^The idxNum and idxPtr values are recorded and passed into the
|
|
// [xFilter] method.
|
|
// ^[sqlite3_free()] is used to free idxPtr if and only if
|
|
// needToFreeIdxPtr is true.
|
|
//
|
|
// ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in
|
|
// the correct order to satisfy the ORDER BY clause so that no separate
|
|
// sorting step is required.
|
|
//
|
|
// ^The estimatedCost value is an estimate of the cost of a particular
|
|
// strategy. A cost of N indicates that the cost of the strategy is similar
|
|
// to a linear scan of an SQLite table with N rows. A cost of log(N)
|
|
// indicates that the expense of the operation is similar to that of a
|
|
// binary search on a unique indexed field of an SQLite table with N rows.
|
|
//
|
|
// ^The estimatedRows value is an estimate of the number of rows that
|
|
// will be returned by the strategy.
|
|
//
|
|
// The xBestIndex method may optionally populate the idxFlags field with a
|
|
// mask of SQLITE_INDEX_SCAN_* flags. Currently there is only one such flag -
|
|
// SQLITE_INDEX_SCAN_UNIQUE. If the xBestIndex method sets this flag, SQLite
|
|
// assumes that the strategy may visit at most one row.
|
|
//
|
|
// Additionally, if xBestIndex sets the SQLITE_INDEX_SCAN_UNIQUE flag, then
|
|
// SQLite also assumes that if a call to the xUpdate() method is made as
|
|
// part of the same statement to delete or update a virtual table row and the
|
|
// implementation returns SQLITE_CONSTRAINT, then there is no need to rollback
|
|
// any database changes. In other words, if the xUpdate() returns
|
|
// SQLITE_CONSTRAINT, the database contents must be exactly as they were
|
|
// before xUpdate was called. By contrast, if SQLITE_INDEX_SCAN_UNIQUE is not
|
|
// set and xUpdate returns SQLITE_CONSTRAINT, any database changes made by
|
|
// the xUpdate method are automatically rolled back by SQLite.
|
|
//
|
|
// IMPORTANT: The estimatedRows field was added to the sqlite3_index_info
|
|
// structure for SQLite [version 3.8.2] ([dateof:3.8.2]).
|
|
// If a virtual table extension is
|
|
// used with an SQLite version earlier than 3.8.2, the results of attempting
|
|
// to read or write the estimatedRows field are undefined (but are likely
|
|
// to include crashing the application). The estimatedRows field should
|
|
// therefore only be used if [sqlite3_libversion_number()] returns a
|
|
// value greater than or equal to 3008002. Similarly, the idxFlags field
|
|
// was added for [version 3.9.0] ([dateof:3.9.0]).
|
|
// It may therefore only be used if
|
|
// sqlite3_libversion_number() returns a value greater than or equal to
|
|
// 3009000.
|
|
type sqlite3_index_orderby = struct {
|
|
iColumn int32
|
|
desc uint8
|
|
_ [3]byte
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6938:9 */
|
|
|
|
// CAPI3REF: Virtual Table Indexing Information
|
|
// KEYWORDS: sqlite3_index_info
|
|
//
|
|
// The sqlite3_index_info structure and its substructures is used as part
|
|
// of the [virtual table] interface to
|
|
// pass information into and receive the reply from the [xBestIndex]
|
|
// method of a [virtual table module]. The fields under **Inputs** are the
|
|
// inputs to xBestIndex and are read-only. xBestIndex inserts its
|
|
// results into the **Outputs** fields.
|
|
//
|
|
// ^(The aConstraint[] array records WHERE clause constraints of the form:
|
|
//
|
|
// <blockquote>column OP expr</blockquote>
|
|
//
|
|
// where OP is =, <, <=, >, or >=.)^ ^(The particular operator is
|
|
// stored in aConstraint[].op using one of the
|
|
// [SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_ values].)^
|
|
// ^(The index of the column is stored in
|
|
// aConstraint[].iColumn.)^ ^(aConstraint[].usable is TRUE if the
|
|
// expr on the right-hand side can be evaluated (and thus the constraint
|
|
// is usable) and false if it cannot.)^
|
|
//
|
|
// ^The optimizer automatically inverts terms of the form "expr OP column"
|
|
// and makes other simplifications to the WHERE clause in an attempt to
|
|
// get as many WHERE clause terms into the form shown above as possible.
|
|
// ^The aConstraint[] array only reports WHERE clause terms that are
|
|
// relevant to the particular virtual table being queried.
|
|
//
|
|
// ^Information about the ORDER BY clause is stored in aOrderBy[].
|
|
// ^Each term of aOrderBy records a column of the ORDER BY clause.
|
|
//
|
|
// The colUsed field indicates which columns of the virtual table may be
|
|
// required by the current scan. Virtual table columns are numbered from
|
|
// zero in the order in which they appear within the CREATE TABLE statement
|
|
// passed to sqlite3_declare_vtab(). For the first 63 columns (columns 0-62),
|
|
// the corresponding bit is set within the colUsed mask if the column may be
|
|
// required by SQLite. If the table has at least 64 columns and any column
|
|
// to the right of the first 63 is required, then bit 63 of colUsed is also
|
|
// set. In other words, column iCol may be required if the expression
|
|
// (colUsed & ((sqlite3_uint64)1 << (iCol>=63 ? 63 : iCol))) evaluates to
|
|
// non-zero.
|
|
//
|
|
// The [xBestIndex] method must fill aConstraintUsage[] with information
|
|
// about what parameters to pass to xFilter. ^If argvIndex>0 then
|
|
// the right-hand side of the corresponding aConstraint[] is evaluated
|
|
// and becomes the argvIndex-th entry in argv. ^(If aConstraintUsage[].omit
|
|
// is true, then the constraint is assumed to be fully handled by the
|
|
// virtual table and might not be checked again by the byte code.)^ ^(The
|
|
// aConstraintUsage[].omit flag is an optimization hint. When the omit flag
|
|
// is left in its default setting of false, the constraint will always be
|
|
// checked separately in byte code. If the omit flag is change to true, then
|
|
// the constraint may or may not be checked in byte code. In other words,
|
|
// when the omit flag is true there is no guarantee that the constraint will
|
|
// not be checked again using byte code.)^
|
|
//
|
|
// ^The idxNum and idxPtr values are recorded and passed into the
|
|
// [xFilter] method.
|
|
// ^[sqlite3_free()] is used to free idxPtr if and only if
|
|
// needToFreeIdxPtr is true.
|
|
//
|
|
// ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in
|
|
// the correct order to satisfy the ORDER BY clause so that no separate
|
|
// sorting step is required.
|
|
//
|
|
// ^The estimatedCost value is an estimate of the cost of a particular
|
|
// strategy. A cost of N indicates that the cost of the strategy is similar
|
|
// to a linear scan of an SQLite table with N rows. A cost of log(N)
|
|
// indicates that the expense of the operation is similar to that of a
|
|
// binary search on a unique indexed field of an SQLite table with N rows.
|
|
//
|
|
// ^The estimatedRows value is an estimate of the number of rows that
|
|
// will be returned by the strategy.
|
|
//
|
|
// The xBestIndex method may optionally populate the idxFlags field with a
|
|
// mask of SQLITE_INDEX_SCAN_* flags. Currently there is only one such flag -
|
|
// SQLITE_INDEX_SCAN_UNIQUE. If the xBestIndex method sets this flag, SQLite
|
|
// assumes that the strategy may visit at most one row.
|
|
//
|
|
// Additionally, if xBestIndex sets the SQLITE_INDEX_SCAN_UNIQUE flag, then
|
|
// SQLite also assumes that if a call to the xUpdate() method is made as
|
|
// part of the same statement to delete or update a virtual table row and the
|
|
// implementation returns SQLITE_CONSTRAINT, then there is no need to rollback
|
|
// any database changes. In other words, if the xUpdate() returns
|
|
// SQLITE_CONSTRAINT, the database contents must be exactly as they were
|
|
// before xUpdate was called. By contrast, if SQLITE_INDEX_SCAN_UNIQUE is not
|
|
// set and xUpdate returns SQLITE_CONSTRAINT, any database changes made by
|
|
// the xUpdate method are automatically rolled back by SQLite.
|
|
//
|
|
// IMPORTANT: The estimatedRows field was added to the sqlite3_index_info
|
|
// structure for SQLite [version 3.8.2] ([dateof:3.8.2]).
|
|
// If a virtual table extension is
|
|
// used with an SQLite version earlier than 3.8.2, the results of attempting
|
|
// to read or write the estimatedRows field are undefined (but are likely
|
|
// to include crashing the application). The estimatedRows field should
|
|
// therefore only be used if [sqlite3_libversion_number()] returns a
|
|
// value greater than or equal to 3008002. Similarly, the idxFlags field
|
|
// was added for [version 3.9.0] ([dateof:3.9.0]).
|
|
// It may therefore only be used if
|
|
// sqlite3_libversion_number() returns a value greater than or equal to
|
|
// 3009000.
|
|
type sqlite3_index_constraint_usage = struct {
|
|
argvIndex int32
|
|
omit uint8
|
|
_ [3]byte
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6938:9 */
|
|
|
|
// CAPI3REF: Mutex Methods Object
|
|
//
|
|
// An instance of this structure defines the low-level routines
|
|
// used to allocate and use mutexes.
|
|
//
|
|
// Usually, the default mutex implementations provided by SQLite are
|
|
// sufficient, however the application has the option of substituting a custom
|
|
// implementation for specialized deployments or systems for which SQLite
|
|
// does not provide a suitable implementation. In this case, the application
|
|
// creates and populates an instance of this structure to pass
|
|
// to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option.
|
|
// Additionally, an instance of this structure can be used as an
|
|
// output variable when querying the system for the current mutex
|
|
// implementation, using the [SQLITE_CONFIG_GETMUTEX] option.
|
|
//
|
|
// ^The xMutexInit method defined by this structure is invoked as
|
|
// part of system initialization by the sqlite3_initialize() function.
|
|
// ^The xMutexInit routine is called by SQLite exactly once for each
|
|
// effective call to [sqlite3_initialize()].
|
|
//
|
|
// ^The xMutexEnd method defined by this structure is invoked as
|
|
// part of system shutdown by the sqlite3_shutdown() function. The
|
|
// implementation of this method is expected to release all outstanding
|
|
// resources obtained by the mutex methods implementation, especially
|
|
// those obtained by the xMutexInit method. ^The xMutexEnd()
|
|
// interface is invoked exactly once for each call to [sqlite3_shutdown()].
|
|
//
|
|
// ^(The remaining seven methods defined by this structure (xMutexAlloc,
|
|
// xMutexFree, xMutexEnter, xMutexTry, xMutexLeave, xMutexHeld and
|
|
// xMutexNotheld) implement the following interfaces (respectively):
|
|
//
|
|
// <ul>
|
|
// <li> [sqlite3_mutex_alloc()] </li>
|
|
// <li> [sqlite3_mutex_free()] </li>
|
|
// <li> [sqlite3_mutex_enter()] </li>
|
|
// <li> [sqlite3_mutex_try()] </li>
|
|
// <li> [sqlite3_mutex_leave()] </li>
|
|
// <li> [sqlite3_mutex_held()] </li>
|
|
// <li> [sqlite3_mutex_notheld()] </li>
|
|
// </ul>)^
|
|
//
|
|
// The only difference is that the public sqlite3_XXX functions enumerated
|
|
// above silently ignore any invocations that pass a NULL pointer instead
|
|
// of a valid mutex handle. The implementations of the methods defined
|
|
// by this structure are not required to handle this case. The results
|
|
// of passing a NULL pointer instead of a valid mutex handle are undefined
|
|
// (i.e. it is acceptable to provide an implementation that segfaults if
|
|
// it is passed a NULL pointer).
|
|
//
|
|
// The xMutexInit() method must be threadsafe. It must be harmless to
|
|
// invoke xMutexInit() multiple times within the same process and without
|
|
// intervening calls to xMutexEnd(). Second and subsequent calls to
|
|
// xMutexInit() must be no-ops.
|
|
//
|
|
// xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()]
|
|
// and its associates). Similarly, xMutexAlloc() must not use SQLite memory
|
|
// allocation for a static mutex. ^However xMutexAlloc() may use SQLite
|
|
// memory allocation for a fast or recursive mutex.
|
|
//
|
|
// ^SQLite will invoke the xMutexEnd() method when [sqlite3_shutdown()] is
|
|
// called, but only if the prior call to xMutexInit returned SQLITE_OK.
|
|
// If xMutexInit fails in any way, it is expected to clean up after itself
|
|
// prior to returning.
|
|
type sqlite3_mutex_methods1 = struct {
|
|
xMutexInit uintptr
|
|
xMutexEnd uintptr
|
|
xMutexAlloc uintptr
|
|
xMutexFree uintptr
|
|
xMutexEnter uintptr
|
|
xMutexTry uintptr
|
|
xMutexLeave uintptr
|
|
xMutexHeld uintptr
|
|
xMutexNotheld uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:7804:9 */
|
|
|
|
// CAPI3REF: Mutex Methods Object
|
|
//
|
|
// An instance of this structure defines the low-level routines
|
|
// used to allocate and use mutexes.
|
|
//
|
|
// Usually, the default mutex implementations provided by SQLite are
|
|
// sufficient, however the application has the option of substituting a custom
|
|
// implementation for specialized deployments or systems for which SQLite
|
|
// does not provide a suitable implementation. In this case, the application
|
|
// creates and populates an instance of this structure to pass
|
|
// to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option.
|
|
// Additionally, an instance of this structure can be used as an
|
|
// output variable when querying the system for the current mutex
|
|
// implementation, using the [SQLITE_CONFIG_GETMUTEX] option.
|
|
//
|
|
// ^The xMutexInit method defined by this structure is invoked as
|
|
// part of system initialization by the sqlite3_initialize() function.
|
|
// ^The xMutexInit routine is called by SQLite exactly once for each
|
|
// effective call to [sqlite3_initialize()].
|
|
//
|
|
// ^The xMutexEnd method defined by this structure is invoked as
|
|
// part of system shutdown by the sqlite3_shutdown() function. The
|
|
// implementation of this method is expected to release all outstanding
|
|
// resources obtained by the mutex methods implementation, especially
|
|
// those obtained by the xMutexInit method. ^The xMutexEnd()
|
|
// interface is invoked exactly once for each call to [sqlite3_shutdown()].
|
|
//
|
|
// ^(The remaining seven methods defined by this structure (xMutexAlloc,
|
|
// xMutexFree, xMutexEnter, xMutexTry, xMutexLeave, xMutexHeld and
|
|
// xMutexNotheld) implement the following interfaces (respectively):
|
|
//
|
|
// <ul>
|
|
// <li> [sqlite3_mutex_alloc()] </li>
|
|
// <li> [sqlite3_mutex_free()] </li>
|
|
// <li> [sqlite3_mutex_enter()] </li>
|
|
// <li> [sqlite3_mutex_try()] </li>
|
|
// <li> [sqlite3_mutex_leave()] </li>
|
|
// <li> [sqlite3_mutex_held()] </li>
|
|
// <li> [sqlite3_mutex_notheld()] </li>
|
|
// </ul>)^
|
|
//
|
|
// The only difference is that the public sqlite3_XXX functions enumerated
|
|
// above silently ignore any invocations that pass a NULL pointer instead
|
|
// of a valid mutex handle. The implementations of the methods defined
|
|
// by this structure are not required to handle this case. The results
|
|
// of passing a NULL pointer instead of a valid mutex handle are undefined
|
|
// (i.e. it is acceptable to provide an implementation that segfaults if
|
|
// it is passed a NULL pointer).
|
|
//
|
|
// The xMutexInit() method must be threadsafe. It must be harmless to
|
|
// invoke xMutexInit() multiple times within the same process and without
|
|
// intervening calls to xMutexEnd(). Second and subsequent calls to
|
|
// xMutexInit() must be no-ops.
|
|
//
|
|
// xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()]
|
|
// and its associates). Similarly, xMutexAlloc() must not use SQLite memory
|
|
// allocation for a static mutex. ^However xMutexAlloc() may use SQLite
|
|
// memory allocation for a fast or recursive mutex.
|
|
//
|
|
// ^SQLite will invoke the xMutexEnd() method when [sqlite3_shutdown()] is
|
|
// called, but only if the prior call to xMutexInit returned SQLITE_OK.
|
|
// If xMutexInit fails in any way, it is expected to clean up after itself
|
|
// prior to returning.
|
|
type sqlite3_mutex_methods = sqlite3_mutex_methods1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:7804:38 */
|
|
|
|
// CAPI3REF: Custom Page Cache Object
|
|
//
|
|
// The sqlite3_pcache_page object represents a single page in the
|
|
// page cache. The page cache will allocate instances of this
|
|
// object. Various methods of the page cache use pointers to instances
|
|
// of this object as parameters or as their return value.
|
|
//
|
|
// See [sqlite3_pcache_methods2] for additional information.
|
|
type sqlite3_pcache_page1 = struct {
|
|
pBuf uintptr
|
|
pExtra uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8573:9 */
|
|
|
|
// CAPI3REF: Custom Page Cache Object
|
|
//
|
|
// The sqlite3_pcache_page object represents a single page in the
|
|
// page cache. The page cache will allocate instances of this
|
|
// object. Various methods of the page cache use pointers to instances
|
|
// of this object as parameters or as their return value.
|
|
//
|
|
// See [sqlite3_pcache_methods2] for additional information.
|
|
type sqlite3_pcache_page = sqlite3_pcache_page1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8573:36 */
|
|
|
|
// CAPI3REF: Application Defined Page Cache.
|
|
// KEYWORDS: {page cache}
|
|
//
|
|
// ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE2], ...) interface can
|
|
// register an alternative page cache implementation by passing in an
|
|
// instance of the sqlite3_pcache_methods2 structure.)^
|
|
// In many applications, most of the heap memory allocated by
|
|
// SQLite is used for the page cache.
|
|
// By implementing a
|
|
// custom page cache using this API, an application can better control
|
|
// the amount of memory consumed by SQLite, the way in which
|
|
// that memory is allocated and released, and the policies used to
|
|
// determine exactly which parts of a database file are cached and for
|
|
// how long.
|
|
//
|
|
// The alternative page cache mechanism is an
|
|
// extreme measure that is only needed by the most demanding applications.
|
|
// The built-in page cache is recommended for most uses.
|
|
//
|
|
// ^(The contents of the sqlite3_pcache_methods2 structure are copied to an
|
|
// internal buffer by SQLite within the call to [sqlite3_config]. Hence
|
|
// the application may discard the parameter after the call to
|
|
// [sqlite3_config()] returns.)^
|
|
//
|
|
// [[the xInit() page cache method]]
|
|
// ^(The xInit() method is called once for each effective
|
|
// call to [sqlite3_initialize()])^
|
|
// (usually only once during the lifetime of the process). ^(The xInit()
|
|
// method is passed a copy of the sqlite3_pcache_methods2.pArg value.)^
|
|
// The intent of the xInit() method is to set up global data structures
|
|
// required by the custom page cache implementation.
|
|
// ^(If the xInit() method is NULL, then the
|
|
// built-in default page cache is used instead of the application defined
|
|
// page cache.)^
|
|
//
|
|
// [[the xShutdown() page cache method]]
|
|
// ^The xShutdown() method is called by [sqlite3_shutdown()].
|
|
// It can be used to clean up
|
|
// any outstanding resources before process shutdown, if required.
|
|
// ^The xShutdown() method may be NULL.
|
|
//
|
|
// ^SQLite automatically serializes calls to the xInit method,
|
|
// so the xInit method need not be threadsafe. ^The
|
|
// xShutdown method is only called from [sqlite3_shutdown()] so it does
|
|
// not need to be threadsafe either. All other methods must be threadsafe
|
|
// in multithreaded applications.
|
|
//
|
|
// ^SQLite will never invoke xInit() more than once without an intervening
|
|
// call to xShutdown().
|
|
//
|
|
// [[the xCreate() page cache methods]]
|
|
// ^SQLite invokes the xCreate() method to construct a new cache instance.
|
|
// SQLite will typically create one cache instance for each open database file,
|
|
// though this is not guaranteed. ^The
|
|
// first parameter, szPage, is the size in bytes of the pages that must
|
|
// be allocated by the cache. ^szPage will always a power of two. ^The
|
|
// second parameter szExtra is a number of bytes of extra storage
|
|
// associated with each page cache entry. ^The szExtra parameter will
|
|
// a number less than 250. SQLite will use the
|
|
// extra szExtra bytes on each page to store metadata about the underlying
|
|
// database page on disk. The value passed into szExtra depends
|
|
// on the SQLite version, the target platform, and how SQLite was compiled.
|
|
// ^The third argument to xCreate(), bPurgeable, is true if the cache being
|
|
// created will be used to cache database pages of a file stored on disk, or
|
|
// false if it is used for an in-memory database. The cache implementation
|
|
// does not have to do anything special based with the value of bPurgeable;
|
|
// it is purely advisory. ^On a cache where bPurgeable is false, SQLite will
|
|
// never invoke xUnpin() except to deliberately delete a page.
|
|
// ^In other words, calls to xUnpin() on a cache with bPurgeable set to
|
|
// false will always have the "discard" flag set to true.
|
|
// ^Hence, a cache created with bPurgeable false will
|
|
// never contain any unpinned pages.
|
|
//
|
|
// [[the xCachesize() page cache method]]
|
|
// ^(The xCachesize() method may be called at any time by SQLite to set the
|
|
// suggested maximum cache-size (number of pages stored by) the cache
|
|
// instance passed as the first argument. This is the value configured using
|
|
// the SQLite "[PRAGMA cache_size]" command.)^ As with the bPurgeable
|
|
// parameter, the implementation is not required to do anything with this
|
|
// value; it is advisory only.
|
|
//
|
|
// [[the xPagecount() page cache methods]]
|
|
// The xPagecount() method must return the number of pages currently
|
|
// stored in the cache, both pinned and unpinned.
|
|
//
|
|
// [[the xFetch() page cache methods]]
|
|
// The xFetch() method locates a page in the cache and returns a pointer to
|
|
// an sqlite3_pcache_page object associated with that page, or a NULL pointer.
|
|
// The pBuf element of the returned sqlite3_pcache_page object will be a
|
|
// pointer to a buffer of szPage bytes used to store the content of a
|
|
// single database page. The pExtra element of sqlite3_pcache_page will be
|
|
// a pointer to the szExtra bytes of extra storage that SQLite has requested
|
|
// for each entry in the page cache.
|
|
//
|
|
// The page to be fetched is determined by the key. ^The minimum key value
|
|
// is 1. After it has been retrieved using xFetch, the page is considered
|
|
// to be "pinned".
|
|
//
|
|
// If the requested page is already in the page cache, then the page cache
|
|
// implementation must return a pointer to the page buffer with its content
|
|
// intact. If the requested page is not already in the cache, then the
|
|
// cache implementation should use the value of the createFlag
|
|
// parameter to help it determined what action to take:
|
|
//
|
|
// <table border=1 width=85% align=center>
|
|
// <tr><th> createFlag <th> Behavior when page is not already in cache
|
|
// <tr><td> 0 <td> Do not allocate a new page. Return NULL.
|
|
// <tr><td> 1 <td> Allocate a new page if it easy and convenient to do so.
|
|
// Otherwise return NULL.
|
|
// <tr><td> 2 <td> Make every effort to allocate a new page. Only return
|
|
// NULL if allocating a new page is effectively impossible.
|
|
// </table>
|
|
//
|
|
// ^(SQLite will normally invoke xFetch() with a createFlag of 0 or 1. SQLite
|
|
// will only use a createFlag of 2 after a prior call with a createFlag of 1
|
|
// failed.)^ In between the xFetch() calls, SQLite may
|
|
// attempt to unpin one or more cache pages by spilling the content of
|
|
// pinned pages to disk and synching the operating system disk cache.
|
|
//
|
|
// [[the xUnpin() page cache method]]
|
|
// ^xUnpin() is called by SQLite with a pointer to a currently pinned page
|
|
// as its second argument. If the third parameter, discard, is non-zero,
|
|
// then the page must be evicted from the cache.
|
|
// ^If the discard parameter is
|
|
// zero, then the page may be discarded or retained at the discretion of
|
|
// page cache implementation. ^The page cache implementation
|
|
// may choose to evict unpinned pages at any time.
|
|
//
|
|
// The cache must not perform any reference counting. A single
|
|
// call to xUnpin() unpins the page regardless of the number of prior calls
|
|
// to xFetch().
|
|
//
|
|
// [[the xRekey() page cache methods]]
|
|
// The xRekey() method is used to change the key value associated with the
|
|
// page passed as the second argument. If the cache
|
|
// previously contains an entry associated with newKey, it must be
|
|
// discarded. ^Any prior cache entry associated with newKey is guaranteed not
|
|
// to be pinned.
|
|
//
|
|
// When SQLite calls the xTruncate() method, the cache must discard all
|
|
// existing cache entries with page numbers (keys) greater than or equal
|
|
// to the value of the iLimit parameter passed to xTruncate(). If any
|
|
// of these pages are pinned, they are implicitly unpinned, meaning that
|
|
// they can be safely discarded.
|
|
//
|
|
// [[the xDestroy() page cache method]]
|
|
// ^The xDestroy() method is used to delete a cache allocated by xCreate().
|
|
// All resources associated with the specified cache should be freed. ^After
|
|
// calling the xDestroy() method, SQLite considers the [sqlite3_pcache*]
|
|
// handle invalid, and will not use it with any other sqlite3_pcache_methods2
|
|
// functions.
|
|
//
|
|
// [[the xShrink() page cache method]]
|
|
// ^SQLite invokes the xShrink() method when it wants the page cache to
|
|
// free up as much of heap memory as possible. The page cache implementation
|
|
// is not obligated to free any memory, but well-behaved implementations should
|
|
// do their best.
|
|
type sqlite3_pcache_methods21 = struct {
|
|
iVersion int32
|
|
_ [4]byte
|
|
pArg uintptr
|
|
xInit uintptr
|
|
xShutdown uintptr
|
|
xCreate uintptr
|
|
xCachesize uintptr
|
|
xPagecount uintptr
|
|
xFetch uintptr
|
|
xUnpin uintptr
|
|
xRekey uintptr
|
|
xTruncate uintptr
|
|
xDestroy uintptr
|
|
xShrink uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8738:9 */
|
|
|
|
// CAPI3REF: Application Defined Page Cache.
|
|
// KEYWORDS: {page cache}
|
|
//
|
|
// ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE2], ...) interface can
|
|
// register an alternative page cache implementation by passing in an
|
|
// instance of the sqlite3_pcache_methods2 structure.)^
|
|
// In many applications, most of the heap memory allocated by
|
|
// SQLite is used for the page cache.
|
|
// By implementing a
|
|
// custom page cache using this API, an application can better control
|
|
// the amount of memory consumed by SQLite, the way in which
|
|
// that memory is allocated and released, and the policies used to
|
|
// determine exactly which parts of a database file are cached and for
|
|
// how long.
|
|
//
|
|
// The alternative page cache mechanism is an
|
|
// extreme measure that is only needed by the most demanding applications.
|
|
// The built-in page cache is recommended for most uses.
|
|
//
|
|
// ^(The contents of the sqlite3_pcache_methods2 structure are copied to an
|
|
// internal buffer by SQLite within the call to [sqlite3_config]. Hence
|
|
// the application may discard the parameter after the call to
|
|
// [sqlite3_config()] returns.)^
|
|
//
|
|
// [[the xInit() page cache method]]
|
|
// ^(The xInit() method is called once for each effective
|
|
// call to [sqlite3_initialize()])^
|
|
// (usually only once during the lifetime of the process). ^(The xInit()
|
|
// method is passed a copy of the sqlite3_pcache_methods2.pArg value.)^
|
|
// The intent of the xInit() method is to set up global data structures
|
|
// required by the custom page cache implementation.
|
|
// ^(If the xInit() method is NULL, then the
|
|
// built-in default page cache is used instead of the application defined
|
|
// page cache.)^
|
|
//
|
|
// [[the xShutdown() page cache method]]
|
|
// ^The xShutdown() method is called by [sqlite3_shutdown()].
|
|
// It can be used to clean up
|
|
// any outstanding resources before process shutdown, if required.
|
|
// ^The xShutdown() method may be NULL.
|
|
//
|
|
// ^SQLite automatically serializes calls to the xInit method,
|
|
// so the xInit method need not be threadsafe. ^The
|
|
// xShutdown method is only called from [sqlite3_shutdown()] so it does
|
|
// not need to be threadsafe either. All other methods must be threadsafe
|
|
// in multithreaded applications.
|
|
//
|
|
// ^SQLite will never invoke xInit() more than once without an intervening
|
|
// call to xShutdown().
|
|
//
|
|
// [[the xCreate() page cache methods]]
|
|
// ^SQLite invokes the xCreate() method to construct a new cache instance.
|
|
// SQLite will typically create one cache instance for each open database file,
|
|
// though this is not guaranteed. ^The
|
|
// first parameter, szPage, is the size in bytes of the pages that must
|
|
// be allocated by the cache. ^szPage will always a power of two. ^The
|
|
// second parameter szExtra is a number of bytes of extra storage
|
|
// associated with each page cache entry. ^The szExtra parameter will
|
|
// a number less than 250. SQLite will use the
|
|
// extra szExtra bytes on each page to store metadata about the underlying
|
|
// database page on disk. The value passed into szExtra depends
|
|
// on the SQLite version, the target platform, and how SQLite was compiled.
|
|
// ^The third argument to xCreate(), bPurgeable, is true if the cache being
|
|
// created will be used to cache database pages of a file stored on disk, or
|
|
// false if it is used for an in-memory database. The cache implementation
|
|
// does not have to do anything special based with the value of bPurgeable;
|
|
// it is purely advisory. ^On a cache where bPurgeable is false, SQLite will
|
|
// never invoke xUnpin() except to deliberately delete a page.
|
|
// ^In other words, calls to xUnpin() on a cache with bPurgeable set to
|
|
// false will always have the "discard" flag set to true.
|
|
// ^Hence, a cache created with bPurgeable false will
|
|
// never contain any unpinned pages.
|
|
//
|
|
// [[the xCachesize() page cache method]]
|
|
// ^(The xCachesize() method may be called at any time by SQLite to set the
|
|
// suggested maximum cache-size (number of pages stored by) the cache
|
|
// instance passed as the first argument. This is the value configured using
|
|
// the SQLite "[PRAGMA cache_size]" command.)^ As with the bPurgeable
|
|
// parameter, the implementation is not required to do anything with this
|
|
// value; it is advisory only.
|
|
//
|
|
// [[the xPagecount() page cache methods]]
|
|
// The xPagecount() method must return the number of pages currently
|
|
// stored in the cache, both pinned and unpinned.
|
|
//
|
|
// [[the xFetch() page cache methods]]
|
|
// The xFetch() method locates a page in the cache and returns a pointer to
|
|
// an sqlite3_pcache_page object associated with that page, or a NULL pointer.
|
|
// The pBuf element of the returned sqlite3_pcache_page object will be a
|
|
// pointer to a buffer of szPage bytes used to store the content of a
|
|
// single database page. The pExtra element of sqlite3_pcache_page will be
|
|
// a pointer to the szExtra bytes of extra storage that SQLite has requested
|
|
// for each entry in the page cache.
|
|
//
|
|
// The page to be fetched is determined by the key. ^The minimum key value
|
|
// is 1. After it has been retrieved using xFetch, the page is considered
|
|
// to be "pinned".
|
|
//
|
|
// If the requested page is already in the page cache, then the page cache
|
|
// implementation must return a pointer to the page buffer with its content
|
|
// intact. If the requested page is not already in the cache, then the
|
|
// cache implementation should use the value of the createFlag
|
|
// parameter to help it determined what action to take:
|
|
//
|
|
// <table border=1 width=85% align=center>
|
|
// <tr><th> createFlag <th> Behavior when page is not already in cache
|
|
// <tr><td> 0 <td> Do not allocate a new page. Return NULL.
|
|
// <tr><td> 1 <td> Allocate a new page if it easy and convenient to do so.
|
|
// Otherwise return NULL.
|
|
// <tr><td> 2 <td> Make every effort to allocate a new page. Only return
|
|
// NULL if allocating a new page is effectively impossible.
|
|
// </table>
|
|
//
|
|
// ^(SQLite will normally invoke xFetch() with a createFlag of 0 or 1. SQLite
|
|
// will only use a createFlag of 2 after a prior call with a createFlag of 1
|
|
// failed.)^ In between the xFetch() calls, SQLite may
|
|
// attempt to unpin one or more cache pages by spilling the content of
|
|
// pinned pages to disk and synching the operating system disk cache.
|
|
//
|
|
// [[the xUnpin() page cache method]]
|
|
// ^xUnpin() is called by SQLite with a pointer to a currently pinned page
|
|
// as its second argument. If the third parameter, discard, is non-zero,
|
|
// then the page must be evicted from the cache.
|
|
// ^If the discard parameter is
|
|
// zero, then the page may be discarded or retained at the discretion of
|
|
// page cache implementation. ^The page cache implementation
|
|
// may choose to evict unpinned pages at any time.
|
|
//
|
|
// The cache must not perform any reference counting. A single
|
|
// call to xUnpin() unpins the page regardless of the number of prior calls
|
|
// to xFetch().
|
|
//
|
|
// [[the xRekey() page cache methods]]
|
|
// The xRekey() method is used to change the key value associated with the
|
|
// page passed as the second argument. If the cache
|
|
// previously contains an entry associated with newKey, it must be
|
|
// discarded. ^Any prior cache entry associated with newKey is guaranteed not
|
|
// to be pinned.
|
|
//
|
|
// When SQLite calls the xTruncate() method, the cache must discard all
|
|
// existing cache entries with page numbers (keys) greater than or equal
|
|
// to the value of the iLimit parameter passed to xTruncate(). If any
|
|
// of these pages are pinned, they are implicitly unpinned, meaning that
|
|
// they can be safely discarded.
|
|
//
|
|
// [[the xDestroy() page cache method]]
|
|
// ^The xDestroy() method is used to delete a cache allocated by xCreate().
|
|
// All resources associated with the specified cache should be freed. ^After
|
|
// calling the xDestroy() method, SQLite considers the [sqlite3_pcache*]
|
|
// handle invalid, and will not use it with any other sqlite3_pcache_methods2
|
|
// functions.
|
|
//
|
|
// [[the xShrink() page cache method]]
|
|
// ^SQLite invokes the xShrink() method when it wants the page cache to
|
|
// free up as much of heap memory as possible. The page cache implementation
|
|
// is not obligated to free any memory, but well-behaved implementations should
|
|
// do their best.
|
|
type sqlite3_pcache_methods2 = sqlite3_pcache_methods21 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8738:40 */
|
|
|
|
// This is the obsolete pcache_methods object that has now been replaced
|
|
// by sqlite3_pcache_methods2. This object is not used by SQLite. It is
|
|
// retained in the header file for backwards compatibility only.
|
|
type sqlite3_pcache_methods1 = struct {
|
|
pArg uintptr
|
|
xInit uintptr
|
|
xShutdown uintptr
|
|
xCreate uintptr
|
|
xCachesize uintptr
|
|
xPagecount uintptr
|
|
xFetch uintptr
|
|
xUnpin uintptr
|
|
xRekey uintptr
|
|
xTruncate uintptr
|
|
xDestroy uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8761:9 */
|
|
|
|
// This is the obsolete pcache_methods object that has now been replaced
|
|
// by sqlite3_pcache_methods2. This object is not used by SQLite. It is
|
|
// retained in the header file for backwards compatibility only.
|
|
type sqlite3_pcache_methods = sqlite3_pcache_methods1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8761:39 */
|
|
|
|
// CAPI3REF: Database Snapshot
|
|
// KEYWORDS: {snapshot} {sqlite3_snapshot}
|
|
//
|
|
// An instance of the snapshot object records the state of a [WAL mode]
|
|
// database for some specific point in history.
|
|
//
|
|
// In [WAL mode], multiple [database connections] that are open on the
|
|
// same database file can each be reading a different historical version
|
|
// of the database file. When a [database connection] begins a read
|
|
// transaction, that connection sees an unchanging copy of the database
|
|
// as it existed for the point in time when the transaction first started.
|
|
// Subsequent changes to the database from other connections are not seen
|
|
// by the reader until a new read transaction is started.
|
|
//
|
|
// The sqlite3_snapshot object records state information about an historical
|
|
// version of the database file so that it is possible to later open a new read
|
|
// transaction that sees that historical version of the database rather than
|
|
// the most recent version.
|
|
type sqlite3_snapshot1 = struct{ hidden [48]uint8 } /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10079:9 */
|
|
|
|
// CAPI3REF: Database Snapshot
|
|
// KEYWORDS: {snapshot} {sqlite3_snapshot}
|
|
//
|
|
// An instance of the snapshot object records the state of a [WAL mode]
|
|
// database for some specific point in history.
|
|
//
|
|
// In [WAL mode], multiple [database connections] that are open on the
|
|
// same database file can each be reading a different historical version
|
|
// of the database file. When a [database connection] begins a read
|
|
// transaction, that connection sees an unchanging copy of the database
|
|
// as it existed for the point in time when the transaction first started.
|
|
// Subsequent changes to the database from other connections are not seen
|
|
// by the reader until a new read transaction is started.
|
|
//
|
|
// The sqlite3_snapshot object records state information about an historical
|
|
// version of the database file so that it is possible to later open a new read
|
|
// transaction that sees that historical version of the database rather than
|
|
// the most recent version.
|
|
type sqlite3_snapshot = sqlite3_snapshot1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10081:3 */
|
|
|
|
// CAPI3REF: Flags for sqlite3_deserialize()
|
|
//
|
|
// The following are allowed values for 6th argument (the F argument) to
|
|
// the [sqlite3_deserialize(D,S,P,N,M,F)] interface.
|
|
//
|
|
// The SQLITE_DESERIALIZE_FREEONCLOSE means that the database serialization
|
|
// in the P argument is held in memory obtained from [sqlite3_malloc64()]
|
|
// and that SQLite should take ownership of this memory and automatically
|
|
// free it when it has finished using it. Without this flag, the caller
|
|
// is responsible for freeing any dynamically allocated memory.
|
|
//
|
|
// The SQLITE_DESERIALIZE_RESIZEABLE flag means that SQLite is allowed to
|
|
// grow the size of the database using calls to [sqlite3_realloc64()]. This
|
|
// flag should only be used if SQLITE_DESERIALIZE_FREEONCLOSE is also used.
|
|
// Without this flag, the deserialized database cannot increase in size beyond
|
|
// the number of bytes specified by the M parameter.
|
|
//
|
|
// The SQLITE_DESERIALIZE_READONLY flag means that the deserialized database
|
|
// should be treated as read-only.
|
|
|
|
// Undo the hack that converts floating point types to integer for
|
|
// builds on processors without floating point support.
|
|
|
|
//******* Begin file sqlite3rtree.h ********
|
|
// 2010 August 30
|
|
//
|
|
// 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.
|
|
//
|
|
//
|
|
|
|
type sqlite3_rtree_geometry1 = struct {
|
|
pContext uintptr
|
|
nParam int32
|
|
_ [4]byte
|
|
aParam uintptr
|
|
pUser uintptr
|
|
xDelUser uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10410:9 */
|
|
|
|
// CAPI3REF: Flags for sqlite3_deserialize()
|
|
//
|
|
// The following are allowed values for 6th argument (the F argument) to
|
|
// the [sqlite3_deserialize(D,S,P,N,M,F)] interface.
|
|
//
|
|
// The SQLITE_DESERIALIZE_FREEONCLOSE means that the database serialization
|
|
// in the P argument is held in memory obtained from [sqlite3_malloc64()]
|
|
// and that SQLite should take ownership of this memory and automatically
|
|
// free it when it has finished using it. Without this flag, the caller
|
|
// is responsible for freeing any dynamically allocated memory.
|
|
//
|
|
// The SQLITE_DESERIALIZE_RESIZEABLE flag means that SQLite is allowed to
|
|
// grow the size of the database using calls to [sqlite3_realloc64()]. This
|
|
// flag should only be used if SQLITE_DESERIALIZE_FREEONCLOSE is also used.
|
|
// Without this flag, the deserialized database cannot increase in size beyond
|
|
// the number of bytes specified by the M parameter.
|
|
//
|
|
// The SQLITE_DESERIALIZE_READONLY flag means that the deserialized database
|
|
// should be treated as read-only.
|
|
|
|
// Undo the hack that converts floating point types to integer for
|
|
// builds on processors without floating point support.
|
|
|
|
//******* Begin file sqlite3rtree.h ********
|
|
// 2010 August 30
|
|
//
|
|
// 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.
|
|
//
|
|
//
|
|
|
|
type sqlite3_rtree_geometry = sqlite3_rtree_geometry1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10410:39 */
|
|
type sqlite3_rtree_query_info1 = struct {
|
|
pContext uintptr
|
|
nParam int32
|
|
_ [4]byte
|
|
aParam uintptr
|
|
pUser uintptr
|
|
xDelUser uintptr
|
|
aCoord uintptr
|
|
anQueue uintptr
|
|
nCoord int32
|
|
iLevel int32
|
|
mxLevel int32
|
|
_ [4]byte
|
|
iRowid sqlite3_int64
|
|
rParentScore sqlite3_rtree_dbl
|
|
eParentWithin int32
|
|
eWithin int32
|
|
rScore sqlite3_rtree_dbl
|
|
apSqlParam uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10411:9 */
|
|
|
|
type sqlite3_rtree_query_info = sqlite3_rtree_query_info1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10411:41 */
|
|
|
|
// The double-precision datatype used by RTree depends on the
|
|
// SQLITE_RTREE_INT_ONLY compile-time option.
|
|
type sqlite3_rtree_dbl = float64 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10419:18 */
|
|
|
|
// CAPI3REF: Values for sqlite3session_config().
|
|
|
|
// Make sure we can call this stuff from C++.
|
|
|
|
//******* End of sqlite3session.h ********
|
|
//******* Begin file fts5.h ********
|
|
// 2014 May 31
|
|
//
|
|
// 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.
|
|
//
|
|
//
|
|
//
|
|
// Interfaces to extend FTS5. Using the interfaces defined in this file,
|
|
// FTS5 may be extended with:
|
|
//
|
|
// * custom tokenizers, and
|
|
// * custom auxiliary functions.
|
|
|
|
// ************************************************************************
|
|
//
|
|
// CUSTOM AUXILIARY FUNCTIONS
|
|
//
|
|
// Virtual table implementations may overload SQL functions by implementing
|
|
// the sqlite3_module.xFindFunction() method.
|
|
|
|
type Fts5ExtensionApi1 = struct {
|
|
iVersion int32
|
|
_ [4]byte
|
|
xUserData uintptr
|
|
xColumnCount uintptr
|
|
xRowCount uintptr
|
|
xColumnTotalSize uintptr
|
|
xTokenize uintptr
|
|
xPhraseCount uintptr
|
|
xPhraseSize uintptr
|
|
xInstCount uintptr
|
|
xInst uintptr
|
|
xRowid uintptr
|
|
xColumnText uintptr
|
|
xColumnSize uintptr
|
|
xQueryPhrase uintptr
|
|
xSetAuxdata uintptr
|
|
xGetAuxdata uintptr
|
|
xPhraseFirst uintptr
|
|
xPhraseNext uintptr
|
|
xPhraseFirstColumn uintptr
|
|
xPhraseNextColumn uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12266:9 */
|
|
|
|
// CAPI3REF: Values for sqlite3session_config().
|
|
|
|
// Make sure we can call this stuff from C++.
|
|
|
|
//******* End of sqlite3session.h ********
|
|
//******* Begin file fts5.h ********
|
|
// 2014 May 31
|
|
//
|
|
// 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.
|
|
//
|
|
//
|
|
//
|
|
// Interfaces to extend FTS5. Using the interfaces defined in this file,
|
|
// FTS5 may be extended with:
|
|
//
|
|
// * custom tokenizers, and
|
|
// * custom auxiliary functions.
|
|
|
|
// ************************************************************************
|
|
//
|
|
// CUSTOM AUXILIARY FUNCTIONS
|
|
//
|
|
// Virtual table implementations may overload SQL functions by implementing
|
|
// the sqlite3_module.xFindFunction() method.
|
|
|
|
type Fts5ExtensionApi = Fts5ExtensionApi1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12266:33 */
|
|
type Fts5PhraseIter1 = struct {
|
|
a uintptr
|
|
b uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12268:9 */
|
|
|
|
type Fts5PhraseIter = Fts5PhraseIter1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12268:31 */
|
|
|
|
type fts5_extension_function = uintptr /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12270:14 */
|
|
type fts5_tokenizer1 = struct {
|
|
xCreate uintptr
|
|
xDelete uintptr
|
|
xTokenize uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12729:9 */
|
|
|
|
type fts5_tokenizer = fts5_tokenizer1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12729:31 */
|
|
|
|
// Flags that may be passed as the third argument to xTokenize()
|
|
|
|
// Flags that may be passed by the tokenizer implementation back to FTS5
|
|
// as the third argument to the supplied xToken callback.
|
|
|
|
//
|
|
// END OF CUSTOM TOKENIZERS
|
|
//
|
|
|
|
// ************************************************************************
|
|
//
|
|
// FTS5 EXTENSION REGISTRATION API
|
|
type fts5_api1 = struct {
|
|
iVersion int32
|
|
_ [4]byte
|
|
xCreateTokenizer uintptr
|
|
xFindTokenizer uintptr
|
|
xCreateFunction uintptr
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12765:9 */
|
|
|
|
// Flags that may be passed as the third argument to xTokenize()
|
|
|
|
// Flags that may be passed by the tokenizer implementation back to FTS5
|
|
// as the third argument to the supplied xToken callback.
|
|
|
|
//
|
|
// END OF CUSTOM TOKENIZERS
|
|
//
|
|
|
|
// ************************************************************************
|
|
//
|
|
// FTS5 EXTENSION REGISTRATION API
|
|
type fts5_api = fts5_api1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12765:25 */
|
|
|
|
// Tell sys/endian.h we have MD variants of the swap macros.
|
|
|
|
// Note that these macros evaluate their arguments several times.
|
|
|
|
// Public names
|
|
|
|
// These are specified to be function-like macros to match the spec
|
|
|
|
// POSIX names
|
|
|
|
// original BSD names
|
|
|
|
// these were exposed here before
|
|
|
|
// ancient stuff
|
|
|
|
type u_char = uint8 /* /usr/include/sys/types.h:51:23 */
|
|
type u_short = uint16 /* /usr/include/sys/types.h:52:24 */
|
|
type u_int = uint32 /* /usr/include/sys/types.h:53:22 */
|
|
type u_long = uint64 /* /usr/include/sys/types.h:54:23 */
|
|
|
|
type unchar = uint8 /* /usr/include/sys/types.h:56:23 */ // Sys V compatibility
|
|
type ushort = uint16 /* /usr/include/sys/types.h:57:24 */ // Sys V compatibility
|
|
type uint = uint32 /* /usr/include/sys/types.h:58:22 */ // Sys V compatibility
|
|
type ulong = uint64 /* /usr/include/sys/types.h:59:23 */ // Sys V compatibility
|
|
|
|
type cpuid_t = uint64 /* /usr/include/sys/types.h:61:19 */ // CPU id
|
|
type register_t = int64 /* /usr/include/sys/types.h:62:22 */ // register-sized type
|
|
|
|
// XXX The exact-width bit types should only be exposed if __BSD_VISIBLE
|
|
// but the rest of the includes are not ready for that yet.
|
|
|
|
type int8_t = int8 /* /usr/include/sys/types.h:75:19 */
|
|
|
|
type uint8_t = uint8 /* /usr/include/sys/types.h:80:20 */
|
|
|
|
type int16_t = int16 /* /usr/include/sys/types.h:85:20 */
|
|
|
|
type uint16_t = uint16 /* /usr/include/sys/types.h:90:21 */
|
|
|
|
type int32_t = int32 /* /usr/include/sys/types.h:95:20 */
|
|
|
|
type uint32_t = uint32 /* /usr/include/sys/types.h:100:21 */
|
|
|
|
type int64_t = int64 /* /usr/include/sys/types.h:105:20 */
|
|
|
|
type uint64_t = uint64 /* /usr/include/sys/types.h:110:21 */
|
|
|
|
// BSD-style unsigned bits types
|
|
type u_int8_t = uint8 /* /usr/include/sys/types.h:114:19 */
|
|
type u_int16_t = uint16 /* /usr/include/sys/types.h:115:20 */
|
|
type u_int32_t = uint32 /* /usr/include/sys/types.h:116:20 */
|
|
type u_int64_t = uint64 /* /usr/include/sys/types.h:117:20 */
|
|
|
|
// quads, deprecated in favor of 64 bit int types
|
|
type quad_t = int64 /* /usr/include/sys/types.h:120:19 */
|
|
type u_quad_t = uint64 /* /usr/include/sys/types.h:121:20 */
|
|
|
|
// VM system types
|
|
type vaddr_t = uint64 /* /usr/include/sys/types.h:125:19 */
|
|
type paddr_t = uint64 /* /usr/include/sys/types.h:126:19 */
|
|
type vsize_t = uint64 /* /usr/include/sys/types.h:127:19 */
|
|
type psize_t = uint64 /* /usr/include/sys/types.h:128:19 */
|
|
|
|
// Standard system types
|
|
type blkcnt_t = int64 /* /usr/include/sys/types.h:132:20 */ // blocks allocated for file
|
|
type blksize_t = int32 /* /usr/include/sys/types.h:133:21 */ // optimal blocksize for I/O
|
|
type caddr_t = uintptr /* /usr/include/sys/types.h:134:14 */ // core address
|
|
type daddr32_t = int32 /* /usr/include/sys/types.h:135:19 */ // 32-bit disk address
|
|
type daddr_t = int64 /* /usr/include/sys/types.h:136:19 */ // 64-bit disk address
|
|
type dev_t = int32 /* /usr/include/sys/types.h:137:18 */ // device number
|
|
type fixpt_t = uint32 /* /usr/include/sys/types.h:138:19 */ // fixed point number
|
|
type gid_t = uint32 /* /usr/include/sys/types.h:139:18 */ // group id
|
|
type id_t = uint32 /* /usr/include/sys/types.h:140:17 */ // may contain pid, uid or gid
|
|
type ino_t = uint64 /* /usr/include/sys/types.h:141:18 */ // inode number
|
|
type key_t = int64 /* /usr/include/sys/types.h:142:18 */ // IPC key (for Sys V IPC)
|
|
type mode_t = uint32 /* /usr/include/sys/types.h:143:18 */ // permissions
|
|
type nlink_t = uint32 /* /usr/include/sys/types.h:144:19 */ // link count
|
|
type rlim_t = uint64 /* /usr/include/sys/types.h:145:18 */ // resource limit
|
|
type segsz_t = int32 /* /usr/include/sys/types.h:146:19 */ // segment size
|
|
type swblk_t = int32 /* /usr/include/sys/types.h:147:19 */ // swap offset
|
|
type uid_t = uint32 /* /usr/include/sys/types.h:148:18 */ // user id
|
|
type useconds_t = uint32 /* /usr/include/sys/types.h:149:22 */ // microseconds
|
|
type suseconds_t = int64 /* /usr/include/sys/types.h:150:23 */ // microseconds (signed)
|
|
type fsblkcnt_t = uint64 /* /usr/include/sys/types.h:151:22 */ // file system block count
|
|
type fsfilcnt_t = uint64 /* /usr/include/sys/types.h:152:22 */ // file system file count
|
|
|
|
// The following types may be defined in multiple header files.
|
|
type clock_t = int64 /* /usr/include/sys/types.h:159:19 */
|
|
|
|
type clockid_t = int32 /* /usr/include/sys/types.h:164:21 */
|
|
|
|
type pid_t = int32 /* /usr/include/sys/types.h:169:18 */
|
|
|
|
type ssize_t = int64 /* /usr/include/sys/types.h:179:19 */
|
|
|
|
type time_t = int64 /* /usr/include/sys/types.h:184:18 */
|
|
|
|
type timer_t = int32 /* /usr/include/sys/types.h:189:19 */
|
|
|
|
type off_t = int64 /* /usr/include/sys/types.h:194:18 */
|
|
|
|
// Major, minor numbers, dev_t's.
|
|
|
|
type fpos_t = off_t /* /usr/include/stdio.h:61:15 */ // stdio file position type
|
|
|
|
// NB: to fit things in six character monocase externals, the stdio
|
|
// code uses the prefix `__s' for stdio objects, typically followed
|
|
// by a three-character attempt at a mnemonic.
|
|
|
|
// stdio buffers
|
|
type __sbuf = struct {
|
|
_base uintptr
|
|
_size int32
|
|
_ [4]byte
|
|
} /* /usr/include/stdio.h:70:1 */
|
|
|
|
// stdio state variables.
|
|
//
|
|
// The following always hold:
|
|
//
|
|
// if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
|
|
// _lbfsize is -_bf._size, else _lbfsize is 0
|
|
// if _flags&__SRD, _w is 0
|
|
// if _flags&__SWR, _r is 0
|
|
//
|
|
// This ensures that the getc and putc macros (or inline functions) never
|
|
// try to write or read from a file that is in `read' or `write' mode.
|
|
// (Moreover, they can, and do, automatically switch from read mode to
|
|
// write mode, and back, on "r+" and "w+" files.)
|
|
//
|
|
// _lbfsize is used only to make the inline line-buffered output stream
|
|
// code as compact as possible.
|
|
//
|
|
// _ub, _up, and _ur are used when ungetc() pushes back more characters
|
|
// than fit in the current _bf, or when ungetc() pushes back a character
|
|
// that does not match the previous one in _bf. When this happens,
|
|
// _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
|
|
// _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
|
|
type __sFILE = struct {
|
|
_p uintptr
|
|
_r int32
|
|
_w int32
|
|
_flags int16
|
|
_file int16
|
|
_ [4]byte
|
|
_bf struct {
|
|
_base uintptr
|
|
_size int32
|
|
_ [4]byte
|
|
}
|
|
_lbfsize int32
|
|
_ [4]byte
|
|
_cookie uintptr
|
|
_close uintptr
|
|
_read uintptr
|
|
_seek uintptr
|
|
_write uintptr
|
|
_ext struct {
|
|
_base uintptr
|
|
_size int32
|
|
_ [4]byte
|
|
}
|
|
_up uintptr
|
|
_ur int32
|
|
_ubuf [3]uint8
|
|
_nbuf [1]uint8
|
|
_lb struct {
|
|
_base uintptr
|
|
_size int32
|
|
_ [4]byte
|
|
}
|
|
_blksize int32
|
|
_ [4]byte
|
|
_offset fpos_t
|
|
} /* /usr/include/stdio.h:99:9 */
|
|
|
|
// stdio state variables.
|
|
//
|
|
// The following always hold:
|
|
//
|
|
// if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
|
|
// _lbfsize is -_bf._size, else _lbfsize is 0
|
|
// if _flags&__SRD, _w is 0
|
|
// if _flags&__SWR, _r is 0
|
|
//
|
|
// This ensures that the getc and putc macros (or inline functions) never
|
|
// try to write or read from a file that is in `read' or `write' mode.
|
|
// (Moreover, they can, and do, automatically switch from read mode to
|
|
// write mode, and back, on "r+" and "w+" files.)
|
|
//
|
|
// _lbfsize is used only to make the inline line-buffered output stream
|
|
// code as compact as possible.
|
|
//
|
|
// _ub, _up, and _ur are used when ungetc() pushes back more characters
|
|
// than fit in the current _bf, or when ungetc() pushes back a character
|
|
// that does not match the previous one in _bf. When this happens,
|
|
// _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
|
|
// _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
|
|
type FILE = __sFILE /* /usr/include/stdio.h:131:3 */
|
|
|
|
// The macro implementations of putc and putc_unlocked are not
|
|
// fully POSIX compliant; they do not set errno on failure
|
|
|
|
// The macro implementations of putc and putc_unlocked are not
|
|
// fully POSIX compliant; they do not set errno on failure
|
|
|
|
// $OpenBSD: unistd.h,v 1.106 2018/07/13 09:25:22 beck Exp $
|
|
// $NetBSD: unistd.h,v 1.26.4.1 1996/05/28 02:31:51 mrg Exp $
|
|
|
|
// -
|
|
// Copyright (c) 1991 The Regents of the University of California.
|
|
// All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)unistd.h 5.13 (Berkeley) 6/17/91
|
|
|
|
// $OpenBSD: _null.h,v 1.2 2016/09/09 22:07:58 millert Exp $
|
|
|
|
// Written by Todd C. Miller, September 9, 2016
|
|
// Public domain.
|
|
|
|
// $OpenBSD: types.h,v 1.48 2019/02/09 04:54:11 guenther Exp $
|
|
// $NetBSD: types.h,v 1.29 1996/11/15 22:48:25 jtc Exp $
|
|
|
|
// -
|
|
// Copyright (c) 1982, 1986, 1991, 1993
|
|
// The Regents of the University of California. All rights reserved.
|
|
// (c) UNIX System Laboratories, Inc.
|
|
// All or some portions of this file are derived from material licensed
|
|
// to the University of California by American Telephone and Telegraph
|
|
// Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
|
// the permission of UNIX System Laboratories, Inc.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)types.h 8.4 (Berkeley) 1/21/94
|
|
|
|
// $OpenBSD: unistd.h,v 1.31 2015/07/20 00:56:10 guenther Exp $
|
|
// $NetBSD: unistd.h,v 1.10 1994/06/29 06:46:06 cgd Exp $
|
|
|
|
// Copyright (c) 1989, 1993
|
|
// The Regents of the University of California. All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)unistd.h 8.2 (Berkeley) 1/7/94
|
|
|
|
// $OpenBSD: cdefs.h,v 1.43 2018/10/29 17:10:40 guenther Exp $
|
|
// $NetBSD: cdefs.h,v 1.16 1996/04/03 20:46:39 christos Exp $
|
|
|
|
// Copyright (c) 1991, 1993
|
|
// The Regents of the University of California. All rights reserved.
|
|
//
|
|
// This code is derived from software contributed to Berkeley by
|
|
// Berkeley Software Design, Inc.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)cdefs.h 8.7 (Berkeley) 1/21/94
|
|
|
|
// Define the POSIX.1 version we target for compliance.
|
|
|
|
// access function
|
|
|
|
// whence values for lseek(2)
|
|
|
|
// old BSD whence values for lseek(2); renamed by POSIX 1003.1
|
|
|
|
// the parameters argument passed to the __tfork() syscall
|
|
type __tfork = struct {
|
|
tf_tcb uintptr
|
|
tf_tid uintptr
|
|
tf_stack uintptr
|
|
} /* /usr/include/sys/unistd.h:66:1 */
|
|
|
|
// the parameters argument for the kbind() syscall
|
|
type __kbind = struct {
|
|
kb_addr uintptr
|
|
kb_size size_t
|
|
} /* /usr/include/sys/unistd.h:73:1 */
|
|
|
|
// the pathconf(2) variable values are part of the ABI
|
|
|
|
// configurable pathname variables
|
|
|
|
// POSIX options and option groups we unconditionally do or don't
|
|
// implement. Please keep this list in alphabetical order.
|
|
//
|
|
// Anything which is defined as zero below **must** have an
|
|
// implementation for the corresponding sysconf() which is able to
|
|
// determine conclusively whether or not the feature is supported.
|
|
// Anything which is defined as other than -1 below **must** have
|
|
// complete headers, types, and function declarations as specified by
|
|
// the POSIX standard; however, if the relevant sysconf() function
|
|
// returns -1, the functions may be stubbed out.
|
|
|
|
// Define the POSIX.2 version we target for compliance.
|
|
|
|
// the sysconf(3) variable values are part of the ABI
|
|
|
|
// configurable system variables
|
|
|
|
// configurable system strings
|
|
|
|
type intptr_t = int64 /* /usr/include/unistd.h:320:21 */
|
|
|
|
type div_t = struct {
|
|
quot int32
|
|
rem int32
|
|
} /* /usr/include/stdlib.h:59:3 */
|
|
|
|
type ldiv_t = struct {
|
|
quot int64
|
|
rem int64
|
|
} /* /usr/include/stdlib.h:64:3 */
|
|
|
|
type lldiv_t = struct {
|
|
quot int64
|
|
rem int64
|
|
} /* /usr/include/stdlib.h:70:3 */
|
|
|
|
type qdiv_t = struct {
|
|
quot quad_t
|
|
rem quad_t
|
|
} /* /usr/include/stdlib.h:77:3 */
|
|
|
|
// $OpenBSD: string.h,v 1.32 2017/09/05 03:16:13 schwarze Exp $
|
|
// $NetBSD: string.h,v 1.6 1994/10/26 00:56:30 cgd Exp $
|
|
|
|
// -
|
|
// Copyright (c) 1990 The Regents of the University of California.
|
|
// All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)string.h 5.10 (Berkeley) 3/9/91
|
|
|
|
// $OpenBSD: cdefs.h,v 1.43 2018/10/29 17:10:40 guenther Exp $
|
|
// $NetBSD: cdefs.h,v 1.16 1996/04/03 20:46:39 christos Exp $
|
|
|
|
// Copyright (c) 1991, 1993
|
|
// The Regents of the University of California. All rights reserved.
|
|
//
|
|
// This code is derived from software contributed to Berkeley by
|
|
// Berkeley Software Design, Inc.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)cdefs.h 8.7 (Berkeley) 1/21/94
|
|
|
|
// $OpenBSD: _null.h,v 1.2 2016/09/09 22:07:58 millert Exp $
|
|
|
|
// Written by Todd C. Miller, September 9, 2016
|
|
// Public domain.
|
|
|
|
// $OpenBSD: _types.h,v 1.17 2018/03/05 01:15:25 deraadt Exp $
|
|
|
|
// -
|
|
// Copyright (c) 1990, 1993
|
|
// The Regents of the University of California. All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)types.h 8.3 (Berkeley) 1/5/94
|
|
// @(#)ansi.h 8.2 (Berkeley) 1/4/94
|
|
|
|
// POSIX mandates that certain string functions not present in ISO C
|
|
// be prototyped in strings.h. Historically, we've included them here.
|
|
// $OpenBSD: strings.h,v 1.6 2017/09/10 21:50:36 schwarze Exp $
|
|
|
|
// -
|
|
// Copyright (c) 1990 The Regents of the University of California.
|
|
// All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)strings.h 5.8 (Berkeley) 5/15/90
|
|
|
|
// $OpenBSD: cdefs.h,v 1.43 2018/10/29 17:10:40 guenther Exp $
|
|
// $NetBSD: cdefs.h,v 1.16 1996/04/03 20:46:39 christos Exp $
|
|
|
|
// Copyright (c) 1991, 1993
|
|
// The Regents of the University of California. All rights reserved.
|
|
//
|
|
// This code is derived from software contributed to Berkeley by
|
|
// Berkeley Software Design, Inc.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)cdefs.h 8.7 (Berkeley) 1/21/94
|
|
|
|
// $OpenBSD: _types.h,v 1.17 2018/03/05 01:15:25 deraadt Exp $
|
|
|
|
// -
|
|
// Copyright (c) 1990, 1993
|
|
// The Regents of the University of California. All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
// 1. Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// 2. Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
// 3. Neither the name of the University nor the names of its contributors
|
|
// may be used to endorse or promote products derived from this software
|
|
// without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
// SUCH DAMAGE.
|
|
//
|
|
// @(#)types.h 8.3 (Berkeley) 1/5/94
|
|
// @(#)ansi.h 8.2 (Berkeley) 1/4/94
|
|
|
|
// POSIX mandates that certain string functions not present in ISO C
|
|
// be prototyped in strings.h.
|
|
|
|
type locale_t = uintptr /* /usr/include/strings.h:53:14 */
|
|
|
|
// The suffix to append to the child command lines, if any
|
|
|
|
// The directory separator character(s)
|
|
|
|
// Mark a parameter as unused to suppress compiler warnings
|
|
|
|
// Global data
|
|
type Global = struct {
|
|
argv0 uintptr
|
|
zVfs uintptr
|
|
zDbFile uintptr
|
|
db uintptr
|
|
zErrLog uintptr
|
|
pErrLog uintptr
|
|
zLog uintptr
|
|
pLog uintptr
|
|
zName [32]int8
|
|
taskId int32
|
|
iTrace int32
|
|
bSqlTrace int32
|
|
bIgnoreSqlErrors int32
|
|
nError int32
|
|
nTest int32
|
|
iTimeout int32
|
|
bSync int32
|
|
} /* testdata/sqlite-src-3380500/mptest/mptest.c:72:8 */
|
|
|
|
// The suffix to append to the child command lines, if any
|
|
|
|
// The directory separator character(s)
|
|
|
|
// Mark a parameter as unused to suppress compiler warnings
|
|
|
|
// Global data
|
|
var g Global /* testdata/sqlite-src-3380500/mptest/mptest.c:90:3: */
|
|
|
|
// Default timeout
|
|
|
|
// Print a message adding zPrefix[] to the beginning of every line.
|
|
func printWithPrefix(tls *libc.TLS, pOut uintptr, zPrefix uintptr, zMsg uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:98:13: */
|
|
bp := tls.Alloc(24)
|
|
defer tls.Free(24)
|
|
|
|
for zMsg != 0 && *(*int8)(unsafe.Pointer(zMsg)) != 0 {
|
|
var i int32
|
|
for i = 0; *(*int8)(unsafe.Pointer(zMsg + uintptr(i))) != 0 && int32(*(*int8)(unsafe.Pointer(zMsg + uintptr(i)))) != '\n' && int32(*(*int8)(unsafe.Pointer(zMsg + uintptr(i)))) != '\r'; i++ {
|
|
}
|
|
libc.Xfprintf(tls, pOut, ts, libc.VaList(bp, zPrefix, i, zMsg))
|
|
zMsg += uintptr(i)
|
|
for int32(*(*int8)(unsafe.Pointer(zMsg))) == '\n' || int32(*(*int8)(unsafe.Pointer(zMsg))) == '\r' {
|
|
zMsg++
|
|
}
|
|
}
|
|
}
|
|
|
|
// Compare two pointers to strings, where the pointers might be NULL.
|
|
func safe_strcmp(tls *libc.TLS, a uintptr, b uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:111:12: */
|
|
if a == b {
|
|
return 0
|
|
}
|
|
if a == uintptr(0) {
|
|
return -1
|
|
}
|
|
if b == uintptr(0) {
|
|
return 1
|
|
}
|
|
return libc.Xstrcmp(tls, a, b)
|
|
}
|
|
|
|
// Return TRUE if string z[] matches glob pattern zGlob[].
|
|
// Return FALSE if the pattern does not match.
|
|
//
|
|
// Globbing rules:
|
|
//
|
|
// '*' Matches any sequence of zero or more characters.
|
|
//
|
|
// '?' Matches exactly one character.
|
|
//
|
|
// [...] Matches one character from the enclosed list of
|
|
// characters.
|
|
//
|
|
// [^...] Matches one character not in the enclosed list.
|
|
//
|
|
// '#' Matches any sequence of one or more digits with an
|
|
// optional + or - sign in front
|
|
func strglob(tls *libc.TLS, zGlob uintptr, z uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:136:5: */
|
|
var c int32
|
|
var c2 int32
|
|
var invert int32
|
|
var seen int32
|
|
|
|
for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) != 0 {
|
|
if c == '*' {
|
|
for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) == '*' || c == '?' {
|
|
if c == '?' && int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
|
|
return 0
|
|
}
|
|
}
|
|
if c == 0 {
|
|
return 1
|
|
} else if c == '[' {
|
|
for *(*int8)(unsafe.Pointer(z)) != 0 && strglob(tls, zGlob-uintptr(1), z) != 0 {
|
|
z++
|
|
}
|
|
return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) != 0)
|
|
}
|
|
for libc.AssignInt32(&c2, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))) != 0 {
|
|
for c2 != c {
|
|
c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
|
|
if c2 == 0 {
|
|
return 0
|
|
}
|
|
}
|
|
if strglob(tls, zGlob, z) != 0 {
|
|
return 1
|
|
}
|
|
}
|
|
return 0
|
|
} else if c == '?' {
|
|
if int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
|
|
return 0
|
|
}
|
|
} else if c == '[' {
|
|
var prior_c int32 = 0
|
|
seen = 0
|
|
invert = 0
|
|
c = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
|
|
if c == 0 {
|
|
return 0
|
|
}
|
|
c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
|
|
if c2 == '^' {
|
|
invert = 1
|
|
c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
|
|
}
|
|
if c2 == ']' {
|
|
if c == ']' {
|
|
seen = 1
|
|
}
|
|
c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
|
|
}
|
|
for c2 != 0 && c2 != ']' {
|
|
if c2 == '-' && int32(*(*int8)(unsafe.Pointer(zGlob))) != ']' && int32(*(*int8)(unsafe.Pointer(zGlob))) != 0 && prior_c > 0 {
|
|
c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
|
|
if c >= prior_c && c <= c2 {
|
|
seen = 1
|
|
}
|
|
prior_c = 0
|
|
} else {
|
|
if c == c2 {
|
|
seen = 1
|
|
}
|
|
prior_c = c2
|
|
}
|
|
c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
|
|
}
|
|
if c2 == 0 || seen^invert == 0 {
|
|
return 0
|
|
}
|
|
} else if c == '#' {
|
|
if (int32(*(*int8)(unsafe.Pointer(z))) == '-' || int32(*(*int8)(unsafe.Pointer(z))) == '+') && libc.Xisdigit(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + 1))))) != 0 {
|
|
z++
|
|
}
|
|
if !(libc.Xisdigit(tls, int32(uint8(*(*int8)(unsafe.Pointer(z))))) != 0) {
|
|
return 0
|
|
}
|
|
z++
|
|
for libc.Xisdigit(tls, int32(uint8(*(*int8)(unsafe.Pointer(z))))) != 0 {
|
|
z++
|
|
}
|
|
} else {
|
|
if c != int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) {
|
|
return 0
|
|
}
|
|
}
|
|
}
|
|
return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) == 0)
|
|
}
|
|
|
|
// Close output stream pOut if it is not stdout or stderr
|
|
func maybeClose(tls *libc.TLS, pOut uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:208:13: */
|
|
if pOut != uintptr(unsafe.Pointer(&libc.X__sF))+1*152 && pOut != uintptr(unsafe.Pointer(&libc.X__sF))+2*152 {
|
|
libc.Xfclose(tls, pOut)
|
|
}
|
|
}
|
|
|
|
// Print an error message
|
|
func errorMessage(tls *libc.TLS, zFormat uintptr, va uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:215:13: */
|
|
bp := tls.Alloc(38)
|
|
defer tls.Free(38)
|
|
|
|
var ap va_list
|
|
_ = ap
|
|
var zMsg uintptr
|
|
// var zPrefix [30]int8 at bp+8, 30
|
|
|
|
ap = va
|
|
zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
_ = ap
|
|
sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+8, libc.VaList(bp, uintptr(unsafe.Pointer(&g))+64))
|
|
if g.pLog != 0 {
|
|
printWithPrefix(tls, g.pLog, bp+8, zMsg)
|
|
libc.Xfflush(tls, g.pLog)
|
|
}
|
|
if g.pErrLog != 0 && safe_strcmp(tls, g.zErrLog, g.zLog) != 0 {
|
|
printWithPrefix(tls, g.pErrLog, bp+8, zMsg)
|
|
libc.Xfflush(tls, g.pErrLog)
|
|
}
|
|
sqlite3.Xsqlite3_free(tls, zMsg)
|
|
g.nError++
|
|
}
|
|
|
|
// Print an error message and then quit.
|
|
func fatalError(tls *libc.TLS, zFormat uintptr, va uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:241:13: */
|
|
bp := tls.Alloc(38)
|
|
defer tls.Free(38)
|
|
|
|
var ap va_list
|
|
_ = ap
|
|
var zMsg uintptr
|
|
// var zPrefix [30]int8 at bp+8, 30
|
|
|
|
ap = va
|
|
zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
_ = ap
|
|
sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+19, libc.VaList(bp, uintptr(unsafe.Pointer(&g))+64))
|
|
if g.pLog != 0 {
|
|
printWithPrefix(tls, g.pLog, bp+8, zMsg)
|
|
libc.Xfflush(tls, g.pLog)
|
|
maybeClose(tls, g.pLog)
|
|
}
|
|
if g.pErrLog != 0 && safe_strcmp(tls, g.zErrLog, g.zLog) != 0 {
|
|
printWithPrefix(tls, g.pErrLog, bp+8, zMsg)
|
|
libc.Xfflush(tls, g.pErrLog)
|
|
maybeClose(tls, g.pErrLog)
|
|
}
|
|
sqlite3.Xsqlite3_free(tls, zMsg)
|
|
if g.db != 0 {
|
|
var nTry int32 = 0
|
|
g.iTimeout = 0
|
|
for trySql(tls, ts+30, 0) == SQLITE_BUSY &&
|
|
libc.PostIncInt32(&nTry, 1) < 100 {
|
|
sqlite3.Xsqlite3_sleep(tls, 10)
|
|
}
|
|
}
|
|
sqlite3.Xsqlite3_close(tls, g.db)
|
|
libc.Xexit(tls, 1)
|
|
}
|
|
|
|
// Print a log message
|
|
func logMessage(tls *libc.TLS, zFormat uintptr, va uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:276:13: */
|
|
bp := tls.Alloc(38)
|
|
defer tls.Free(38)
|
|
|
|
var ap va_list
|
|
_ = ap
|
|
var zMsg uintptr
|
|
// var zPrefix [30]int8 at bp+8, 30
|
|
|
|
ap = va
|
|
zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
_ = ap
|
|
sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+60, libc.VaList(bp, uintptr(unsafe.Pointer(&g))+64))
|
|
if g.pLog != 0 {
|
|
printWithPrefix(tls, g.pLog, bp+8, zMsg)
|
|
libc.Xfflush(tls, g.pLog)
|
|
}
|
|
sqlite3.Xsqlite3_free(tls, zMsg)
|
|
}
|
|
|
|
// Return the length of a string omitting trailing whitespace
|
|
func clipLength(tls *libc.TLS, z uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:294:12: */
|
|
var n int32 = int32(libc.Xstrlen(tls, z))
|
|
for n > 0 && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n-1)))))) != 0 {
|
|
n--
|
|
}
|
|
return n
|
|
}
|
|
|
|
// Auxiliary SQL function to return the name of the VFS
|
|
func vfsNameFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:303:13: */
|
|
bp := tls.Alloc(8)
|
|
defer tls.Free(8)
|
|
|
|
var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
|
|
*(*uintptr)(unsafe.Pointer(bp /* zVfs */)) = uintptr(0)
|
|
_ = argc
|
|
_ = argv
|
|
sqlite3.Xsqlite3_file_control(tls, db, ts+65, SQLITE_FCNTL_VFSNAME, bp)
|
|
if *(*uintptr)(unsafe.Pointer(bp)) != 0 {
|
|
sqlite3.Xsqlite3_result_text(tls, context, *(*uintptr)(unsafe.Pointer(bp /* zVfs */)), -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
|
|
}
|
|
}
|
|
|
|
// Busy handler with a g.iTimeout-millisecond timeout
|
|
func busyHandler(tls *libc.TLS, pCD uintptr, count int32) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:321:12: */
|
|
bp := tls.Alloc(8)
|
|
defer tls.Free(8)
|
|
|
|
_ = pCD
|
|
if count*10 > g.iTimeout {
|
|
if g.iTimeout > 0 {
|
|
errorMessage(tls, ts+70, libc.VaList(bp, g.iTimeout))
|
|
}
|
|
return 0
|
|
}
|
|
sqlite3.Xsqlite3_sleep(tls, 10)
|
|
return 1
|
|
}
|
|
|
|
// SQL Trace callback
|
|
func sqlTraceCallback(tls *libc.TLS, NotUsed1 uintptr, zSql uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:334:13: */
|
|
bp := tls.Alloc(16)
|
|
defer tls.Free(16)
|
|
|
|
_ = NotUsed1
|
|
logMessage(tls, ts+89, libc.VaList(bp, clipLength(tls, zSql), zSql))
|
|
}
|
|
|
|
// SQL error log callback
|
|
func sqlErrorCallback(tls *libc.TLS, pArg uintptr, iErrCode int32, zMsg uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:342:13: */
|
|
bp := tls.Alloc(24)
|
|
defer tls.Free(24)
|
|
|
|
_ = pArg
|
|
if iErrCode == SQLITE_ERROR && g.bIgnoreSqlErrors != 0 {
|
|
return
|
|
}
|
|
if iErrCode&0xff == SQLITE_SCHEMA && g.iTrace < 3 {
|
|
return
|
|
}
|
|
if g.iTimeout == 0 && iErrCode&0xff == SQLITE_BUSY && g.iTrace < 3 {
|
|
return
|
|
}
|
|
if iErrCode&0xff == SQLITE_NOTICE {
|
|
logMessage(tls, ts+96, libc.VaList(bp, zMsg))
|
|
} else {
|
|
errorMessage(tls, ts+106, libc.VaList(bp+8, iErrCode, zMsg))
|
|
}
|
|
}
|
|
|
|
// Prepare an SQL statement. Issue a fatal error if unable.
|
|
func prepareSql(tls *libc.TLS, zFormat uintptr, va uintptr) uintptr { /* testdata/sqlite-src-3380500/mptest/mptest.c:357:21: */
|
|
bp := tls.Alloc(24)
|
|
defer tls.Free(24)
|
|
|
|
var ap va_list
|
|
_ = ap
|
|
var zSql uintptr
|
|
var rc int32
|
|
*(*uintptr)(unsafe.Pointer(bp + 16 /* pStmt */)) = uintptr(0)
|
|
ap = va
|
|
zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
_ = ap
|
|
rc = sqlite3.Xsqlite3_prepare_v2(tls, g.db, zSql, -1, bp+16, uintptr(0))
|
|
if rc != SQLITE_OK {
|
|
sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16 /* pStmt */)))
|
|
fatalError(tls, ts+122, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, g.db), zSql))
|
|
}
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
return *(*uintptr)(unsafe.Pointer(bp + 16 /* pStmt */))
|
|
}
|
|
|
|
// Run arbitrary SQL. Issue a fatal error on failure.
|
|
func runSql(tls *libc.TLS, zFormat uintptr, va uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:377:13: */
|
|
bp := tls.Alloc(16)
|
|
defer tls.Free(16)
|
|
|
|
var ap va_list
|
|
_ = ap
|
|
var zSql uintptr
|
|
var rc int32
|
|
ap = va
|
|
zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
_ = ap
|
|
rc = sqlite3.Xsqlite3_exec(tls, g.db, zSql, uintptr(0), uintptr(0), uintptr(0))
|
|
if rc != SQLITE_OK {
|
|
fatalError(tls, ts+122, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, g.db), zSql))
|
|
}
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
}
|
|
|
|
// Try to run arbitrary SQL. Return success code.
|
|
func trySql(tls *libc.TLS, zFormat uintptr, va uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:394:12: */
|
|
var ap va_list
|
|
_ = ap
|
|
var zSql uintptr
|
|
var rc int32
|
|
ap = va
|
|
zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
_ = ap
|
|
rc = sqlite3.Xsqlite3_exec(tls, g.db, zSql, uintptr(0), uintptr(0), uintptr(0))
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
return rc
|
|
}
|
|
|
|
// Structure for holding an arbitrary length string
|
|
type String1 = struct {
|
|
z uintptr
|
|
n int32
|
|
nAlloc int32
|
|
} /* testdata/sqlite-src-3380500/mptest/mptest.c:408:9 */
|
|
|
|
// Structure for holding an arbitrary length string
|
|
type String = String1 /* testdata/sqlite-src-3380500/mptest/mptest.c:408:23 */
|
|
|
|
// Free a string
|
|
func stringFree(tls *libc.TLS, p uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:416:13: */
|
|
if (*String)(unsafe.Pointer(p)).z != 0 {
|
|
sqlite3.Xsqlite3_free(tls, (*String)(unsafe.Pointer(p)).z)
|
|
}
|
|
libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(String{})))
|
|
}
|
|
|
|
// Append n bytes of text to a string. If n<0 append the entire string.
|
|
func stringAppend(tls *libc.TLS, p uintptr, z uintptr, n int32) { /* testdata/sqlite-src-3380500/mptest/mptest.c:422:13: */
|
|
if n < 0 {
|
|
n = int32(libc.Xstrlen(tls, z))
|
|
}
|
|
if (*String)(unsafe.Pointer(p)).n+n >= (*String)(unsafe.Pointer(p)).nAlloc {
|
|
var nAlloc int32 = (*String)(unsafe.Pointer(p)).nAlloc*2 + n + 100
|
|
var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*String)(unsafe.Pointer(p)).z, nAlloc)
|
|
if zNew == uintptr(0) {
|
|
fatalError(tls, ts+129, 0)
|
|
}
|
|
(*String)(unsafe.Pointer(p)).z = zNew
|
|
(*String)(unsafe.Pointer(p)).nAlloc = nAlloc
|
|
}
|
|
libc.Xmemcpy(tls, (*String)(unsafe.Pointer(p)).z+uintptr((*String)(unsafe.Pointer(p)).n), z, uint64(n))
|
|
*(*int32)(unsafe.Pointer(p + 8)) += n
|
|
*(*int8)(unsafe.Pointer((*String)(unsafe.Pointer(p)).z + uintptr((*String)(unsafe.Pointer(p)).n))) = int8(0)
|
|
}
|
|
|
|
// Reset a string to an empty string
|
|
func stringReset(tls *libc.TLS, p uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:437:13: */
|
|
if (*String)(unsafe.Pointer(p)).z == uintptr(0) {
|
|
stringAppend(tls, p, ts+143, 1)
|
|
}
|
|
(*String)(unsafe.Pointer(p)).n = 0
|
|
*(*int8)(unsafe.Pointer((*String)(unsafe.Pointer(p)).z)) = int8(0)
|
|
}
|
|
|
|
// Append a new token onto the end of the string
|
|
func stringAppendTerm(tls *libc.TLS, p uintptr, z uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:444:13: */
|
|
var i int32
|
|
if (*String)(unsafe.Pointer(p)).n != 0 {
|
|
stringAppend(tls, p, ts+143, 1)
|
|
}
|
|
if z == uintptr(0) {
|
|
stringAppend(tls, p, ts+145, 3)
|
|
return
|
|
}
|
|
for i = 0; *(*int8)(unsafe.Pointer(z + uintptr(i))) != 0 && !(libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(i)))))) != 0); i++ {
|
|
}
|
|
if i > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == 0 {
|
|
stringAppend(tls, p, z, i)
|
|
return
|
|
}
|
|
stringAppend(tls, p, ts+149, 1)
|
|
for *(*int8)(unsafe.Pointer(z)) != 0 {
|
|
for i = 0; *(*int8)(unsafe.Pointer(z + uintptr(i))) != 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '\''; i++ {
|
|
}
|
|
if *(*int8)(unsafe.Pointer(z + uintptr(i))) != 0 {
|
|
stringAppend(tls, p, z, i+1)
|
|
stringAppend(tls, p, ts+149, 1)
|
|
z += uintptr(i + 1)
|
|
} else {
|
|
stringAppend(tls, p, z, i)
|
|
break
|
|
}
|
|
}
|
|
stringAppend(tls, p, ts+149, 1)
|
|
}
|
|
|
|
// Callback function for evalSql()
|
|
func evalCallback(tls *libc.TLS, pCData uintptr, argc int32, argv uintptr, azCol uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:474:12: */
|
|
var p uintptr = pCData
|
|
var i int32
|
|
_ = azCol
|
|
for i = 0; i < argc; i++ {
|
|
stringAppendTerm(tls, p, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// Run arbitrary SQL and record the results in an output string
|
|
// given by the first parameter.
|
|
func evalSql(tls *libc.TLS, p uintptr, zFormat uintptr, va uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:486:12: */
|
|
bp := tls.Alloc(46)
|
|
defer tls.Free(46)
|
|
|
|
var ap va_list
|
|
_ = ap
|
|
var zSql uintptr
|
|
var rc int32
|
|
*(*uintptr)(unsafe.Pointer(bp + 8 /* zErrMsg */)) = uintptr(0)
|
|
ap = va
|
|
zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
_ = ap
|
|
|
|
rc = sqlite3.Xsqlite3_exec(tls, g.db, zSql, *(*uintptr)(unsafe.Pointer(&struct {
|
|
f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
|
|
}{evalCallback})), p, bp+8 /* &zErrMsg */)
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
if rc != 0 {
|
|
// var zErr [30]int8 at bp+16, 30
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+16, ts+151, libc.VaList(bp, rc))
|
|
stringAppendTerm(tls, p, bp+16)
|
|
if *(*uintptr)(unsafe.Pointer(bp + 8)) != 0 {
|
|
stringAppendTerm(tls, p, *(*uintptr)(unsafe.Pointer(bp + 8 /* zErrMsg */)))
|
|
sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 8 /* zErrMsg */)))
|
|
}
|
|
}
|
|
return rc
|
|
}
|
|
|
|
// Auxiliary SQL function to recursively evaluate SQL.
|
|
func evalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:512:13: */
|
|
bp := tls.Alloc(24)
|
|
defer tls.Free(24)
|
|
|
|
var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
|
|
var zSql uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
|
|
// var res String at bp, 16
|
|
|
|
*(*uintptr)(unsafe.Pointer(bp + 16 /* zErrMsg */)) = uintptr(0)
|
|
var rc int32
|
|
_ = argc
|
|
libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(String{})))
|
|
rc = sqlite3.Xsqlite3_exec(tls, db, zSql, *(*uintptr)(unsafe.Pointer(&struct {
|
|
f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
|
|
}{evalCallback})), bp /* &res */, bp+16 /* &zErrMsg */)
|
|
if *(*uintptr)(unsafe.Pointer(bp + 16)) != 0 {
|
|
sqlite3.Xsqlite3_result_error(tls, context, *(*uintptr)(unsafe.Pointer(bp + 16 /* zErrMsg */)), -1)
|
|
sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 16 /* zErrMsg */)))
|
|
} else if rc != 0 {
|
|
sqlite3.Xsqlite3_result_error_code(tls, context, rc)
|
|
} else {
|
|
sqlite3.Xsqlite3_result_text(tls, context, (*String)(unsafe.Pointer(bp /* &res */)).z, -1, libc.UintptrFromInt32(-1))
|
|
}
|
|
stringFree(tls, bp)
|
|
}
|
|
|
|
// Look up the next task for client iClient in the database.
|
|
// Return the task script and the task number and mark that
|
|
// task as being under way.
|
|
func startScript(tls *libc.TLS, iClient int32, pzScript uintptr, pTaskId uintptr, pzTaskName uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:541:12: */
|
|
bp := tls.Alloc(80)
|
|
defer tls.Free(80)
|
|
|
|
var pStmt uintptr = uintptr(0)
|
|
var taskId int32
|
|
var rc int32
|
|
var totalTime int32 = 0
|
|
|
|
*(*uintptr)(unsafe.Pointer(pzScript)) = uintptr(0)
|
|
g.iTimeout = 0
|
|
for 1 != 0 {
|
|
rc = trySql(tls, ts+161, 0)
|
|
if rc == SQLITE_BUSY {
|
|
sqlite3.Xsqlite3_sleep(tls, 10)
|
|
totalTime = totalTime + 10
|
|
continue
|
|
}
|
|
if rc != SQLITE_OK {
|
|
fatalError(tls, ts+177, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, g.db)))
|
|
}
|
|
if g.nError != 0 || g.nTest != 0 {
|
|
runSql(tls, ts+196,
|
|
libc.VaList(bp+8, g.nError, g.nTest))
|
|
g.nError = 0
|
|
g.nTest = 0
|
|
}
|
|
pStmt = prepareSql(tls, ts+249, libc.VaList(bp+24, iClient))
|
|
rc = sqlite3.Xsqlite3_step(tls, pStmt)
|
|
sqlite3.Xsqlite3_finalize(tls, pStmt)
|
|
if rc == SQLITE_ROW {
|
|
runSql(tls, ts+295, libc.VaList(bp+32, iClient))
|
|
g.iTimeout = DEFAULT_TIMEOUT
|
|
runSql(tls, ts+326, 0)
|
|
return SQLITE_DONE
|
|
}
|
|
pStmt = prepareSql(tls,
|
|
|
|
ts+346, libc.VaList(bp+40, iClient))
|
|
rc = sqlite3.Xsqlite3_step(tls, pStmt)
|
|
if rc == SQLITE_ROW {
|
|
var n int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, 0)
|
|
*(*uintptr)(unsafe.Pointer(pzScript)) = sqlite3.Xsqlite3_malloc(tls, n+1)
|
|
libc.Xstrcpy(tls, *(*uintptr)(unsafe.Pointer(pzScript)), sqlite3.Xsqlite3_column_text(tls, pStmt, 0))
|
|
*(*int32)(unsafe.Pointer(pTaskId)) = libc.AssignInt32(&taskId, sqlite3.Xsqlite3_column_int(tls, pStmt, 1))
|
|
*(*uintptr)(unsafe.Pointer(pzTaskName)) = sqlite3.Xsqlite3_mprintf(tls, ts+438, libc.VaList(bp+48, sqlite3.Xsqlite3_column_text(tls, pStmt, 2)))
|
|
sqlite3.Xsqlite3_finalize(tls, pStmt)
|
|
runSql(tls,
|
|
|
|
ts+441, libc.VaList(bp+56, taskId))
|
|
g.iTimeout = DEFAULT_TIMEOUT
|
|
runSql(tls, ts+326, 0)
|
|
return SQLITE_OK
|
|
}
|
|
sqlite3.Xsqlite3_finalize(tls, pStmt)
|
|
if rc == SQLITE_DONE {
|
|
if totalTime > 30000 {
|
|
errorMessage(tls, ts+524, 0)
|
|
runSql(tls, ts+573, libc.VaList(bp+64, iClient))
|
|
sqlite3.Xsqlite3_close(tls, g.db)
|
|
libc.Xexit(tls, 1)
|
|
}
|
|
for trySql(tls, ts+613, 0) == SQLITE_BUSY {
|
|
sqlite3.Xsqlite3_sleep(tls, 10)
|
|
totalTime = totalTime + 10
|
|
}
|
|
sqlite3.Xsqlite3_sleep(tls, 100)
|
|
totalTime = totalTime + 100
|
|
continue
|
|
}
|
|
fatalError(tls, ts+438, libc.VaList(bp+72, sqlite3.Xsqlite3_errmsg(tls, g.db)))
|
|
}
|
|
g.iTimeout = DEFAULT_TIMEOUT
|
|
return int32(0)
|
|
}
|
|
|
|
// Mark a script as having finished. Remove the CLIENT table entry
|
|
// if bShutdown is true.
|
|
func finishScript(tls *libc.TLS, iClient int32, taskId int32, bShutdown int32) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:623:12: */
|
|
bp := tls.Alloc(16)
|
|
defer tls.Free(16)
|
|
|
|
runSql(tls,
|
|
|
|
ts+620, libc.VaList(bp, taskId))
|
|
if bShutdown != 0 {
|
|
runSql(tls, ts+295, libc.VaList(bp+8, iClient))
|
|
}
|
|
return SQLITE_OK
|
|
}
|
|
|
|
// Start up a client process for iClient, if it is not already
|
|
// running. If the client is already running, then this routine
|
|
// is a no-op.
|
|
func startClient(tls *libc.TLS, iClient int32) { /* testdata/sqlite-src-3380500/mptest/mptest.c:638:13: */
|
|
bp := tls.Alloc(96)
|
|
defer tls.Free(96)
|
|
|
|
runSql(tls, ts+701, libc.VaList(bp, iClient))
|
|
if sqlite3.Xsqlite3_changes(tls, g.db) != 0 {
|
|
var zSys uintptr
|
|
var rc int32
|
|
zSys = sqlite3.Xsqlite3_mprintf(tls, ts+743,
|
|
libc.VaList(bp+8, g.argv0, g.zDbFile, iClient, g.iTrace))
|
|
if g.bSqlTrace != 0 {
|
|
zSys = sqlite3.Xsqlite3_mprintf(tls, ts+774, libc.VaList(bp+40, zSys))
|
|
}
|
|
if g.bSync != 0 {
|
|
zSys = sqlite3.Xsqlite3_mprintf(tls, ts+788, libc.VaList(bp+48, zSys))
|
|
}
|
|
if g.zVfs != 0 {
|
|
zSys = sqlite3.Xsqlite3_mprintf(tls, ts+798, libc.VaList(bp+56, zSys, g.zVfs))
|
|
}
|
|
if g.iTrace >= 2 {
|
|
logMessage(tls, ts+812, libc.VaList(bp+72, zSys))
|
|
}
|
|
zSys = sqlite3.Xsqlite3_mprintf(tls, ts+825, libc.VaList(bp+80, zSys))
|
|
rc = libc.Xsystem(tls, zSys)
|
|
if rc != 0 {
|
|
errorMessage(tls, ts+830, libc.VaList(bp+88, rc))
|
|
}
|
|
sqlite3.Xsqlite3_free(tls, zSys)
|
|
}
|
|
}
|
|
|
|
// Read the entire content of a file into memory
|
|
func readFile(tls *libc.TLS, zFilename uintptr) uintptr { /* testdata/sqlite-src-3380500/mptest/mptest.c:684:13: */
|
|
bp := tls.Alloc(8)
|
|
defer tls.Free(8)
|
|
|
|
var in uintptr = libc.Xfopen(tls, zFilename, ts+864)
|
|
var sz int64
|
|
var z uintptr
|
|
if in == uintptr(0) {
|
|
fatalError(tls, ts+867, libc.VaList(bp, zFilename))
|
|
}
|
|
libc.Xfseek(tls, in, int64(0), SEEK_END)
|
|
sz = libc.Xftell(tls, in)
|
|
libc.Xrewind(tls, in)
|
|
z = sqlite3.Xsqlite3_malloc(tls, int32(sz+int64(1)))
|
|
sz = int64(libc.Xfread(tls, z, uint64(1), uint64(sz), in))
|
|
*(*int8)(unsafe.Pointer(z + uintptr(sz))) = int8(0)
|
|
libc.Xfclose(tls, in)
|
|
return z
|
|
}
|
|
|
|
// Return the length of the next token.
|
|
func tokenLength(tls *libc.TLS, z uintptr, pnLine uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:704:12: */
|
|
var n int32 = 0
|
|
if libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z))))) != 0 || int32(*(*int8)(unsafe.Pointer(z))) == '/' && int32(*(*int8)(unsafe.Pointer(z + 1))) == '*' {
|
|
var inC int32 = 0
|
|
var c int32
|
|
if int32(*(*int8)(unsafe.Pointer(z))) == '/' {
|
|
inC = 1
|
|
n = 2
|
|
}
|
|
for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&n, 1)))))) != 0 {
|
|
if c == '\n' {
|
|
*(*int32)(unsafe.Pointer(pnLine))++
|
|
}
|
|
if libc.Xisspace(tls, int32(uint8(c))) != 0 {
|
|
continue
|
|
}
|
|
if inC != 0 && c == '*' && int32(*(*int8)(unsafe.Pointer(z + uintptr(n)))) == '/' {
|
|
n++
|
|
inC = 0
|
|
} else if !(inC != 0) && c == '/' && int32(*(*int8)(unsafe.Pointer(z + uintptr(n)))) == '*' {
|
|
n++
|
|
inC = 1
|
|
} else if !(inC != 0) {
|
|
break
|
|
}
|
|
}
|
|
n--
|
|
} else if int32(*(*int8)(unsafe.Pointer(z))) == '-' && int32(*(*int8)(unsafe.Pointer(z + 1))) == '-' {
|
|
for n = 2; *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(n)))) != '\n'; n++ {
|
|
}
|
|
if *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0 {
|
|
*(*int32)(unsafe.Pointer(pnLine))++
|
|
n++
|
|
}
|
|
} else if int32(*(*int8)(unsafe.Pointer(z))) == '"' || int32(*(*int8)(unsafe.Pointer(z))) == '\'' {
|
|
var delim int32 = int32(*(*int8)(unsafe.Pointer(z)))
|
|
for n = 1; *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0; n++ {
|
|
if int32(*(*int8)(unsafe.Pointer(z + uintptr(n)))) == '\n' {
|
|
*(*int32)(unsafe.Pointer(pnLine))++
|
|
}
|
|
if int32(*(*int8)(unsafe.Pointer(z + uintptr(n)))) == delim {
|
|
n++
|
|
if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+1)))) != delim {
|
|
break
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var c int32
|
|
for n = 1; libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(z + uintptr(n))))) != 0 && !(libc.Xisspace(tls, int32(uint8(c))) != 0) && c != '"' && c != '\'' && c != ';'; n++ {
|
|
}
|
|
}
|
|
return n
|
|
}
|
|
|
|
// Copy a single token into a string buffer.
|
|
func extractToken(tls *libc.TLS, zIn uintptr, nIn int32, zOut uintptr, nOut int32) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:749:12: */
|
|
var i int32
|
|
if nIn <= 0 {
|
|
*(*int8)(unsafe.Pointer(zOut)) = int8(0)
|
|
return 0
|
|
}
|
|
for i = 0; i < nIn && i < nOut-1 && !(libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))))) != 0); i++ {
|
|
*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = *(*int8)(unsafe.Pointer(zIn + uintptr(i)))
|
|
}
|
|
*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = int8(0)
|
|
return i
|
|
}
|
|
|
|
// Find the number of characters up to the start of the next "--end" token.
|
|
func findEnd(tls *libc.TLS, z uintptr, pnLine uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:763:12: */
|
|
var n int32 = 0
|
|
for *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0 && (libc.Xstrncmp(tls, z+uintptr(n), ts+896, uint64(5)) != 0 || !(libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n+5)))))) != 0)) {
|
|
n = n + tokenLength(tls, z+uintptr(n), pnLine)
|
|
}
|
|
return n
|
|
}
|
|
|
|
// Find the number of characters up to the first character past the
|
|
// of the next "--endif" or "--else" token. Nested --if commands are
|
|
// also skipped.
|
|
func findEndif(tls *libc.TLS, z uintptr, stopAtElse int32, pnLine uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:776:12: */
|
|
var n int32 = 0
|
|
for *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0 {
|
|
var len int32 = tokenLength(tls, z+uintptr(n), pnLine)
|
|
if libc.Xstrncmp(tls, z+uintptr(n), ts+902, uint64(7)) == 0 && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n+7)))))) != 0 ||
|
|
stopAtElse != 0 && libc.Xstrncmp(tls, z+uintptr(n), ts+910, uint64(6)) == 0 && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n+6)))))) != 0 {
|
|
return n + len
|
|
}
|
|
if libc.Xstrncmp(tls, z+uintptr(n), ts+917, uint64(4)) == 0 && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n+4)))))) != 0 {
|
|
var skip int32 = findEndif(tls, z+uintptr(n)+uintptr(len), 0, pnLine)
|
|
n = n + (skip + len)
|
|
} else {
|
|
n = n + len
|
|
}
|
|
}
|
|
return n
|
|
}
|
|
|
|
// Wait for a client process to complete all its tasks
|
|
func waitForClient(tls *libc.TLS, iClient int32, iTimeout int32, zErrPrefix uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:798:13: */
|
|
bp := tls.Alloc(32)
|
|
defer tls.Free(32)
|
|
|
|
var pStmt uintptr
|
|
var rc int32
|
|
if iClient > 0 {
|
|
pStmt = prepareSql(tls,
|
|
|
|
ts+922,
|
|
libc.VaList(bp, iClient))
|
|
} else {
|
|
pStmt = prepareSql(tls,
|
|
|
|
ts+1018, 0)
|
|
}
|
|
g.iTimeout = 0
|
|
for (libc.AssignInt32(&rc, sqlite3.Xsqlite3_step(tls, pStmt)) == SQLITE_BUSY || rc == SQLITE_ROW) &&
|
|
iTimeout > 0 {
|
|
sqlite3.Xsqlite3_reset(tls, pStmt)
|
|
sqlite3.Xsqlite3_sleep(tls, 50)
|
|
iTimeout = iTimeout - 50
|
|
}
|
|
sqlite3.Xsqlite3_finalize(tls, pStmt)
|
|
g.iTimeout = DEFAULT_TIMEOUT
|
|
if rc != SQLITE_DONE {
|
|
if zErrPrefix == uintptr(0) {
|
|
zErrPrefix = ts + 1099 /* "" */
|
|
}
|
|
if iClient > 0 {
|
|
errorMessage(tls, ts+1100, libc.VaList(bp+8, zErrPrefix, iClient))
|
|
} else {
|
|
errorMessage(tls, ts+1132, libc.VaList(bp+24, zErrPrefix))
|
|
}
|
|
}
|
|
}
|
|
|
|
// Return a pointer to the tail of a filename
|
|
func filenameTail(tls *libc.TLS, z uintptr) uintptr { /* testdata/sqlite-src-3380500/mptest/mptest.c:836:13: */
|
|
var i int32
|
|
var j int32
|
|
for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
|
|
if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == '/' {
|
|
j = i + 1
|
|
}
|
|
}
|
|
return z + uintptr(j)
|
|
}
|
|
|
|
// Interpret zArg as a boolean value. Return either 0 or 1.
|
|
func booleanValue(tls *libc.TLS, zArg uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:845:12: */
|
|
bp := tls.Alloc(8)
|
|
defer tls.Free(8)
|
|
|
|
var i int32
|
|
if zArg == uintptr(0) {
|
|
return 0
|
|
}
|
|
for i = 0; int32(*(*int8)(unsafe.Pointer(zArg + uintptr(i)))) >= '0' && int32(*(*int8)(unsafe.Pointer(zArg + uintptr(i)))) <= '9'; i++ {
|
|
}
|
|
if i > 0 && int32(*(*int8)(unsafe.Pointer(zArg + uintptr(i)))) == 0 {
|
|
return libc.Xatoi(tls, zArg)
|
|
}
|
|
if sqlite3.Xsqlite3_stricmp(tls, zArg, ts+1166) == 0 || sqlite3.Xsqlite3_stricmp(tls, zArg, ts+1169) == 0 {
|
|
return 1
|
|
}
|
|
if sqlite3.Xsqlite3_stricmp(tls, zArg, ts+1173) == 0 || sqlite3.Xsqlite3_stricmp(tls, zArg, ts+1177) == 0 {
|
|
return 0
|
|
}
|
|
errorMessage(tls, ts+1180, libc.VaList(bp, zArg))
|
|
return 0
|
|
}
|
|
|
|
// This routine exists as a convenient place to set a debugger
|
|
// breakpoint.
|
|
func test_breakpoint(tls *libc.TLS) { /* testdata/sqlite-src-3380500/mptest/mptest.c:864:13: */
|
|
atomic.AddInt32(&cnt, 1)
|
|
}
|
|
|
|
var cnt int32 = 0 /* testdata/sqlite-src-3380500/mptest/mptest.c:864:56 */
|
|
|
|
// Maximum number of arguments to a --command
|
|
|
|
// Run a script.
|
|
func runScript(tls *libc.TLS, iClient int32, taskId int32, zScript uintptr, zFilename uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:872:13: */
|
|
bp := tls.Alloc(1610)
|
|
defer tls.Free(1610)
|
|
|
|
*(*int32)(unsafe.Pointer(bp + 376 /* lineno */)) = 1
|
|
var prevLine int32 = 1
|
|
var ii int32 = 0
|
|
var iBegin int32 = 0
|
|
var n int32
|
|
var c int32
|
|
var j int32
|
|
var len int32
|
|
var nArg int32
|
|
// var sResult String at bp+360, 16
|
|
|
|
// var zCmd [30]int8 at bp+380, 30
|
|
|
|
// var zError [1000]int8 at bp+610, 1000
|
|
|
|
// var azArg [2][100]int8 at bp+410, 200
|
|
|
|
libc.Xmemset(tls, bp+360, 0, uint64(unsafe.Sizeof(String{})))
|
|
stringReset(tls, bp+360)
|
|
for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(zScript + uintptr(ii))))) != 0 {
|
|
prevLine = *(*int32)(unsafe.Pointer(bp + 376 /* lineno */))
|
|
len = tokenLength(tls, zScript+uintptr(ii), bp+376)
|
|
if libc.Xisspace(tls, int32(uint8(c))) != 0 || c == '/' && int32(*(*int8)(unsafe.Pointer(zScript + uintptr(ii+1)))) == '*' {
|
|
ii = ii + len
|
|
continue
|
|
}
|
|
if c != '-' || int32(*(*int8)(unsafe.Pointer(zScript + uintptr(ii+1)))) != '-' || !(libc.Xisalpha(tls, int32(*(*int8)(unsafe.Pointer(zScript + uintptr(ii+2))))) != 0) {
|
|
ii = ii + len
|
|
continue
|
|
}
|
|
|
|
// Run any prior SQL before processing the new --command
|
|
if ii > iBegin {
|
|
var zSql uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+1202, libc.VaList(bp, ii-iBegin, zScript+uintptr(iBegin)))
|
|
evalSql(tls, bp+360, zSql, 0)
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
iBegin = ii + len
|
|
}
|
|
|
|
// Parse the --command
|
|
if g.iTrace >= 2 {
|
|
logMessage(tls, ts+1202, libc.VaList(bp+16, len, zScript+uintptr(ii)))
|
|
}
|
|
n = extractToken(tls, zScript+uintptr(ii)+uintptr(2), len-2, bp+380, int32(unsafe.Sizeof([30]int8{})))
|
|
for nArg = 0; n < len-2 && nArg < MX_ARG; nArg++ {
|
|
for n < len-2 && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zScript + uintptr(ii+2+n)))))) != 0 {
|
|
n++
|
|
}
|
|
if n >= len-2 {
|
|
break
|
|
}
|
|
n = n + extractToken(tls, zScript+uintptr(ii)+uintptr(2)+uintptr(n), len-2-n,
|
|
bp+410+uintptr(nArg)*100, int32(unsafe.Sizeof([100]int8{})))
|
|
}
|
|
for j = nArg; j < MX_ARG; j++ {
|
|
*(*int8)(unsafe.Pointer(bp + 410 + uintptr(libc.PostIncInt32(&j, 1))*100)) = int8(0)
|
|
}
|
|
|
|
// --sleep N
|
|
//
|
|
// Pause for N milliseconds
|
|
if libc.Xstrcmp(tls, bp+380, ts+1207) == 0 {
|
|
sqlite3.Xsqlite3_sleep(tls, libc.Xatoi(tls, bp+410))
|
|
} else
|
|
|
|
// --exit N
|
|
//
|
|
// Exit this process. If N>0 then exit without shutting down
|
|
// SQLite. (In other words, simulate a crash.)
|
|
if libc.Xstrcmp(tls, bp+380, ts+1213) == 0 {
|
|
var rc int32 = libc.Xatoi(tls, bp+410)
|
|
finishScript(tls, iClient, taskId, 1)
|
|
if rc == 0 {
|
|
sqlite3.Xsqlite3_close(tls, g.db)
|
|
}
|
|
libc.Xexit(tls, rc)
|
|
} else
|
|
|
|
// --testcase NAME
|
|
//
|
|
// Begin a new test case. Announce in the log that the test case
|
|
// has begun.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1218) == 0 {
|
|
if g.iTrace == 1 {
|
|
logMessage(tls, ts+1202, libc.VaList(bp+32, len-1, zScript+uintptr(ii)))
|
|
}
|
|
stringReset(tls, bp+360)
|
|
} else
|
|
|
|
// --finish
|
|
//
|
|
// Mark the current task as having finished, even if it is not.
|
|
// This can be used in conjunction with --exit to simulate a crash.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1227) == 0 && iClient > 0 {
|
|
finishScript(tls, iClient, taskId, 1)
|
|
} else
|
|
|
|
// --reset
|
|
//
|
|
// Reset accumulated results back to an empty string
|
|
if libc.Xstrcmp(tls, bp+380, ts+1234) == 0 {
|
|
stringReset(tls, bp+360)
|
|
} else
|
|
|
|
// --match ANSWER...
|
|
//
|
|
// Check to see if output matches ANSWER. Report an error if not.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1240) == 0 {
|
|
var jj int32
|
|
var zAns uintptr = zScript + uintptr(ii)
|
|
for jj = 7; jj < len-1 && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zAns + uintptr(jj)))))) != 0; jj++ {
|
|
}
|
|
zAns += uintptr(jj)
|
|
if len-jj-1 != (*String)(unsafe.Pointer(bp+360)).n || libc.Xstrncmp(tls, (*String)(unsafe.Pointer(bp+360)).z, zAns, uint64(len-jj-1)) != 0 {
|
|
errorMessage(tls, ts+1246,
|
|
libc.VaList(bp+48, prevLine, zFilename, len-jj-1, zAns, (*String)(unsafe.Pointer(bp+360 /* &sResult */)).z))
|
|
}
|
|
g.nTest++
|
|
stringReset(tls, bp+360)
|
|
} else
|
|
|
|
// --glob ANSWER...
|
|
// --notglob ANSWER....
|
|
//
|
|
// Check to see if output does or does not match the glob pattern
|
|
// ANSWER.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1291) == 0 || libc.Xstrcmp(tls, bp+380, ts+1296) == 0 {
|
|
var jj int32
|
|
var zAns uintptr = zScript + uintptr(ii)
|
|
var zCopy uintptr
|
|
var isGlob int32 = libc.Bool32(int32(*(*int8)(unsafe.Pointer(bp + 380))) == 'g')
|
|
for jj = 9 - 3*isGlob; jj < len-1 && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zAns + uintptr(jj)))))) != 0; jj++ {
|
|
}
|
|
zAns += uintptr(jj)
|
|
zCopy = sqlite3.Xsqlite3_mprintf(tls, ts+1202, libc.VaList(bp+88, len-jj-1, zAns))
|
|
if libc.Bool32(sqlite3.Xsqlite3_strglob(tls, zCopy, (*String)(unsafe.Pointer(bp+360)).z) == 0)^isGlob != 0 {
|
|
errorMessage(tls, ts+1304,
|
|
libc.VaList(bp+104, prevLine, zFilename, zCopy, (*String)(unsafe.Pointer(bp+360 /* &sResult */)).z))
|
|
}
|
|
sqlite3.Xsqlite3_free(tls, zCopy)
|
|
g.nTest++
|
|
stringReset(tls, bp+360)
|
|
} else
|
|
|
|
// --output
|
|
//
|
|
// Output the result of the previous SQL.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1347) == 0 {
|
|
logMessage(tls, ts+438, libc.VaList(bp+136, (*String)(unsafe.Pointer(bp+360 /* &sResult */)).z))
|
|
} else
|
|
|
|
// --source FILENAME
|
|
//
|
|
// Run a subscript from a separate file.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1354) == 0 {
|
|
var zNewFile uintptr
|
|
var zNewScript uintptr
|
|
var zToDel uintptr = uintptr(0)
|
|
zNewFile = bp + 410
|
|
if !(int32(*(*int8)(unsafe.Pointer(zNewFile))) == '/') {
|
|
var k int32
|
|
for k = int32(libc.Xstrlen(tls, zFilename)) - 1; k >= 0 && !(int32(*(*int8)(unsafe.Pointer(zFilename + uintptr(k)))) == '/'); k-- {
|
|
}
|
|
if k > 0 {
|
|
zNewFile = libc.AssignUintptr(&zToDel, sqlite3.Xsqlite3_mprintf(tls, ts+1361, libc.VaList(bp+144, k, zFilename, zNewFile)))
|
|
}
|
|
}
|
|
zNewScript = readFile(tls, zNewFile)
|
|
if g.iTrace != 0 {
|
|
logMessage(tls, ts+1369, libc.VaList(bp+168, zNewFile))
|
|
}
|
|
runScript(tls, 0, 0, zNewScript, zNewFile)
|
|
sqlite3.Xsqlite3_free(tls, zNewScript)
|
|
if g.iTrace != 0 {
|
|
logMessage(tls, ts+1388, libc.VaList(bp+176, zNewFile))
|
|
}
|
|
sqlite3.Xsqlite3_free(tls, zToDel)
|
|
} else
|
|
|
|
// --print MESSAGE....
|
|
//
|
|
// Output the remainder of the line to the log file
|
|
if libc.Xstrcmp(tls, bp+380, ts+1405) == 0 {
|
|
var jj int32
|
|
for jj = 7; jj < len && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zScript + uintptr(ii+jj)))))) != 0; jj++ {
|
|
}
|
|
logMessage(tls, ts+1202, libc.VaList(bp+184, len-jj, zScript+uintptr(ii)+uintptr(jj)))
|
|
} else
|
|
|
|
// --if EXPR
|
|
//
|
|
// Skip forward to the next matching --endif or --else if EXPR is false.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1411) == 0 {
|
|
var jj int32
|
|
var rc int32
|
|
var pStmt uintptr
|
|
for jj = 4; jj < len && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zScript + uintptr(ii+jj)))))) != 0; jj++ {
|
|
}
|
|
pStmt = prepareSql(tls, ts+1414, libc.VaList(bp+200, len-jj, zScript+uintptr(ii)+uintptr(jj)))
|
|
rc = sqlite3.Xsqlite3_step(tls, pStmt)
|
|
if rc != SQLITE_ROW || sqlite3.Xsqlite3_column_int(tls, pStmt, 0) == 0 {
|
|
ii = ii + findEndif(tls, zScript+uintptr(ii)+uintptr(len), 1, bp+376)
|
|
}
|
|
sqlite3.Xsqlite3_finalize(tls, pStmt)
|
|
} else
|
|
|
|
// --else
|
|
//
|
|
// This command can only be encountered if currently inside an --if that
|
|
// is true. Skip forward to the next matching --endif.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1426) == 0 {
|
|
ii = ii + findEndif(tls, zScript+uintptr(ii)+uintptr(len), 0, bp+376)
|
|
} else
|
|
|
|
// --endif
|
|
//
|
|
// This command can only be encountered if currently inside an --if that
|
|
// is true or an --else of a false if. This is a no-op.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1431) == 0 {
|
|
// no-op
|
|
} else
|
|
|
|
// --start CLIENT
|
|
//
|
|
// Start up the given client.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1437) == 0 && iClient == 0 {
|
|
var iNewClient int32 = libc.Xatoi(tls, bp+410)
|
|
if iNewClient > 0 {
|
|
startClient(tls, iNewClient)
|
|
}
|
|
} else
|
|
|
|
// --wait CLIENT TIMEOUT
|
|
//
|
|
// Wait until all tasks complete for the given client. If CLIENT is
|
|
// "all" then wait for all clients to complete. Wait no longer than
|
|
// TIMEOUT milliseconds (default 10,000)
|
|
if libc.Xstrcmp(tls, bp+380, ts+1443) == 0 && iClient == 0 {
|
|
var iTimeout int32
|
|
if nArg >= 2 {
|
|
iTimeout = libc.Xatoi(tls, bp+410+1*100)
|
|
} else {
|
|
iTimeout = 10000
|
|
}
|
|
sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+610, ts+1448,
|
|
libc.VaList(bp+216, prevLine, zFilename))
|
|
waitForClient(tls, libc.Xatoi(tls, bp+410), iTimeout, bp+610)
|
|
} else
|
|
|
|
// --task CLIENT
|
|
// <task-content-here>
|
|
// --end
|
|
//
|
|
// Assign work to a client. Start the client if it is not running
|
|
// already.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1463) == 0 && iClient == 0 {
|
|
var iTarget int32 = libc.Xatoi(tls, bp+410)
|
|
var iEnd int32
|
|
var zTask uintptr
|
|
var zTName uintptr
|
|
iEnd = findEnd(tls, zScript+uintptr(ii)+uintptr(len), bp+376)
|
|
if iTarget < 0 {
|
|
errorMessage(tls, ts+1468,
|
|
libc.VaList(bp+232, prevLine, zFilename, iTarget))
|
|
} else {
|
|
zTask = sqlite3.Xsqlite3_mprintf(tls, ts+1202, libc.VaList(bp+256, iEnd, zScript+uintptr(ii)+uintptr(len)))
|
|
if nArg > 1 {
|
|
zTName = sqlite3.Xsqlite3_mprintf(tls, ts+438, libc.VaList(bp+272, bp+410+1*100))
|
|
} else {
|
|
zTName = sqlite3.Xsqlite3_mprintf(tls, ts+1505, libc.VaList(bp+280, filenameTail(tls, zFilename), prevLine))
|
|
}
|
|
startClient(tls, iTarget)
|
|
runSql(tls,
|
|
ts+1511, libc.VaList(bp+296, iTarget, zTask, zTName))
|
|
sqlite3.Xsqlite3_free(tls, zTask)
|
|
sqlite3.Xsqlite3_free(tls, zTName)
|
|
}
|
|
iEnd = iEnd + tokenLength(tls, zScript+uintptr(ii)+uintptr(len)+uintptr(iEnd), bp+376)
|
|
len = len + iEnd
|
|
iBegin = ii + len
|
|
} else
|
|
|
|
// --breakpoint
|
|
//
|
|
// This command calls "test_breakpoint()" which is a routine provided
|
|
// as a convenient place to set a debugger breakpoint.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1567) == 0 {
|
|
test_breakpoint(tls)
|
|
} else
|
|
|
|
// --show-sql-errors BOOLEAN
|
|
//
|
|
// Turn display of SQL errors on and off.
|
|
if libc.Xstrcmp(tls, bp+380, ts+1578) == 0 {
|
|
g.bIgnoreSqlErrors = func() int32 {
|
|
if nArg >= 1 {
|
|
return libc.BoolInt32(!(booleanValue(tls, bp+410) != 0))
|
|
}
|
|
return 1
|
|
}()
|
|
} else {
|
|
errorMessage(tls, ts+1594,
|
|
libc.VaList(bp+320, prevLine, zFilename, bp+380))
|
|
}
|
|
ii = ii + len
|
|
}
|
|
if iBegin < ii {
|
|
var zSql uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+1202, libc.VaList(bp+344, ii-iBegin, zScript+uintptr(iBegin)))
|
|
runSql(tls, zSql, 0)
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
}
|
|
stringFree(tls, bp+360)
|
|
}
|
|
|
|
// Look for a command-line option. If present, return a pointer.
|
|
// Return NULL if missing.
|
|
//
|
|
// hasArg==0 means the option is a flag. It is either present or not.
|
|
// hasArg==1 means the option has an argument. Return a pointer to the
|
|
// argument.
|
|
func findOption(tls *libc.TLS, azArg uintptr, pnArg uintptr, zOption uintptr, hasArg int32) uintptr { /* testdata/sqlite-src-3380500/mptest/mptest.c:1201:13: */
|
|
bp := tls.Alloc(8)
|
|
defer tls.Free(8)
|
|
|
|
var i int32
|
|
var j int32
|
|
var zReturn uintptr = uintptr(0)
|
|
var nArg int32 = *(*int32)(unsafe.Pointer(pnArg))
|
|
|
|
for i = 0; i < nArg; i++ {
|
|
var z uintptr
|
|
if i+hasArg >= nArg {
|
|
break
|
|
}
|
|
z = *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8))
|
|
if int32(*(*int8)(unsafe.Pointer(z))) != '-' {
|
|
continue
|
|
}
|
|
z++
|
|
if int32(*(*int8)(unsafe.Pointer(z))) == '-' {
|
|
if int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
|
|
break
|
|
}
|
|
z++
|
|
}
|
|
if libc.Xstrcmp(tls, z, zOption) == 0 {
|
|
if hasArg != 0 && i == nArg-1 {
|
|
fatalError(tls, ts+1630, libc.VaList(bp, z))
|
|
}
|
|
if hasArg != 0 {
|
|
zReturn = *(*uintptr)(unsafe.Pointer(azArg + uintptr(i+1)*8))
|
|
} else {
|
|
zReturn = *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8))
|
|
}
|
|
j = i + 1 + libc.Bool32(hasArg != 0)
|
|
for j < nArg {
|
|
*(*uintptr)(unsafe.Pointer(azArg + uintptr(libc.PostIncInt32(&i, 1))*8)) = *(*uintptr)(unsafe.Pointer(azArg + uintptr(libc.PostIncInt32(&j, 1))*8))
|
|
}
|
|
*(*int32)(unsafe.Pointer(pnArg)) = i
|
|
return zReturn
|
|
}
|
|
}
|
|
return zReturn
|
|
}
|
|
|
|
// Print a usage message for the program and exit
|
|
func usage(tls *libc.TLS, argv0 uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:1241:13: */
|
|
bp := tls.Alloc(8)
|
|
defer tls.Free(8)
|
|
|
|
var i int32
|
|
var zTail uintptr = argv0
|
|
for i = 0; *(*int8)(unsafe.Pointer(argv0 + uintptr(i))) != 0; i++ {
|
|
if int32(*(*int8)(unsafe.Pointer(argv0 + uintptr(i)))) == '/' {
|
|
zTail = argv0 + uintptr(i) + uintptr(1)
|
|
}
|
|
}
|
|
libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+1678, libc.VaList(bp, zTail))
|
|
libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152,
|
|
|
|
ts+1717, 0)
|
|
libc.Xexit(tls, 1)
|
|
}
|
|
|
|
// Report on unrecognized arguments
|
|
func unrecognizedArguments(tls *libc.TLS, argv0 uintptr, nArg int32, azArg uintptr) { /* testdata/sqlite-src-3380500/mptest/mptest.c:1265:13: */
|
|
bp := tls.Alloc(16)
|
|
defer tls.Free(16)
|
|
|
|
var i int32
|
|
libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+2289, libc.VaList(bp, argv0))
|
|
for i = 0; i < nArg; i++ {
|
|
libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+2317, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8))))
|
|
}
|
|
libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+2321, 0)
|
|
libc.Xexit(tls, 1)
|
|
}
|
|
|
|
func main1(tls *libc.TLS, argc int32, argv uintptr) int32 { /* testdata/sqlite-src-3380500/mptest/mptest.c:1279:18: */
|
|
bp := tls.Alloc(264)
|
|
defer tls.Free(264)
|
|
|
|
var zClient uintptr
|
|
var iClient int32
|
|
// var n int32 at bp+232, 4
|
|
|
|
var i int32
|
|
var openFlags int32 = SQLITE_OPEN_READWRITE
|
|
var rc int32
|
|
// var zScript uintptr at bp+240, 8
|
|
|
|
// var taskId int32 at bp+248, 4
|
|
|
|
var zTrace uintptr
|
|
var zCOption uintptr
|
|
var zJMode uintptr
|
|
var zNRep uintptr
|
|
var nRep int32 = 1
|
|
var iRep int32
|
|
var iTmout int32 = 0 // Default: no timeout
|
|
var zTmout uintptr
|
|
|
|
g.argv0 = *(*uintptr)(unsafe.Pointer(argv))
|
|
g.iTrace = 1
|
|
if argc < 2 {
|
|
usage(tls, *(*uintptr)(unsafe.Pointer(argv)))
|
|
}
|
|
g.zDbFile = *(*uintptr)(unsafe.Pointer(argv + 1*8))
|
|
if strglob(tls, ts+2323, g.zDbFile) != 0 {
|
|
usage(tls, *(*uintptr)(unsafe.Pointer(argv)))
|
|
}
|
|
if libc.Xstrcmp(tls, sqlite3.Xsqlite3_sourceid(tls), ts+2330) != 0 {
|
|
libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152,
|
|
|
|
ts+2415,
|
|
libc.VaList(bp, sqlite3.Xsqlite3_sourceid(tls), ts+2330))
|
|
libc.Xexit(tls, 1)
|
|
}
|
|
*(*int32)(unsafe.Pointer(bp + 232 /* n */)) = argc - 2
|
|
sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([32]int8{})), uintptr(unsafe.Pointer(&g))+64, ts+2475, libc.VaList(bp+16, libc.Xgetpid(tls)))
|
|
zJMode = findOption(tls, argv+uintptr(2)*8, bp+232, ts+2487, 1)
|
|
zNRep = findOption(tls, argv+uintptr(2)*8, bp+232, ts+2499, 1)
|
|
if zNRep != 0 {
|
|
nRep = libc.Xatoi(tls, zNRep)
|
|
}
|
|
if nRep < 1 {
|
|
nRep = 1
|
|
}
|
|
g.zVfs = findOption(tls, argv+uintptr(2)*8, bp+232, ts+2506, 1)
|
|
zClient = findOption(tls, argv+uintptr(2)*8, bp+232, ts+2510, 1)
|
|
g.zErrLog = findOption(tls, argv+uintptr(2)*8, bp+232, ts+2517, 1)
|
|
g.zLog = findOption(tls, argv+uintptr(2)*8, bp+232, ts+2524, 1)
|
|
zTrace = findOption(tls, argv+uintptr(2)*8, bp+232, ts+2528, 1)
|
|
if zTrace != 0 {
|
|
g.iTrace = libc.Xatoi(tls, zTrace)
|
|
}
|
|
if findOption(tls, argv+uintptr(2)*8, bp+232, ts+2534, 0) != uintptr(0) {
|
|
g.iTrace = 0
|
|
}
|
|
zTmout = findOption(tls, argv+uintptr(2)*8, bp+232, ts+2540, 1)
|
|
if zTmout != 0 {
|
|
iTmout = libc.Xatoi(tls, zTmout)
|
|
}
|
|
g.bSqlTrace = libc.Bool32(findOption(tls, argv+uintptr(2)*8, bp+232, ts+2548, 0) != uintptr(0))
|
|
g.bSync = libc.Bool32(findOption(tls, argv+uintptr(2)*8, bp+232, ts+2557, 0) != uintptr(0))
|
|
if g.zErrLog != 0 {
|
|
g.pErrLog = libc.Xfopen(tls, g.zErrLog, ts+2562)
|
|
} else {
|
|
g.pErrLog = uintptr(unsafe.Pointer(&libc.X__sF)) + 2*152
|
|
}
|
|
if g.zLog != 0 {
|
|
g.pLog = libc.Xfopen(tls, g.zLog, ts+2562)
|
|
} else {
|
|
g.pLog = uintptr(unsafe.Pointer(&libc.X__sF)) + 1*152
|
|
}
|
|
|
|
sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(&struct {
|
|
f func(*libc.TLS, uintptr, int32, uintptr)
|
|
}{sqlErrorCallback})), 0))
|
|
if zClient != 0 {
|
|
iClient = libc.Xatoi(tls, zClient)
|
|
if iClient < 1 {
|
|
fatalError(tls, ts+2564, libc.VaList(bp+40, iClient))
|
|
}
|
|
sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([32]int8{})), uintptr(unsafe.Pointer(&g))+64, ts+2591,
|
|
libc.VaList(bp+48, libc.Xgetpid(tls), iClient))
|
|
} else {
|
|
var nTry int32 = 0
|
|
if g.iTrace > 0 {
|
|
libc.Xprintf(tls, ts+2607, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv))))
|
|
for i = 1; i < argc; i++ {
|
|
libc.Xprintf(tls, ts+2317, libc.VaList(bp+72, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
}
|
|
libc.Xprintf(tls, ts+2321, 0)
|
|
libc.Xprintf(tls, ts+2617, 0)
|
|
for i = 0; libc.AssignUintptr(&zCOption, sqlite3.Xsqlite3_compileoption_get(tls, i)) != uintptr(0); i++ {
|
|
libc.Xprintf(tls, ts+2722, libc.VaList(bp+80, zCOption))
|
|
}
|
|
libc.Xfflush(tls, uintptr(unsafe.Pointer(&libc.X__sF))+1*152)
|
|
}
|
|
iClient = 0
|
|
for __ccgo := true; __ccgo; __ccgo = rc != 0 && libc.PreIncInt32(&nTry, 1) < 60 && sqlite3.Xsqlite3_sleep(tls, 1000) > 0 {
|
|
if nTry%5 == 4 {
|
|
libc.Xprintf(tls, ts+2735,
|
|
libc.VaList(bp+88, func() uintptr {
|
|
if nTry > 5 {
|
|
return ts + 2764 /* "still " */
|
|
}
|
|
return ts + 1099 /* "" */
|
|
}(), g.zDbFile))
|
|
}
|
|
rc = libc.Xunlink(tls, g.zDbFile)
|
|
if rc != 0 && *(*int32)(unsafe.Pointer(libc.X__errno(tls))) == ENOENT {
|
|
rc = 0
|
|
}
|
|
}
|
|
if rc != 0 {
|
|
fatalError(tls, ts+2771,
|
|
libc.VaList(bp+104, g.zDbFile, nTry))
|
|
}
|
|
openFlags = openFlags | SQLITE_OPEN_CREATE
|
|
}
|
|
rc = sqlite3.Xsqlite3_open_v2(tls, g.zDbFile, uintptr(unsafe.Pointer(&g))+24, openFlags, g.zVfs)
|
|
if rc != 0 {
|
|
fatalError(tls, ts+2812, libc.VaList(bp+120, g.zDbFile))
|
|
}
|
|
if iTmout > 0 {
|
|
sqlite3.Xsqlite3_busy_timeout(tls, g.db, iTmout)
|
|
}
|
|
|
|
if zJMode != 0 {
|
|
runSql(tls, ts+2829, libc.VaList(bp+128, zJMode))
|
|
}
|
|
if !(g.bSync != 0) {
|
|
trySql(tls, ts+2853, 0)
|
|
}
|
|
sqlite3.Xsqlite3_enable_load_extension(tls, g.db, 1)
|
|
sqlite3.Xsqlite3_busy_handler(tls, g.db, *(*uintptr)(unsafe.Pointer(&struct {
|
|
f func(*libc.TLS, uintptr, int32) int32
|
|
}{busyHandler})), uintptr(0))
|
|
sqlite3.Xsqlite3_create_function(tls, g.db, ts+2876, 0, SQLITE_UTF8, uintptr(0),
|
|
*(*uintptr)(unsafe.Pointer(&struct {
|
|
f func(*libc.TLS, uintptr, int32, uintptr)
|
|
}{vfsNameFunc})), uintptr(0), uintptr(0))
|
|
sqlite3.Xsqlite3_create_function(tls, g.db, ts+2884, 1, SQLITE_UTF8, uintptr(0),
|
|
*(*uintptr)(unsafe.Pointer(&struct {
|
|
f func(*libc.TLS, uintptr, int32, uintptr)
|
|
}{evalFunc})), uintptr(0), uintptr(0))
|
|
g.iTimeout = DEFAULT_TIMEOUT
|
|
if g.bSqlTrace != 0 {
|
|
sqlite3.Xsqlite3_trace(tls, g.db, *(*uintptr)(unsafe.Pointer(&struct {
|
|
f func(*libc.TLS, uintptr, uintptr)
|
|
}{sqlTraceCallback})), uintptr(0))
|
|
}
|
|
if iClient > 0 {
|
|
if *(*int32)(unsafe.Pointer(bp + 232)) > 0 {
|
|
unrecognizedArguments(tls, *(*uintptr)(unsafe.Pointer(argv)), *(*int32)(unsafe.Pointer(bp + 232 /* n */)), argv+uintptr(2)*8)
|
|
}
|
|
if g.iTrace != 0 {
|
|
logMessage(tls, ts+2889, 0)
|
|
}
|
|
for 1 != 0 {
|
|
*(*uintptr)(unsafe.Pointer(bp + 256 /* zTaskName */)) = uintptr(0)
|
|
rc = startScript(tls, iClient, bp+240, bp+248, bp+256)
|
|
if rc == SQLITE_DONE {
|
|
break
|
|
}
|
|
if g.iTrace != 0 {
|
|
logMessage(tls, ts+2902, libc.VaList(bp+136, *(*uintptr)(unsafe.Pointer(bp + 256 /* zTaskName */)), *(*int32)(unsafe.Pointer(bp + 248 /* taskId */))))
|
|
}
|
|
runScript(tls, iClient, *(*int32)(unsafe.Pointer(bp + 248 /* taskId */)), *(*uintptr)(unsafe.Pointer(bp + 240 /* zScript */)), *(*uintptr)(unsafe.Pointer(bp + 256 /* zTaskName */)))
|
|
if g.iTrace != 0 {
|
|
logMessage(tls, ts+2916, libc.VaList(bp+152, *(*uintptr)(unsafe.Pointer(bp + 256 /* zTaskName */)), *(*int32)(unsafe.Pointer(bp + 248 /* taskId */))))
|
|
}
|
|
finishScript(tls, iClient, *(*int32)(unsafe.Pointer(bp + 248 /* taskId */)), 0)
|
|
sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 256 /* zTaskName */)))
|
|
sqlite3.Xsqlite3_sleep(tls, 10)
|
|
}
|
|
if g.iTrace != 0 {
|
|
logMessage(tls, ts+2928, 0)
|
|
}
|
|
} else {
|
|
var pStmt uintptr
|
|
var iTimeout int32
|
|
if *(*int32)(unsafe.Pointer(bp + 232)) == 0 {
|
|
fatalError(tls, ts+2939, 0)
|
|
}
|
|
if *(*int32)(unsafe.Pointer(bp + 232)) > 1 {
|
|
unrecognizedArguments(tls, *(*uintptr)(unsafe.Pointer(argv)), *(*int32)(unsafe.Pointer(bp + 232 /* n */)), argv+uintptr(2)*8)
|
|
}
|
|
runSql(tls,
|
|
|
|
ts+2963, 0)
|
|
*(*uintptr)(unsafe.Pointer(bp + 240 /* zScript */)) = readFile(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
|
|
for iRep = 1; iRep <= nRep; iRep++ {
|
|
if g.iTrace != 0 {
|
|
logMessage(tls, ts+3399, libc.VaList(bp+168, *(*uintptr)(unsafe.Pointer(argv + 2*8)), iRep))
|
|
}
|
|
runScript(tls, 0, 0, *(*uintptr)(unsafe.Pointer(bp + 240 /* zScript */)), *(*uintptr)(unsafe.Pointer(argv + 2*8)))
|
|
if g.iTrace != 0 {
|
|
logMessage(tls, ts+3427, libc.VaList(bp+184, *(*uintptr)(unsafe.Pointer(argv + 2*8)), iRep))
|
|
}
|
|
}
|
|
sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 240 /* zScript */)))
|
|
waitForClient(tls, 0, 2000, ts+3453)
|
|
trySql(tls, ts+3473, 0)
|
|
sqlite3.Xsqlite3_sleep(tls, 10)
|
|
g.iTimeout = 0
|
|
iTimeout = 1000
|
|
for (libc.AssignInt32(&rc, trySql(tls, ts+3502, 0)) == SQLITE_BUSY ||
|
|
rc == SQLITE_ROW) && iTimeout > 0 {
|
|
sqlite3.Xsqlite3_sleep(tls, 10)
|
|
iTimeout = iTimeout - 10
|
|
}
|
|
sqlite3.Xsqlite3_sleep(tls, 100)
|
|
pStmt = prepareSql(tls, ts+3523, 0)
|
|
iTimeout = 1000
|
|
for libc.AssignInt32(&rc, sqlite3.Xsqlite3_step(tls, pStmt)) == SQLITE_BUSY && iTimeout > 0 {
|
|
sqlite3.Xsqlite3_sleep(tls, 10)
|
|
iTimeout = iTimeout - 10
|
|
}
|
|
if rc == SQLITE_ROW {
|
|
*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 112)) += sqlite3.Xsqlite3_column_int(tls, pStmt, 0)
|
|
*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 116)) += sqlite3.Xsqlite3_column_int(tls, pStmt, 1)
|
|
}
|
|
sqlite3.Xsqlite3_finalize(tls, pStmt)
|
|
}
|
|
sqlite3.Xsqlite3_close(tls, g.db)
|
|
maybeClose(tls, g.pLog)
|
|
maybeClose(tls, g.pErrLog)
|
|
if iClient == 0 {
|
|
libc.Xprintf(tls, ts+3558, libc.VaList(bp+200, g.nError, g.nTest))
|
|
libc.Xprintf(tls, ts+3594, libc.VaList(bp+216, *(*uintptr)(unsafe.Pointer(argv))))
|
|
for i = 1; i < argc; i++ {
|
|
libc.Xprintf(tls, ts+2317, libc.VaList(bp+224, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
}
|
|
libc.Xprintf(tls, ts+2321, 0)
|
|
}
|
|
return libc.Bool32(g.nError > 0)
|
|
}
|
|
|
|
var ts1 = "%s%.*s\n\x00%s:ERROR: \x00%s:FATAL: \x00UPDATE client SET wantHalt=1;\x00%s: \x00main\x00timeout after %dms\x00[%.*s]\x00(info) %s\x00(errcode=%d) %s\x00%s\n%s\n\x00out of memory\x00 \x00nil\x00'\x00error(%d)\x00BEGIN IMMEDIATE\x00in startScript: %s\x00UPDATE counters SET nError=nError+%d, nTest=nTest+%d\x00SELECT 1 FROM client WHERE id=%d AND wantHalt\x00DELETE FROM client WHERE id=%d\x00COMMIT TRANSACTION;\x00SELECT script, id, name FROM task WHERE client=%d AND starttime IS NULL ORDER BY id LIMIT 1\x00%s\x00UPDATE task SET starttime=strftime('%%Y-%%m-%%d %%H:%%M:%%f','now') WHERE id=%d;\x00Waited over 30 seconds with no work. Giving up.\x00DELETE FROM client WHERE id=%d; COMMIT;\x00COMMIT\x00UPDATE task SET endtime=strftime('%%Y-%%m-%%d %%H:%%M:%%f','now') WHERE id=%d;\x00INSERT OR IGNORE INTO client VALUES(%d,0)\x00%s \"%s\" --client %d --trace %d\x00%z --sqltrace\x00%z --sync\x00%z --vfs \"%s\"\x00system('%q')\x00%z &\x00system() fails with error code %d\x00rb\x00cannot open \"%s\" for reading\x00--end\x00--endif\x00--else\x00--if\x00SELECT 1 FROM task WHERE client=%d AND client IN (SELECT id FROM client) AND endtime IS NULL\x00SELECT 1 FROM task WHERE client IN (SELECT id FROM client) AND endtime IS NULL\x00\x00%stimeout waiting for client %d\x00%stimeout waiting for all clients\x00on\x00yes\x00off\x00no\x00unknown boolean: [%s]\x00%.*s\x00sleep\x00exit\x00testcase\x00finish\x00reset\x00match\x00line %d of %s:\nExpected [%.*s]\n Got [%s]\x00glob\x00notglob\x00line %d of %s:\nExpected [%s]\n Got [%s]\x00output\x00source\x00%.*s/%s\x00begin script [%s]\n\x00end script [%s]\n\x00print\x00if\x00SELECT %.*s\x00else\x00endif\x00start\x00wait\x00line %d of %s\n\x00task\x00line %d of %s: bad client number: %d\x00%s:%d\x00INSERT INTO task(client,script,name) VALUES(%d,'%q',%Q)\x00breakpoint\x00show-sql-errors\x00line %d of %s: unknown command --%s\x00command-line option \"--%s\" requires an argument\x00Usage: %s DATABASE ?OPTIONS? ?SCRIPT?\n\x00Options:\n --errlog FILENAME Write errors to FILENAME\n --journalmode MODE Use MODE as the journal_mode\n --log FILENAME Log messages to FILENAME\n --quiet Suppress unnecessary output\n --vfs NAME Use NAME as the VFS\n --repeat N Repeat the test N times\n --sqltrace Enable SQL tracing\n --sync Enable synchronous disk writes\n --timeout MILLISEC Busy timeout is MILLISEC\n --trace BOOLEAN Enable or disable tracing\n\x00%s: unrecognized arguments:\x00 %s\x00\n\x00*.test\x002022-05-06 15:25:27 78d9c993d404cdfaa7fdd2973fa1052e3da9f66215cff9c5540ebe55c407d9fe\x00SQLite library and header mismatch\nLibrary: %s\nHeader: %s\n\x00%05d.mptest\x00journalmode\x00repeat\x00vfs\x00client\x00errlog\x00log\x00trace\x00quiet\x00timeout\x00sqltrace\x00sync\x00a\x00illegal client number: %d\n\x00%05d.client%02d\x00BEGIN: %s\x00With SQLite 3.38.5 2022-05-06 15:25:27 78d9c993d404cdfaa7fdd2973fa1052e3da9f66215cff9c5540ebe55c407d9fe\n\x00-DSQLITE_%s\n\x00... %strying to unlink '%s'\n\x00still \x00unable to unlink '%s' after %d attempts\n\x00cannot open [%s]\x00PRAGMA journal_mode=%Q;\x00PRAGMA synchronous=OFF\x00vfsname\x00eval\x00start-client\x00begin %s (%d)\x00end %s (%d)\x00end-client\x00missing script filename\x00DROP TABLE IF EXISTS task;\nDROP TABLE IF EXISTS counters;\nDROP TABLE IF EXISTS client;\nCREATE TABLE task(\n id INTEGER PRIMARY KEY,\n name TEXT,\n client INTEGER,\n starttime DATE,\n endtime DATE,\n script TEXT\n);CREATE INDEX task_i1 ON task(client, starttime);\nCREATE INDEX task_i2 ON task(client, endtime);\nCREATE TABLE counters(nError,nTest);\nINSERT INTO counters VALUES(0,0);\nCREATE TABLE client(id INTEGER PRIMARY KEY, wantHalt);\n\x00begin script [%s] cycle %d\n\x00end script [%s] cycle %d\n\x00during shutdown...\n\x00UPDATE client SET wantHalt=1\x00SELECT 1 FROM client\x00SELECT nError, nTest FROM counters\x00Summary: %d errors out of %d tests\n\x00END: %s\x00"
|
|
var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data
|