2022-05-07 22:41:21 +02:00
|
|
|
// Code generated by 'ccgo -export-defines "" -ignore-unsupported-alignment -o speedtest1/main_linux_riscv64.go -trace-translation-units testdata/sqlite-src-3380500/test/speedtest1.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.
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
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 (
|
2022-05-07 22:41:21 +02:00
|
|
|
BIG_ENDIAN = 4321 // /usr/riscv64-linux-gnu/include/endian.h:28:1:
|
|
|
|
BUFSIZ = 8192 // /usr/riscv64-linux-gnu/include/stdio.h:99:1:
|
|
|
|
BYTE_ORDER = 1234 // /usr/riscv64-linux-gnu/include/endian.h:30:1:
|
|
|
|
EOF = -1 // /usr/riscv64-linux-gnu/include/stdio.h:104:1:
|
|
|
|
EXIT_FAILURE = 1 // /usr/riscv64-linux-gnu/include/stdlib.h:91:1:
|
|
|
|
EXIT_SUCCESS = 0 // /usr/riscv64-linux-gnu/include/stdlib.h:92:1:
|
|
|
|
FD_SETSIZE = 1024 // /usr/riscv64-linux-gnu/include/sys/select.h:73:1:
|
|
|
|
FILENAME_MAX = 4096 // /usr/riscv64-linux-gnu/include/bits/stdio_lim.h:27:1:
|
|
|
|
FOPEN_MAX = 16 // /usr/riscv64-linux-gnu/include/bits/stdio_lim.h:37: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/riscv64-linux-gnu/include/unistd.h:1074:1:
|
|
|
|
F_OK = 0 // /usr/riscv64-linux-gnu/include/unistd.h:284:1:
|
|
|
|
F_TEST = 3 // /usr/riscv64-linux-gnu/include/unistd.h:1076:1:
|
|
|
|
F_TLOCK = 2 // /usr/riscv64-linux-gnu/include/unistd.h:1075:1:
|
|
|
|
F_ULOCK = 0 // /usr/riscv64-linux-gnu/include/unistd.h:1073:1:
|
2022-05-02 16:41:55 +02:00
|
|
|
HAVE_USLEEP = 1 // <defines>:2:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
LITTLE_ENDIAN = 1234 // /usr/riscv64-linux-gnu/include/endian.h:27:1:
|
|
|
|
L_INCR = 1 // /usr/riscv64-linux-gnu/include/unistd.h:323:1:
|
|
|
|
L_SET = 0 // /usr/riscv64-linux-gnu/include/unistd.h:322:1:
|
|
|
|
L_XTND = 2 // /usr/riscv64-linux-gnu/include/unistd.h:324:1:
|
|
|
|
L_ctermid = 9 // /usr/riscv64-linux-gnu/include/bits/stdio_lim.h:30:1:
|
|
|
|
L_tmpnam = 20 // /usr/riscv64-linux-gnu/include/bits/stdio_lim.h:25:1:
|
|
|
|
NAMEWIDTH = 60 // testdata/sqlite-src-3380500/test/speedtest1.c:370:1:
|
2022-05-02 16:41:55 +02:00
|
|
|
NDEBUG = 1 // <defines>:1:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
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/riscv64-linux-gnu/include/endian.h:29:1:
|
|
|
|
P_tmpdir = "/tmp" // /usr/riscv64-linux-gnu/include/stdio.h:120:1:
|
|
|
|
RAND_MAX = 2147483647 // /usr/riscv64-linux-gnu/include/stdlib.h:86:1:
|
|
|
|
R_OK = 4 // /usr/riscv64-linux-gnu/include/unistd.h:281:1:
|
|
|
|
SEEK_CUR = 1 // /usr/riscv64-linux-gnu/include/stdio.h:110:1:
|
|
|
|
SEEK_END = 2 // /usr/riscv64-linux-gnu/include/stdio.h:111:1:
|
|
|
|
SEEK_SET = 0 // /usr/riscv64-linux-gnu/include/stdio.h:109: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:
|
2022-05-02 16:41:55 +02:00
|
|
|
SQLITE_CORE = 1 // <defines>:4:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
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:
|
2022-05-02 16:41:55 +02:00
|
|
|
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:
|
2022-05-07 22:41:21 +02:00
|
|
|
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:
|
2022-05-02 16:41:55 +02:00
|
|
|
SQLITE_LIKE_DOESNT_MATCH_BLOBS = 1 // <defines>:18:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
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:
|
2022-05-02 16:41:55 +02:00
|
|
|
SQLITE_MUTEX_APPDEF = 1 // <defines>:19:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
SQLITE_MUTEX_FAST = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:7861:1:
|
2022-05-02 16:41:55 +02:00
|
|
|
SQLITE_MUTEX_NOOP = 1 // <defines>:20:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
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:
|
2022-05-02 16:41:55 +02:00
|
|
|
SQLITE_OS_UNIX = 1 // <defines>:23:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
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:
|
2022-05-02 16:41:55 +02:00
|
|
|
SQLITE_SOUNDEX = 1 // <defines>:21:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
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:
|
2022-05-02 16:41:55 +02:00
|
|
|
SQLITE_THREADSAFE = 1 // <defines>:22:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
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/riscv64-linux-gnu/include/unistd.h:212:1:
|
|
|
|
STDIN_FILENO = 0 // /usr/riscv64-linux-gnu/include/unistd.h:210:1:
|
|
|
|
STDOUT_FILENO = 1 // /usr/riscv64-linux-gnu/include/unistd.h:211:1:
|
|
|
|
TMP_MAX = 238328 // /usr/riscv64-linux-gnu/include/bits/stdio_lim.h:26:1:
|
|
|
|
WCONTINUED = 8 // /usr/riscv64-linux-gnu/include/bits/waitflags.h:32:1:
|
|
|
|
WEXITED = 4 // /usr/riscv64-linux-gnu/include/bits/waitflags.h:31:1:
|
|
|
|
WNOHANG = 1 // /usr/riscv64-linux-gnu/include/bits/waitflags.h:25:1:
|
|
|
|
WNOWAIT = 0x01000000 // /usr/riscv64-linux-gnu/include/bits/waitflags.h:33:1:
|
|
|
|
WSTOPPED = 2 // /usr/riscv64-linux-gnu/include/bits/waitflags.h:30:1:
|
|
|
|
WUNTRACED = 2 // /usr/riscv64-linux-gnu/include/bits/waitflags.h:26:1:
|
|
|
|
W_OK = 2 // /usr/riscv64-linux-gnu/include/unistd.h:282:1:
|
|
|
|
X_OK = 1 // /usr/riscv64-linux-gnu/include/unistd.h:283:1:
|
|
|
|
X_ALLOCA_H = 1 // /usr/riscv64-linux-gnu/include/alloca.h:19:1:
|
|
|
|
X_ANSI_STDARG_H_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stdarg.h:32:1:
|
|
|
|
X_ASSERT_H = 1 // /usr/riscv64-linux-gnu/include/assert.h:34:1:
|
|
|
|
X_ATFILE_SOURCE = 1 // /usr/riscv64-linux-gnu/include/features.h:342:1:
|
|
|
|
X_BITS_BYTESWAP_H = 1 // /usr/riscv64-linux-gnu/include/bits/byteswap.h:24:1:
|
|
|
|
X_BITS_ENDIANNESS_H = 1 // /usr/riscv64-linux-gnu/include/bits/endianness.h:2:1:
|
|
|
|
X_BITS_ENDIAN_H = 1 // /usr/riscv64-linux-gnu/include/bits/endian.h:20:1:
|
|
|
|
X_BITS_FLOATN_COMMON_H = 0 // /usr/riscv64-linux-gnu/include/bits/floatn-common.h:21:1:
|
|
|
|
X_BITS_FLOATN_H = 0 // /usr/riscv64-linux-gnu/include/bits/floatn.h:20:1:
|
|
|
|
X_BITS_POSIX_OPT_H = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:20:1:
|
|
|
|
X_BITS_PTHREADTYPES_ARCH_H = 1 // /usr/riscv64-linux-gnu/include/bits/pthreadtypes-arch.h:20:1:
|
|
|
|
X_BITS_PTHREADTYPES_COMMON_H = 1 // /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:20:1:
|
|
|
|
X_BITS_STDINT_INTN_H = 1 // /usr/riscv64-linux-gnu/include/bits/stdint-intn.h:20:1:
|
|
|
|
X_BITS_STDIO_LIM_H = 1 // /usr/riscv64-linux-gnu/include/bits/stdio_lim.h:19:1:
|
|
|
|
X_BITS_TIME64_H = 1 // /usr/riscv64-linux-gnu/include/bits/time64.h:24:1:
|
|
|
|
X_BITS_TYPESIZES_H = 1 // /usr/riscv64-linux-gnu/include/bits/typesizes.h:25:1:
|
|
|
|
X_BITS_TYPES_H = 1 // /usr/riscv64-linux-gnu/include/bits/types.h:24:1:
|
|
|
|
X_BITS_TYPES_LOCALE_T_H = 1 // /usr/riscv64-linux-gnu/include/bits/types/locale_t.h:20:1:
|
|
|
|
X_BITS_TYPES___LOCALE_T_H = 1 // /usr/riscv64-linux-gnu/include/bits/types/__locale_t.h:21:1:
|
|
|
|
X_BITS_UINTN_IDENTITY_H = 1 // /usr/riscv64-linux-gnu/include/bits/uintn-identity.h:24:1:
|
|
|
|
X_BSD_SIZE_T_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:189:1:
|
|
|
|
X_BSD_SIZE_T_DEFINED_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:192:1:
|
|
|
|
X_CTYPE_H = 1 // /usr/riscv64-linux-gnu/include/ctype.h:23:1:
|
|
|
|
X_DEFAULT_SOURCE = 1 // /usr/riscv64-linux-gnu/include/features.h:227:1:
|
|
|
|
X_ENDIAN_H = 1 // /usr/riscv64-linux-gnu/include/endian.h:19:1:
|
|
|
|
X_FEATURES_H = 1 // /usr/riscv64-linux-gnu/include/features.h:19:1:
|
2022-05-02 16:41:55 +02:00
|
|
|
X_FILE_OFFSET_BITS = 64 // <builtin>:25:1:
|
2022-05-07 22:41:21 +02:00
|
|
|
X_FTS5_H = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:12252:1:
|
|
|
|
X_GCC_SIZE_T = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:195:1:
|
|
|
|
X_GCC_WCHAR_T = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:273:1:
|
|
|
|
X_GETOPT_CORE_H = 1 // /usr/riscv64-linux-gnu/include/bits/getopt_core.h:21:1:
|
|
|
|
X_GETOPT_POSIX_H = 1 // /usr/riscv64-linux-gnu/include/bits/getopt_posix.h:21:1:
|
|
|
|
X_IOFBF = 0 // /usr/riscv64-linux-gnu/include/stdio.h:93:1:
|
|
|
|
X_IOLBF = 1 // /usr/riscv64-linux-gnu/include/stdio.h:94:1:
|
|
|
|
X_IONBF = 2 // /usr/riscv64-linux-gnu/include/stdio.h:95:1:
|
|
|
|
X_IO_EOF_SEEN = 0x0010 // /usr/riscv64-linux-gnu/include/bits/types/struct_FILE.h:111:1:
|
|
|
|
X_IO_ERR_SEEN = 0x0020 // /usr/riscv64-linux-gnu/include/bits/types/struct_FILE.h:114:1:
|
|
|
|
X_IO_USER_LOCK = 0x8000 // /usr/riscv64-linux-gnu/include/bits/types/struct_FILE.h:117:1:
|
|
|
|
X_LFS64_ASYNCHRONOUS_IO = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:117:1:
|
|
|
|
X_LFS64_LARGEFILE = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:121:1:
|
|
|
|
X_LFS64_STDIO = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:122:1:
|
|
|
|
X_LFS_ASYNCHRONOUS_IO = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:112:1:
|
|
|
|
X_LFS_LARGEFILE = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:120:1:
|
|
|
|
X_LP64 = 1 // <predefined>:255:1:
|
|
|
|
X_POSIX2_CHAR_TERM = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:179:1:
|
|
|
|
X_POSIX2_C_BIND = 200809 // /usr/riscv64-linux-gnu/include/unistd.h:74:1:
|
|
|
|
X_POSIX2_C_DEV = 200809 // /usr/riscv64-linux-gnu/include/unistd.h:78:1:
|
|
|
|
X_POSIX2_C_VERSION = 200809 // /usr/riscv64-linux-gnu/include/unistd.h:70:1:
|
|
|
|
X_POSIX2_LOCALEDEF = 200809 // /usr/riscv64-linux-gnu/include/unistd.h:86:1:
|
|
|
|
X_POSIX2_SW_DEV = 200809 // /usr/riscv64-linux-gnu/include/unistd.h:82:1:
|
|
|
|
X_POSIX2_VERSION = 200809 // /usr/riscv64-linux-gnu/include/unistd.h:67:1:
|
|
|
|
X_POSIX_ADVISORY_INFO = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:170:1:
|
|
|
|
X_POSIX_ASYNCHRONOUS_IO = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:109:1:
|
|
|
|
X_POSIX_ASYNC_IO = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:110:1:
|
|
|
|
X_POSIX_BARRIERS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:155:1:
|
|
|
|
X_POSIX_CHOWN_RESTRICTED = 0 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:53:1:
|
|
|
|
X_POSIX_CLOCK_SELECTION = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:167:1:
|
|
|
|
X_POSIX_CPUTIME = 0 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:128:1:
|
|
|
|
X_POSIX_C_SOURCE = 200809 // /usr/riscv64-linux-gnu/include/features.h:281:1:
|
|
|
|
X_POSIX_FSYNC = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:38:1:
|
|
|
|
X_POSIX_IPV6 = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:173:1:
|
|
|
|
X_POSIX_JOB_CONTROL = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:23:1:
|
|
|
|
X_POSIX_MAPPED_FILES = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:41:1:
|
|
|
|
X_POSIX_MEMLOCK = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:44:1:
|
|
|
|
X_POSIX_MEMLOCK_RANGE = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:47:1:
|
|
|
|
X_POSIX_MEMORY_PROTECTION = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:50:1:
|
|
|
|
X_POSIX_MESSAGE_PASSING = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:158:1:
|
|
|
|
X_POSIX_MONOTONIC_CLOCK = 0 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:164:1:
|
|
|
|
X_POSIX_NO_TRUNC = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:60:1:
|
|
|
|
X_POSIX_PRIORITIZED_IO = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:114:1:
|
|
|
|
X_POSIX_PRIORITY_SCHEDULING = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:32:1:
|
|
|
|
X_POSIX_RAW_SOCKETS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:176:1:
|
|
|
|
X_POSIX_READER_WRITER_LOCKS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:137:1:
|
|
|
|
X_POSIX_REALTIME_SIGNALS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:106:1:
|
|
|
|
X_POSIX_REENTRANT_FUNCTIONS = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:75:1:
|
|
|
|
X_POSIX_REGEXP = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:134:1:
|
|
|
|
X_POSIX_SAVED_IDS = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:26:1:
|
|
|
|
X_POSIX_SEMAPHORES = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:103:1:
|
|
|
|
X_POSIX_SHARED_MEMORY_OBJECTS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:125:1:
|
|
|
|
X_POSIX_SHELL = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:140:1:
|
|
|
|
X_POSIX_SOURCE = 1 // /usr/riscv64-linux-gnu/include/features.h:279:1:
|
|
|
|
X_POSIX_SPAWN = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:149:1:
|
|
|
|
X_POSIX_SPIN_LOCKS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:146:1:
|
|
|
|
X_POSIX_SPORADIC_SERVER = -1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:182:1:
|
|
|
|
X_POSIX_SYNCHRONIZED_IO = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:35:1:
|
|
|
|
X_POSIX_THREADS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:72:1:
|
|
|
|
X_POSIX_THREAD_ATTR_STACKADDR = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:85:1:
|
|
|
|
X_POSIX_THREAD_ATTR_STACKSIZE = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:82:1:
|
|
|
|
X_POSIX_THREAD_CPUTIME = 0 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:131:1:
|
|
|
|
X_POSIX_THREAD_PRIORITY_SCHEDULING = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:79:1:
|
|
|
|
X_POSIX_THREAD_PRIO_INHERIT = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:88:1:
|
|
|
|
X_POSIX_THREAD_PRIO_PROTECT = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:92:1:
|
|
|
|
X_POSIX_THREAD_PROCESS_SHARED = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:161:1:
|
|
|
|
X_POSIX_THREAD_ROBUST_PRIO_INHERIT = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:96:1:
|
|
|
|
X_POSIX_THREAD_ROBUST_PRIO_PROTECT = -1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:99:1:
|
|
|
|
X_POSIX_THREAD_SAFE_FUNCTIONS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:76:1:
|
|
|
|
X_POSIX_THREAD_SPORADIC_SERVER = -1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:183:1:
|
|
|
|
X_POSIX_TIMEOUTS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:143:1:
|
|
|
|
X_POSIX_TIMERS = 200809 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:152:1:
|
|
|
|
X_POSIX_TRACE = -1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:186:1:
|
|
|
|
X_POSIX_TRACE_EVENT_FILTER = -1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:187:1:
|
|
|
|
X_POSIX_TRACE_INHERIT = -1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:188:1:
|
|
|
|
X_POSIX_TRACE_LOG = -1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:189:1:
|
|
|
|
X_POSIX_TYPED_MEMORY_OBJECTS = -1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:192:1:
|
|
|
|
X_POSIX_V6_ILP32_OFF32 = -1 // /usr/riscv64-linux-gnu/include/bits/environments.h:47:1:
|
|
|
|
X_POSIX_V6_ILP32_OFFBIG = -1 // /usr/riscv64-linux-gnu/include/bits/environments.h:48:1:
|
|
|
|
X_POSIX_V6_LP64_OFF64 = 1 // /usr/riscv64-linux-gnu/include/bits/environments.h:59:1:
|
|
|
|
X_POSIX_V6_LPBIG_OFFBIG = -1 // /usr/riscv64-linux-gnu/include/bits/environments.h:54:1:
|
|
|
|
X_POSIX_V7_ILP32_OFF32 = -1 // /usr/riscv64-linux-gnu/include/bits/environments.h:45:1:
|
|
|
|
X_POSIX_V7_ILP32_OFFBIG = -1 // /usr/riscv64-linux-gnu/include/bits/environments.h:46:1:
|
|
|
|
X_POSIX_V7_LP64_OFF64 = 1 // /usr/riscv64-linux-gnu/include/bits/environments.h:58:1:
|
|
|
|
X_POSIX_V7_LPBIG_OFFBIG = -1 // /usr/riscv64-linux-gnu/include/bits/environments.h:53:1:
|
|
|
|
X_POSIX_VDISABLE = 0 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:57:1:
|
|
|
|
X_POSIX_VERSION = 200809 // /usr/riscv64-linux-gnu/include/unistd.h:34:1:
|
|
|
|
X_RWLOCK_INTERNAL_H = 0 // /usr/riscv64-linux-gnu/include/bits/struct_rwlock.h:21:1:
|
|
|
|
X_SIZET_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:196:1:
|
|
|
|
X_SIZE_T = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:183:1:
|
|
|
|
X_SIZE_T_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:188:1:
|
|
|
|
X_SIZE_T_DECLARED = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:193:1:
|
|
|
|
X_SIZE_T_DEFINED = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:191:1:
|
|
|
|
X_SIZE_T_DEFINED_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:190:1:
|
|
|
|
X_SQLITE3RTREE_H_ = 0 // testdata/sqlite-amalgamation-3380500/sqlite3.h:10403:1:
|
|
|
|
X_STDARG_H = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stdarg.h:31:1:
|
|
|
|
X_STDC_PREDEF_H = 1 // <predefined>:149:1:
|
|
|
|
X_STDIO_H = 1 // /usr/riscv64-linux-gnu/include/stdio.h:24:1:
|
|
|
|
X_STDLIB_H = 1 // /usr/riscv64-linux-gnu/include/stdlib.h:35:1:
|
|
|
|
X_STRINGS_H = 1 // /usr/riscv64-linux-gnu/include/strings.h:19:1:
|
|
|
|
X_STRING_H = 1 // /usr/riscv64-linux-gnu/include/string.h:23:1:
|
|
|
|
X_STRUCT_TIMESPEC = 1 // /usr/riscv64-linux-gnu/include/bits/types/struct_timespec.h:3:1:
|
|
|
|
X_SYS_CDEFS_H = 1 // /usr/riscv64-linux-gnu/include/sys/cdefs.h:19:1:
|
|
|
|
X_SYS_SELECT_H = 1 // /usr/riscv64-linux-gnu/include/sys/select.h:22:1:
|
|
|
|
X_SYS_SIZE_T_H = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:184:1:
|
|
|
|
X_SYS_TYPES_H = 1 // /usr/riscv64-linux-gnu/include/sys/types.h:23:1:
|
|
|
|
X_THREAD_MUTEX_INTERNAL_H = 1 // /usr/riscv64-linux-gnu/include/bits/struct_mutex.h:20:1:
|
|
|
|
X_THREAD_SHARED_TYPES_H = 1 // /usr/riscv64-linux-gnu/include/bits/thread-shared-types.h:20:1:
|
|
|
|
X_T_SIZE = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:186:1:
|
|
|
|
X_T_SIZE_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:185:1:
|
|
|
|
X_T_WCHAR = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:264:1:
|
|
|
|
X_T_WCHAR_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:263:1:
|
|
|
|
X_UNISTD_H = 1 // /usr/riscv64-linux-gnu/include/unistd.h:23:1:
|
|
|
|
X_VA_LIST = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stdarg.h:108:1:
|
|
|
|
X_VA_LIST_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stdarg.h:105:1:
|
|
|
|
X_VA_LIST_DEFINED = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stdarg.h:111:1:
|
|
|
|
X_VA_LIST_T_H = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stdarg.h:114:1:
|
|
|
|
X_WCHAR_T = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:262:1:
|
|
|
|
X_WCHAR_T_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:266:1:
|
|
|
|
X_WCHAR_T_DECLARED = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:274:1:
|
|
|
|
X_WCHAR_T_DEFINED = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:269:1:
|
|
|
|
X_WCHAR_T_DEFINED_ = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:268:1:
|
|
|
|
X_WCHAR_T_H = 0 // /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stddef.h:270:1:
|
|
|
|
X_XBS5_ILP32_OFF32 = -1 // /usr/riscv64-linux-gnu/include/bits/environments.h:49:1:
|
|
|
|
X_XBS5_ILP32_OFFBIG = -1 // /usr/riscv64-linux-gnu/include/bits/environments.h:50:1:
|
|
|
|
X_XBS5_LP64_OFF64 = 1 // /usr/riscv64-linux-gnu/include/bits/environments.h:60:1:
|
|
|
|
X_XBS5_LPBIG_OFFBIG = -1 // /usr/riscv64-linux-gnu/include/bits/environments.h:55:1:
|
|
|
|
X_XOPEN_ENH_I18N = 1 // /usr/riscv64-linux-gnu/include/unistd.h:112:1:
|
|
|
|
X_XOPEN_LEGACY = 1 // /usr/riscv64-linux-gnu/include/unistd.h:115:1:
|
|
|
|
X_XOPEN_REALTIME = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:63:1:
|
|
|
|
X_XOPEN_REALTIME_THREADS = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:66:1:
|
|
|
|
X_XOPEN_SHM = 1 // /usr/riscv64-linux-gnu/include/bits/posix_opt.h:69:1:
|
|
|
|
X_XOPEN_UNIX = 1 // /usr/riscv64-linux-gnu/include/unistd.h:108:1:
|
|
|
|
X_XOPEN_VERSION = 700 // /usr/riscv64-linux-gnu/include/unistd.h:90:1:
|
|
|
|
X_XOPEN_XCU_VERSION = 4 // /usr/riscv64-linux-gnu/include/unistd.h:100:1:
|
|
|
|
X_XOPEN_XPG2 = 1 // /usr/riscv64-linux-gnu/include/unistd.h:103:1:
|
|
|
|
X_XOPEN_XPG3 = 1 // /usr/riscv64-linux-gnu/include/unistd.h:104:1:
|
|
|
|
X_XOPEN_XPG4 = 1 // /usr/riscv64-linux-gnu/include/unistd.h:105:1:
|
|
|
|
Linux = 1 // <predefined>:207:1:
|
|
|
|
Unix = 1 // <predefined>:163:1:
|
2022-03-12 21:53:57 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf';
|
|
|
|
// the `_SC_*' symbols for the NAME argument to `sysconf';
|
|
|
|
// and the `_CS_*' symbols for the NAME argument to `confstr'.
|
|
|
|
// `sysconf', `pathconf', and `confstr' NAME values. Generic version.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1993-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Values for the NAME argument to `pathconf' and `fpathconf'.
|
2022-05-07 22:41:21 +02:00
|
|
|
const ( /* /usr/riscv64-linux-gnu/include/bits/confname.h:24:1: */
|
2022-03-12 21:53:57 +00:00
|
|
|
_PC_LINK_MAX = 0
|
|
|
|
_PC_MAX_CANON = 1
|
|
|
|
_PC_MAX_INPUT = 2
|
|
|
|
_PC_NAME_MAX = 3
|
|
|
|
_PC_PATH_MAX = 4
|
|
|
|
_PC_PIPE_BUF = 5
|
|
|
|
_PC_CHOWN_RESTRICTED = 6
|
|
|
|
_PC_NO_TRUNC = 7
|
|
|
|
_PC_VDISABLE = 8
|
|
|
|
_PC_SYNC_IO = 9
|
|
|
|
_PC_ASYNC_IO = 10
|
|
|
|
_PC_PRIO_IO = 11
|
|
|
|
_PC_SOCK_MAXBUF = 12
|
|
|
|
_PC_FILESIZEBITS = 13
|
|
|
|
_PC_REC_INCR_XFER_SIZE = 14
|
|
|
|
_PC_REC_MAX_XFER_SIZE = 15
|
|
|
|
_PC_REC_MIN_XFER_SIZE = 16
|
|
|
|
_PC_REC_XFER_ALIGN = 17
|
|
|
|
_PC_ALLOC_SIZE_MIN = 18
|
|
|
|
_PC_SYMLINK_MAX = 19
|
|
|
|
_PC_2_SYMLINKS = 20
|
|
|
|
)
|
|
|
|
|
|
|
|
// Values for the NAME argument to `confstr'.
|
2022-05-07 22:41:21 +02:00
|
|
|
const ( /* /usr/riscv64-linux-gnu/include/bits/confname.h:533:1: */
|
2022-03-12 21:53:57 +00:00
|
|
|
_CS_PATH = 0 // The default search path.
|
|
|
|
|
|
|
|
_CS_V6_WIDTH_RESTRICTED_ENVS = 1
|
|
|
|
|
|
|
|
_CS_GNU_LIBC_VERSION = 2
|
|
|
|
_CS_GNU_LIBPTHREAD_VERSION = 3
|
|
|
|
|
|
|
|
_CS_V5_WIDTH_RESTRICTED_ENVS = 4
|
|
|
|
|
|
|
|
_CS_V7_WIDTH_RESTRICTED_ENVS = 5
|
|
|
|
|
|
|
|
_CS_LFS_CFLAGS = 1000
|
|
|
|
_CS_LFS_LDFLAGS = 1001
|
|
|
|
_CS_LFS_LIBS = 1002
|
|
|
|
_CS_LFS_LINTFLAGS = 1003
|
|
|
|
_CS_LFS64_CFLAGS = 1004
|
|
|
|
_CS_LFS64_LDFLAGS = 1005
|
|
|
|
_CS_LFS64_LIBS = 1006
|
|
|
|
_CS_LFS64_LINTFLAGS = 1007
|
|
|
|
|
|
|
|
_CS_XBS5_ILP32_OFF32_CFLAGS = 1100
|
|
|
|
_CS_XBS5_ILP32_OFF32_LDFLAGS = 1101
|
|
|
|
_CS_XBS5_ILP32_OFF32_LIBS = 1102
|
|
|
|
_CS_XBS5_ILP32_OFF32_LINTFLAGS = 1103
|
|
|
|
_CS_XBS5_ILP32_OFFBIG_CFLAGS = 1104
|
|
|
|
_CS_XBS5_ILP32_OFFBIG_LDFLAGS = 1105
|
|
|
|
_CS_XBS5_ILP32_OFFBIG_LIBS = 1106
|
|
|
|
_CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107
|
|
|
|
_CS_XBS5_LP64_OFF64_CFLAGS = 1108
|
|
|
|
_CS_XBS5_LP64_OFF64_LDFLAGS = 1109
|
|
|
|
_CS_XBS5_LP64_OFF64_LIBS = 1110
|
|
|
|
_CS_XBS5_LP64_OFF64_LINTFLAGS = 1111
|
|
|
|
_CS_XBS5_LPBIG_OFFBIG_CFLAGS = 1112
|
|
|
|
_CS_XBS5_LPBIG_OFFBIG_LDFLAGS = 1113
|
|
|
|
_CS_XBS5_LPBIG_OFFBIG_LIBS = 1114
|
|
|
|
_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115
|
|
|
|
|
|
|
|
_CS_POSIX_V6_ILP32_OFF32_CFLAGS = 1116
|
|
|
|
_CS_POSIX_V6_ILP32_OFF32_LDFLAGS = 1117
|
|
|
|
_CS_POSIX_V6_ILP32_OFF32_LIBS = 1118
|
|
|
|
_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS = 1119
|
|
|
|
_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS = 1120
|
|
|
|
_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS = 1121
|
|
|
|
_CS_POSIX_V6_ILP32_OFFBIG_LIBS = 1122
|
|
|
|
_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123
|
|
|
|
_CS_POSIX_V6_LP64_OFF64_CFLAGS = 1124
|
|
|
|
_CS_POSIX_V6_LP64_OFF64_LDFLAGS = 1125
|
|
|
|
_CS_POSIX_V6_LP64_OFF64_LIBS = 1126
|
|
|
|
_CS_POSIX_V6_LP64_OFF64_LINTFLAGS = 1127
|
|
|
|
_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS = 1128
|
|
|
|
_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS = 1129
|
|
|
|
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS = 1130
|
|
|
|
_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131
|
|
|
|
|
|
|
|
_CS_POSIX_V7_ILP32_OFF32_CFLAGS = 1132
|
|
|
|
_CS_POSIX_V7_ILP32_OFF32_LDFLAGS = 1133
|
|
|
|
_CS_POSIX_V7_ILP32_OFF32_LIBS = 1134
|
|
|
|
_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS = 1135
|
|
|
|
_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS = 1136
|
|
|
|
_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS = 1137
|
|
|
|
_CS_POSIX_V7_ILP32_OFFBIG_LIBS = 1138
|
|
|
|
_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS = 1139
|
|
|
|
_CS_POSIX_V7_LP64_OFF64_CFLAGS = 1140
|
|
|
|
_CS_POSIX_V7_LP64_OFF64_LDFLAGS = 1141
|
|
|
|
_CS_POSIX_V7_LP64_OFF64_LIBS = 1142
|
|
|
|
_CS_POSIX_V7_LP64_OFF64_LINTFLAGS = 1143
|
|
|
|
_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS = 1144
|
|
|
|
_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS = 1145
|
|
|
|
_CS_POSIX_V7_LPBIG_OFFBIG_LIBS = 1146
|
|
|
|
_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS = 1147
|
|
|
|
|
|
|
|
_CS_V6_ENV = 1148
|
|
|
|
_CS_V7_ENV = 1149
|
|
|
|
)
|
|
|
|
|
|
|
|
// Values for the argument to `sysconf'.
|
2022-05-07 22:41:21 +02:00
|
|
|
const ( /* /usr/riscv64-linux-gnu/include/bits/confname.h:71:1: */
|
2022-03-12 21:53:57 +00:00
|
|
|
_SC_ARG_MAX = 0
|
|
|
|
_SC_CHILD_MAX = 1
|
|
|
|
_SC_CLK_TCK = 2
|
|
|
|
_SC_NGROUPS_MAX = 3
|
|
|
|
_SC_OPEN_MAX = 4
|
|
|
|
_SC_STREAM_MAX = 5
|
|
|
|
_SC_TZNAME_MAX = 6
|
|
|
|
_SC_JOB_CONTROL = 7
|
|
|
|
_SC_SAVED_IDS = 8
|
|
|
|
_SC_REALTIME_SIGNALS = 9
|
|
|
|
_SC_PRIORITY_SCHEDULING = 10
|
|
|
|
_SC_TIMERS = 11
|
|
|
|
_SC_ASYNCHRONOUS_IO = 12
|
|
|
|
_SC_PRIORITIZED_IO = 13
|
|
|
|
_SC_SYNCHRONIZED_IO = 14
|
|
|
|
_SC_FSYNC = 15
|
|
|
|
_SC_MAPPED_FILES = 16
|
|
|
|
_SC_MEMLOCK = 17
|
|
|
|
_SC_MEMLOCK_RANGE = 18
|
|
|
|
_SC_MEMORY_PROTECTION = 19
|
|
|
|
_SC_MESSAGE_PASSING = 20
|
|
|
|
_SC_SEMAPHORES = 21
|
|
|
|
_SC_SHARED_MEMORY_OBJECTS = 22
|
|
|
|
_SC_AIO_LISTIO_MAX = 23
|
|
|
|
_SC_AIO_MAX = 24
|
|
|
|
_SC_AIO_PRIO_DELTA_MAX = 25
|
|
|
|
_SC_DELAYTIMER_MAX = 26
|
|
|
|
_SC_MQ_OPEN_MAX = 27
|
|
|
|
_SC_MQ_PRIO_MAX = 28
|
|
|
|
_SC_VERSION = 29
|
|
|
|
_SC_PAGESIZE = 30
|
|
|
|
_SC_RTSIG_MAX = 31
|
|
|
|
_SC_SEM_NSEMS_MAX = 32
|
|
|
|
_SC_SEM_VALUE_MAX = 33
|
|
|
|
_SC_SIGQUEUE_MAX = 34
|
|
|
|
_SC_TIMER_MAX = 35
|
|
|
|
|
|
|
|
// Values for the argument to `sysconf'
|
|
|
|
// corresponding to _POSIX2_* symbols.
|
|
|
|
_SC_BC_BASE_MAX = 36
|
|
|
|
_SC_BC_DIM_MAX = 37
|
|
|
|
_SC_BC_SCALE_MAX = 38
|
|
|
|
_SC_BC_STRING_MAX = 39
|
|
|
|
_SC_COLL_WEIGHTS_MAX = 40
|
|
|
|
_SC_EQUIV_CLASS_MAX = 41
|
|
|
|
_SC_EXPR_NEST_MAX = 42
|
|
|
|
_SC_LINE_MAX = 43
|
|
|
|
_SC_RE_DUP_MAX = 44
|
|
|
|
_SC_CHARCLASS_NAME_MAX = 45
|
|
|
|
|
|
|
|
_SC_2_VERSION = 46
|
|
|
|
_SC_2_C_BIND = 47
|
|
|
|
_SC_2_C_DEV = 48
|
|
|
|
_SC_2_FORT_DEV = 49
|
|
|
|
_SC_2_FORT_RUN = 50
|
|
|
|
_SC_2_SW_DEV = 51
|
|
|
|
_SC_2_LOCALEDEF = 52
|
|
|
|
|
|
|
|
_SC_PII = 53
|
|
|
|
_SC_PII_XTI = 54
|
|
|
|
_SC_PII_SOCKET = 55
|
|
|
|
_SC_PII_INTERNET = 56
|
|
|
|
_SC_PII_OSI = 57
|
|
|
|
_SC_POLL = 58
|
|
|
|
_SC_SELECT = 59
|
|
|
|
_SC_UIO_MAXIOV = 60
|
|
|
|
_SC_IOV_MAX = 60
|
|
|
|
_SC_PII_INTERNET_STREAM = 61
|
|
|
|
_SC_PII_INTERNET_DGRAM = 62
|
|
|
|
_SC_PII_OSI_COTS = 63
|
|
|
|
_SC_PII_OSI_CLTS = 64
|
|
|
|
_SC_PII_OSI_M = 65
|
|
|
|
_SC_T_IOV_MAX = 66
|
|
|
|
|
|
|
|
// Values according to POSIX 1003.1c (POSIX threads).
|
|
|
|
_SC_THREADS = 67
|
|
|
|
_SC_THREAD_SAFE_FUNCTIONS = 68
|
|
|
|
_SC_GETGR_R_SIZE_MAX = 69
|
|
|
|
_SC_GETPW_R_SIZE_MAX = 70
|
|
|
|
_SC_LOGIN_NAME_MAX = 71
|
|
|
|
_SC_TTY_NAME_MAX = 72
|
|
|
|
_SC_THREAD_DESTRUCTOR_ITERATIONS = 73
|
|
|
|
_SC_THREAD_KEYS_MAX = 74
|
|
|
|
_SC_THREAD_STACK_MIN = 75
|
|
|
|
_SC_THREAD_THREADS_MAX = 76
|
|
|
|
_SC_THREAD_ATTR_STACKADDR = 77
|
|
|
|
_SC_THREAD_ATTR_STACKSIZE = 78
|
|
|
|
_SC_THREAD_PRIORITY_SCHEDULING = 79
|
|
|
|
_SC_THREAD_PRIO_INHERIT = 80
|
|
|
|
_SC_THREAD_PRIO_PROTECT = 81
|
|
|
|
_SC_THREAD_PROCESS_SHARED = 82
|
|
|
|
|
|
|
|
_SC_NPROCESSORS_CONF = 83
|
|
|
|
_SC_NPROCESSORS_ONLN = 84
|
|
|
|
_SC_PHYS_PAGES = 85
|
|
|
|
_SC_AVPHYS_PAGES = 86
|
|
|
|
_SC_ATEXIT_MAX = 87
|
|
|
|
_SC_PASS_MAX = 88
|
|
|
|
|
|
|
|
_SC_XOPEN_VERSION = 89
|
|
|
|
_SC_XOPEN_XCU_VERSION = 90
|
|
|
|
_SC_XOPEN_UNIX = 91
|
|
|
|
_SC_XOPEN_CRYPT = 92
|
|
|
|
_SC_XOPEN_ENH_I18N = 93
|
|
|
|
_SC_XOPEN_SHM = 94
|
|
|
|
|
|
|
|
_SC_2_CHAR_TERM = 95
|
|
|
|
_SC_2_C_VERSION = 96
|
|
|
|
_SC_2_UPE = 97
|
|
|
|
|
|
|
|
_SC_XOPEN_XPG2 = 98
|
|
|
|
_SC_XOPEN_XPG3 = 99
|
|
|
|
_SC_XOPEN_XPG4 = 100
|
|
|
|
|
|
|
|
_SC_CHAR_BIT = 101
|
|
|
|
_SC_CHAR_MAX = 102
|
|
|
|
_SC_CHAR_MIN = 103
|
|
|
|
_SC_INT_MAX = 104
|
|
|
|
_SC_INT_MIN = 105
|
|
|
|
_SC_LONG_BIT = 106
|
|
|
|
_SC_WORD_BIT = 107
|
|
|
|
_SC_MB_LEN_MAX = 108
|
|
|
|
_SC_NZERO = 109
|
|
|
|
_SC_SSIZE_MAX = 110
|
|
|
|
_SC_SCHAR_MAX = 111
|
|
|
|
_SC_SCHAR_MIN = 112
|
|
|
|
_SC_SHRT_MAX = 113
|
|
|
|
_SC_SHRT_MIN = 114
|
|
|
|
_SC_UCHAR_MAX = 115
|
|
|
|
_SC_UINT_MAX = 116
|
|
|
|
_SC_ULONG_MAX = 117
|
|
|
|
_SC_USHRT_MAX = 118
|
|
|
|
|
|
|
|
_SC_NL_ARGMAX = 119
|
|
|
|
_SC_NL_LANGMAX = 120
|
|
|
|
_SC_NL_MSGMAX = 121
|
|
|
|
_SC_NL_NMAX = 122
|
|
|
|
_SC_NL_SETMAX = 123
|
|
|
|
_SC_NL_TEXTMAX = 124
|
|
|
|
|
|
|
|
_SC_XBS5_ILP32_OFF32 = 125
|
|
|
|
_SC_XBS5_ILP32_OFFBIG = 126
|
|
|
|
_SC_XBS5_LP64_OFF64 = 127
|
|
|
|
_SC_XBS5_LPBIG_OFFBIG = 128
|
|
|
|
|
|
|
|
_SC_XOPEN_LEGACY = 129
|
|
|
|
_SC_XOPEN_REALTIME = 130
|
|
|
|
_SC_XOPEN_REALTIME_THREADS = 131
|
|
|
|
|
|
|
|
_SC_ADVISORY_INFO = 132
|
|
|
|
_SC_BARRIERS = 133
|
|
|
|
_SC_BASE = 134
|
|
|
|
_SC_C_LANG_SUPPORT = 135
|
|
|
|
_SC_C_LANG_SUPPORT_R = 136
|
|
|
|
_SC_CLOCK_SELECTION = 137
|
|
|
|
_SC_CPUTIME = 138
|
|
|
|
_SC_THREAD_CPUTIME = 139
|
|
|
|
_SC_DEVICE_IO = 140
|
|
|
|
_SC_DEVICE_SPECIFIC = 141
|
|
|
|
_SC_DEVICE_SPECIFIC_R = 142
|
|
|
|
_SC_FD_MGMT = 143
|
|
|
|
_SC_FIFO = 144
|
|
|
|
_SC_PIPE = 145
|
|
|
|
_SC_FILE_ATTRIBUTES = 146
|
|
|
|
_SC_FILE_LOCKING = 147
|
|
|
|
_SC_FILE_SYSTEM = 148
|
|
|
|
_SC_MONOTONIC_CLOCK = 149
|
|
|
|
_SC_MULTI_PROCESS = 150
|
|
|
|
_SC_SINGLE_PROCESS = 151
|
|
|
|
_SC_NETWORKING = 152
|
|
|
|
_SC_READER_WRITER_LOCKS = 153
|
|
|
|
_SC_SPIN_LOCKS = 154
|
|
|
|
_SC_REGEXP = 155
|
|
|
|
_SC_REGEX_VERSION = 156
|
|
|
|
_SC_SHELL = 157
|
|
|
|
_SC_SIGNALS = 158
|
|
|
|
_SC_SPAWN = 159
|
|
|
|
_SC_SPORADIC_SERVER = 160
|
|
|
|
_SC_THREAD_SPORADIC_SERVER = 161
|
|
|
|
_SC_SYSTEM_DATABASE = 162
|
|
|
|
_SC_SYSTEM_DATABASE_R = 163
|
|
|
|
_SC_TIMEOUTS = 164
|
|
|
|
_SC_TYPED_MEMORY_OBJECTS = 165
|
|
|
|
_SC_USER_GROUPS = 166
|
|
|
|
_SC_USER_GROUPS_R = 167
|
|
|
|
_SC_2_PBS = 168
|
|
|
|
_SC_2_PBS_ACCOUNTING = 169
|
|
|
|
_SC_2_PBS_LOCATE = 170
|
|
|
|
_SC_2_PBS_MESSAGE = 171
|
|
|
|
_SC_2_PBS_TRACK = 172
|
|
|
|
_SC_SYMLOOP_MAX = 173
|
|
|
|
_SC_STREAMS = 174
|
|
|
|
_SC_2_PBS_CHECKPOINT = 175
|
|
|
|
|
|
|
|
_SC_V6_ILP32_OFF32 = 176
|
|
|
|
_SC_V6_ILP32_OFFBIG = 177
|
|
|
|
_SC_V6_LP64_OFF64 = 178
|
|
|
|
_SC_V6_LPBIG_OFFBIG = 179
|
|
|
|
|
|
|
|
_SC_HOST_NAME_MAX = 180
|
|
|
|
_SC_TRACE = 181
|
|
|
|
_SC_TRACE_EVENT_FILTER = 182
|
|
|
|
_SC_TRACE_INHERIT = 183
|
|
|
|
_SC_TRACE_LOG = 184
|
|
|
|
|
|
|
|
_SC_LEVEL1_ICACHE_SIZE = 185
|
|
|
|
_SC_LEVEL1_ICACHE_ASSOC = 186
|
|
|
|
_SC_LEVEL1_ICACHE_LINESIZE = 187
|
|
|
|
_SC_LEVEL1_DCACHE_SIZE = 188
|
|
|
|
_SC_LEVEL1_DCACHE_ASSOC = 189
|
|
|
|
_SC_LEVEL1_DCACHE_LINESIZE = 190
|
|
|
|
_SC_LEVEL2_CACHE_SIZE = 191
|
|
|
|
_SC_LEVEL2_CACHE_ASSOC = 192
|
|
|
|
_SC_LEVEL2_CACHE_LINESIZE = 193
|
|
|
|
_SC_LEVEL3_CACHE_SIZE = 194
|
|
|
|
_SC_LEVEL3_CACHE_ASSOC = 195
|
|
|
|
_SC_LEVEL3_CACHE_LINESIZE = 196
|
|
|
|
_SC_LEVEL4_CACHE_SIZE = 197
|
|
|
|
_SC_LEVEL4_CACHE_ASSOC = 198
|
|
|
|
_SC_LEVEL4_CACHE_LINESIZE = 199
|
|
|
|
// Leave room here, maybe we need a few more cache levels some day.
|
|
|
|
|
|
|
|
_SC_IPV6 = 235
|
|
|
|
_SC_RAW_SOCKETS = 236
|
|
|
|
|
|
|
|
_SC_V7_ILP32_OFF32 = 237
|
|
|
|
_SC_V7_ILP32_OFFBIG = 238
|
|
|
|
_SC_V7_LP64_OFF64 = 239
|
|
|
|
_SC_V7_LPBIG_OFFBIG = 240
|
|
|
|
|
|
|
|
_SC_SS_REPL_MAX = 241
|
|
|
|
|
|
|
|
_SC_TRACE_EVENT_NAME_MAX = 242
|
|
|
|
_SC_TRACE_NAME_MAX = 243
|
|
|
|
_SC_TRACE_SYS_MAX = 244
|
|
|
|
_SC_TRACE_USER_EVENT_MAX = 245
|
|
|
|
|
|
|
|
_SC_XOPEN_STREAMS = 246
|
|
|
|
|
|
|
|
_SC_THREAD_ROBUST_PRIO_INHERIT = 247
|
|
|
|
_SC_THREAD_ROBUST_PRIO_PROTECT = 248
|
2022-05-07 22:41:21 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// A null pointer constant.
|
|
|
|
|
|
|
|
// XPG requires a few symbols from <sys/wait.h> being defined.
|
|
|
|
// Definitions of flag bits for `waitpid' et al.
|
|
|
|
// Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Bits in the third argument to `waitpid'.
|
|
|
|
|
|
|
|
// Bits in the fourth argument to `waitid'.
|
|
|
|
|
|
|
|
// The following values are used by the `waitid' function.
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// The Linux kernel defines these bare, rather than an enum,
|
|
|
|
// which causes a conflict if the include order is reversed.
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
const ( /* /usr/riscv64-linux-gnu/include/bits/waitflags.h:52:1: */
|
|
|
|
P_ALL = 0 // Wait for any child.
|
|
|
|
P_PID = 1 // Wait for specified process.
|
|
|
|
P_PGID = 2
|
|
|
|
)
|
|
|
|
|
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// ISO C99 Standard 7.4: Character handling <ctype.h>
|
|
|
|
|
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
|
|
|
// These are all the characteristics of characters.
|
|
|
|
// If there get to be more than 16 distinct characteristics,
|
|
|
|
// many things must be changed that use `unsigned short int's.
|
|
|
|
//
|
|
|
|
// The characteristics are stored always in network byte order (big
|
|
|
|
// endian). We define the bit value interpretations here dependent on the
|
|
|
|
// machine's byte order.
|
|
|
|
|
|
|
|
// Endian macros for string.h functions
|
|
|
|
// Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
const ( /* /usr/riscv64-linux-gnu/include/ctype.h:46:1: */
|
|
|
|
_ISupper = 256 // UPPERCASE.
|
|
|
|
_ISlower = 512 // lowercase.
|
|
|
|
_ISalpha = 1024 // Alphabetic.
|
|
|
|
_ISdigit = 2048 // Numeric.
|
|
|
|
_ISxdigit = 4096 // Hexadecimal numeric.
|
|
|
|
_ISspace = 8192 // Whitespace.
|
|
|
|
_ISprint = 16384 // Printing.
|
|
|
|
_ISgraph = 32768 // Graphical.
|
|
|
|
_ISblank = 1 // Blank (usually SPC and TAB).
|
|
|
|
_IScntrl = 2 // Control character.
|
|
|
|
_ISpunct = 4 // Punctuation.
|
|
|
|
_ISalnum = 8
|
2022-03-12 21:53:57 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type ptrdiff_t = int64 /* <builtin>:3:26 */
|
|
|
|
|
|
|
|
type size_t = uint64 /* <builtin>:9:23 */
|
|
|
|
|
|
|
|
type wchar_t = int32 /* <builtin>:15:24 */
|
|
|
|
|
|
|
|
// A program for performance testing.
|
|
|
|
//
|
|
|
|
// The available command-line options are described below:
|
2022-05-07 22:41:21 +02:00
|
|
|
var zHelp = *(*[2263]uint8)(unsafe.Pointer(ts)) /* testdata/sqlite-src-3380500/test/speedtest1.c:6:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Define the standard macros for the user,
|
|
|
|
// if this invocation was from the user program.
|
|
|
|
|
|
|
|
// Define va_list, if desired, from __gnuc_va_list.
|
|
|
|
// We deliberately do not define va_list when called from
|
|
|
|
// stdio.h, because ANSI C says that stdio.h is not supposed to define
|
|
|
|
// va_list. stdio.h needs to have access to that data type,
|
|
|
|
// but must not use that name. It should use the name __gnuc_va_list,
|
|
|
|
// which is safe because it is reserved for the implementation.
|
|
|
|
|
|
|
|
// The macro _VA_LIST_ is the same thing used by this file in Ultrix.
|
|
|
|
// But on BSD NET2 we must not test or define or undef it.
|
|
|
|
// (Note that the comments in NET 2's ansi.h
|
|
|
|
// are incorrect for _VA_LIST_--see stdio.h!)
|
|
|
|
// The macro _VA_LIST_DEFINED is used in Windows NT 3.5
|
|
|
|
// The macro _VA_LIST is used in SCO Unix 3.2.
|
|
|
|
// The macro _VA_LIST_T_H is used in the Bull dpx2
|
|
|
|
// The macro __va_list__ is used by BeOS.
|
2022-05-07 22:41:21 +02:00
|
|
|
type va_list = uintptr /* /usr/lib/gcc-cross/riscv64-linux-gnu/10/include/stdarg.h:99:24 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
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 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// The type for a callback function.
|
|
|
|
// This is legacy and deprecated. It is included for historical
|
|
|
|
// compatibility and is not documented.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_callback = uintptr /* testdata/sqlite-amalgamation-3380500/sqlite3.h:361:13 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_file1 = struct{ pMethods uintptr } /* testdata/sqlite-amalgamation-3380500/sqlite3.h:722:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_file = sqlite3_file1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:722:29 */
|
2022-03-12 21:53:57 +00:00
|
|
|
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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:722:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_io_methods = sqlite3_io_methods1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:821:35 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:1425:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
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 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:1723:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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().
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_mem_methods = sqlite3_mem_methods1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:1723:36 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_destructor_type = uintptr /* testdata/sqlite-amalgamation-3380500/sqlite3.h:5752:14 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6937:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_vtab = sqlite3_vtab1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6937:29 */
|
2022-03-12 21:53:57 +00:00
|
|
|
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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6938:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
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 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_vtab_cursor = sqlite3_vtab_cursor1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6939:36 */
|
2022-03-12 21:53:57 +00:00
|
|
|
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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6937:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_module = sqlite3_module1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6940:31 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6938:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6938:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:6938:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:7804:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_mutex_methods = sqlite3_mutex_methods1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:7804:38 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8573:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_pcache_page = sqlite3_pcache_page1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8573:36 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8738:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_pcache_methods2 = sqlite3_pcache_methods21 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8738:40 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8761:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_pcache_methods = sqlite3_pcache_methods1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:8761:39 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_snapshot1 = struct{ hidden [48]uint8 } /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10079:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_snapshot = sqlite3_snapshot1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10081:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10410:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
|
|
|
//
|
|
|
|
//
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_rtree_geometry = sqlite3_rtree_geometry1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10410:39 */
|
2022-03-12 21:53:57 +00:00
|
|
|
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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10411:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_rtree_query_info = sqlite3_rtree_query_info1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10411:41 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// The double-precision datatype used by RTree depends on the
|
|
|
|
// SQLITE_RTREE_INT_ONLY compile-time option.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sqlite3_rtree_dbl = float64 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:10419:18 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12266:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type Fts5ExtensionApi = Fts5ExtensionApi1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12266:33 */
|
2022-03-12 21:53:57 +00:00
|
|
|
type Fts5PhraseIter1 = struct {
|
|
|
|
a uintptr
|
|
|
|
b uintptr
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12268:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type Fts5PhraseIter = Fts5PhraseIter1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12268:31 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type fts5_extension_function = uintptr /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12270:14 */
|
2022-03-12 21:53:57 +00:00
|
|
|
type fts5_tokenizer1 = struct {
|
|
|
|
xCreate uintptr
|
|
|
|
xDelete uintptr
|
|
|
|
xTokenize uintptr
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12729:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type fts5_tokenizer = fts5_tokenizer1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12729:31 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12765:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// 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
|
2022-05-07 22:41:21 +02:00
|
|
|
type fts5_api = fts5_api1 /* testdata/sqlite-amalgamation-3380500/sqlite3.h:12765:25 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// The tag name of this struct is _G_fpos_t to preserve historic
|
|
|
|
// C++ mangled names for functions taking fpos_t arguments.
|
|
|
|
// That name should not be used in new code.
|
|
|
|
type _G_fpos_t = struct {
|
|
|
|
__pos int64
|
|
|
|
__state struct {
|
|
|
|
__count int32
|
|
|
|
__value struct{ __wch uint32 }
|
|
|
|
}
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/types/__fpos_t.h:10:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
|
|
|
// The tag name of this struct is _G_fpos64_t to preserve historic
|
|
|
|
// C++ mangled names for functions taking fpos_t and/or fpos64_t
|
|
|
|
// arguments. That name should not be used in new code.
|
|
|
|
type _G_fpos64_t = struct {
|
|
|
|
__pos int64
|
|
|
|
__state struct {
|
|
|
|
__count int32
|
|
|
|
__value struct{ __wch uint32 }
|
|
|
|
}
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/types/__fpos64_t.h:10:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
type _IO_FILE = struct {
|
|
|
|
_flags int32
|
|
|
|
_ [4]byte
|
|
|
|
_IO_read_ptr uintptr
|
|
|
|
_IO_read_end uintptr
|
|
|
|
_IO_read_base uintptr
|
|
|
|
_IO_write_base uintptr
|
|
|
|
_IO_write_ptr uintptr
|
|
|
|
_IO_write_end uintptr
|
|
|
|
_IO_buf_base uintptr
|
|
|
|
_IO_buf_end uintptr
|
|
|
|
_IO_save_base uintptr
|
|
|
|
_IO_backup_base uintptr
|
|
|
|
_IO_save_end uintptr
|
|
|
|
_markers uintptr
|
|
|
|
_chain uintptr
|
|
|
|
_fileno int32
|
|
|
|
_flags2 int32
|
|
|
|
_old_offset int64
|
|
|
|
_cur_column uint16
|
|
|
|
_vtable_offset int8
|
|
|
|
_shortbuf [1]uint8
|
|
|
|
_ [4]byte
|
|
|
|
_lock uintptr
|
|
|
|
_offset int64
|
|
|
|
_codecvt uintptr
|
|
|
|
_wide_data uintptr
|
|
|
|
_freeres_list uintptr
|
|
|
|
_freeres_buf uintptr
|
|
|
|
__pad5 size_t
|
|
|
|
_mode int32
|
|
|
|
_unused2 [20]uint8
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/types/__FILE.h:4:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// The opaque type of streams. This is the definition used elsewhere.
|
2022-05-07 22:41:21 +02:00
|
|
|
type FILE = _IO_FILE /* /usr/riscv64-linux-gnu/include/bits/types/FILE.h:7:25 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// These macros are used by bits/stdio.h and internal headers.
|
|
|
|
|
|
|
|
// Many more flag bits are defined internally.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type off_t = int64 /* /usr/riscv64-linux-gnu/include/stdio.h:65:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type ssize_t = int64 /* /usr/riscv64-linux-gnu/include/stdio.h:77:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// The type of the second argument to `fgetpos' and `fsetpos'.
|
2022-05-07 22:41:21 +02:00
|
|
|
type fpos_t = _G_fpos64_t /* /usr/riscv64-linux-gnu/include/stdio.h:86:20 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// A null pointer constant.
|
|
|
|
|
|
|
|
// XPG requires a few symbols from <sys/wait.h> being defined.
|
|
|
|
// Definitions of flag bits for `waitpid' et al.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Bits in the third argument to `waitpid'.
|
|
|
|
|
|
|
|
// Bits in the fourth argument to `waitid'.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// The following values are used by the `waitid' function.
|
|
|
|
|
|
|
|
// The Linux kernel defines these bare, rather than an enum,
|
|
|
|
// which causes a conflict if the include order is reversed.
|
|
|
|
|
|
|
|
type idtype_t = uint32 /* /usr/riscv64-linux-gnu/include/bits/waitflags.h:57:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
// Definitions of status bits for `wait' et al.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Everything extant so far uses these same bits.
|
|
|
|
|
|
|
|
// If WIFEXITED(STATUS), the low-order 8 bits of the status.
|
|
|
|
|
|
|
|
// If WIFSIGNALED(STATUS), the terminating signal.
|
|
|
|
|
|
|
|
// If WIFSTOPPED(STATUS), the signal that stopped the child.
|
|
|
|
|
|
|
|
// Nonzero if STATUS indicates normal termination.
|
|
|
|
|
|
|
|
// Nonzero if STATUS indicates termination by a signal.
|
|
|
|
|
|
|
|
// Nonzero if STATUS indicates the child is stopped.
|
|
|
|
|
|
|
|
// Nonzero if STATUS indicates the child continued after a stop. We only
|
|
|
|
// define this if <bits/waitflags.h> provides the WCONTINUED flag bit.
|
|
|
|
|
|
|
|
// Nonzero if STATUS indicates the child dumped core.
|
|
|
|
|
|
|
|
// Macros for constructing status values.
|
|
|
|
|
|
|
|
// Define the macros <sys/wait.h> also would define this way.
|
|
|
|
|
|
|
|
// _FloatN API tests for enablement.
|
|
|
|
// Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Properties of long double type. ldbl-128 version.
|
|
|
|
// Copyright (C) 2016-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// long double is distinct from double, so there is nothing to
|
|
|
|
// define here.
|
|
|
|
|
|
|
|
// Defined to 1 if the current compiler invocation provides a
|
|
|
|
// floating-point type with the IEEE 754 binary128 format, and this
|
|
|
|
// glibc includes corresponding *f128 interfaces for it.
|
|
|
|
|
|
|
|
// Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
|
|
|
|
// from the default float, double and long double types in this glibc.
|
|
|
|
|
|
|
|
// Defined to 1 if the current compiler invocation provides a
|
|
|
|
// floating-point type with the right format for _Float64x, and this
|
|
|
|
// glibc includes corresponding *f64x interfaces for it.
|
|
|
|
|
|
|
|
// Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
|
|
|
|
// of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
|
|
|
|
// the format of _Float128, which must be different from that of long
|
|
|
|
// double.
|
|
|
|
|
|
|
|
// Defined to concatenate the literal suffix to be used with _Float128
|
|
|
|
// types, if __HAVE_FLOAT128 is 1.
|
|
|
|
|
|
|
|
// Defined to a complex binary128 type if __HAVE_FLOAT128 is 1.
|
|
|
|
|
|
|
|
// The remaining of this file provides support for older compilers.
|
|
|
|
|
|
|
|
// The type _Float128 exists only since GCC 7.0.
|
|
|
|
|
|
|
|
// Various built-in functions do not exist before GCC 7.0.
|
|
|
|
|
|
|
|
// Macros to control TS 18661-3 glibc features where the same
|
|
|
|
// definitions are appropriate for all platforms.
|
|
|
|
// Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// Properties of long double type. ldbl-128 version.
|
|
|
|
// Copyright (C) 2016-2020 Free Software Foundation, Inc.
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// long double is distinct from double, so there is nothing to
|
|
|
|
// define here.
|
|
|
|
|
|
|
|
// This header should be included at the bottom of each bits/floatn.h.
|
|
|
|
// It defines the following macros for each _FloatN and _FloatNx type,
|
|
|
|
// where the same definitions, or definitions based only on the macros
|
|
|
|
// in bits/floatn.h, are appropriate for all glibc configurations.
|
|
|
|
|
|
|
|
// Defined to 1 if the current compiler invocation provides a
|
|
|
|
// floating-point type with the right format for this type, and this
|
|
|
|
// glibc includes corresponding *fN or *fNx interfaces for it.
|
|
|
|
|
|
|
|
// Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the
|
|
|
|
// type is the first with its format in the sequence of (the default
|
|
|
|
// choices for) float, double, long double, _Float16, _Float32,
|
|
|
|
// _Float64, _Float128, _Float32x, _Float64x, _Float128x for this
|
|
|
|
// glibc; that is, if functions present once per floating-point format
|
|
|
|
// rather than once per type are present for this type.
|
|
|
|
//
|
|
|
|
// All configurations supported by glibc have _Float32 the same format
|
|
|
|
// as float, _Float64 and _Float32x the same format as double, the
|
|
|
|
// _Float64x the same format as either long double or _Float128. No
|
|
|
|
// configurations support _Float128x or, as of GCC 7, have compiler
|
|
|
|
// support for a type meeting the requirements for _Float128x.
|
|
|
|
|
|
|
|
// Defined to 1 if the corresponding _FloatN type is not binary compatible
|
|
|
|
// with the corresponding ISO C type in the current compilation unit as
|
|
|
|
// opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built
|
|
|
|
// in glibc.
|
|
|
|
|
|
|
|
// Defined to 1 if any _FloatN or _FloatNx types that are not
|
|
|
|
// ABI-distinct are however distinct types at the C language level (so
|
|
|
|
// for the purposes of __builtin_types_compatible_p and _Generic).
|
|
|
|
|
|
|
|
// Defined to concatenate the literal suffix to be used with _FloatN
|
|
|
|
// or _FloatNx types, if __HAVE_<type> is 1. The corresponding
|
|
|
|
// literal suffixes exist since GCC 7, for C only.
|
|
|
|
|
|
|
|
// Defined to a complex type if __HAVE_<type> is 1.
|
|
|
|
|
|
|
|
// The remaining of this file provides support for older compilers.
|
|
|
|
|
|
|
|
// If double, long double and _Float64 all have the same set of
|
|
|
|
// values, TS 18661-3 requires the usual arithmetic conversions on
|
|
|
|
// long double and _Float64 to produce _Float64. For this to be the
|
|
|
|
// case when building with a compiler without a distinct _Float64
|
|
|
|
// type, _Float64 must be a typedef for long double, not for
|
|
|
|
// double.
|
|
|
|
|
2022-03-12 21:53:57 +00:00
|
|
|
// Returned by `div'.
|
|
|
|
type div_t = struct {
|
|
|
|
quot int32
|
|
|
|
rem int32
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/stdlib.h:62:5 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Returned by `ldiv'.
|
|
|
|
type ldiv_t = struct {
|
|
|
|
quot int64
|
|
|
|
rem int64
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/stdlib.h:70:5 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Returned by `lldiv'.
|
|
|
|
type lldiv_t = struct {
|
|
|
|
quot int64
|
|
|
|
rem int64
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/stdlib.h:80:5 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type u_char = uint8 /* /usr/riscv64-linux-gnu/include/sys/types.h:33:18 */
|
|
|
|
type u_short = uint16 /* /usr/riscv64-linux-gnu/include/sys/types.h:34:19 */
|
|
|
|
type u_int = uint32 /* /usr/riscv64-linux-gnu/include/sys/types.h:35:17 */
|
|
|
|
type u_long = uint64 /* /usr/riscv64-linux-gnu/include/sys/types.h:36:18 */
|
|
|
|
type quad_t = int64 /* /usr/riscv64-linux-gnu/include/sys/types.h:37:18 */
|
|
|
|
type u_quad_t = uint64 /* /usr/riscv64-linux-gnu/include/sys/types.h:38:20 */
|
|
|
|
type fsid_t = struct{ __val [2]int32 } /* /usr/riscv64-linux-gnu/include/sys/types.h:39:18 */
|
|
|
|
type loff_t = int64 /* /usr/riscv64-linux-gnu/include/sys/types.h:42:18 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type ino_t = uint64 /* /usr/riscv64-linux-gnu/include/sys/types.h:49:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type dev_t = uint64 /* /usr/riscv64-linux-gnu/include/sys/types.h:59:17 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type gid_t = uint32 /* /usr/riscv64-linux-gnu/include/sys/types.h:64:17 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type mode_t = uint32 /* /usr/riscv64-linux-gnu/include/sys/types.h:69:18 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type nlink_t = uint32 /* /usr/riscv64-linux-gnu/include/sys/types.h:74:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type uid_t = uint32 /* /usr/riscv64-linux-gnu/include/sys/types.h:79:17 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type pid_t = int32 /* /usr/riscv64-linux-gnu/include/sys/types.h:97:17 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type id_t = uint32 /* /usr/riscv64-linux-gnu/include/sys/types.h:103:16 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type daddr_t = int32 /* /usr/riscv64-linux-gnu/include/sys/types.h:114:19 */
|
|
|
|
type caddr_t = uintptr /* /usr/riscv64-linux-gnu/include/sys/types.h:115:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type key_t = int32 /* /usr/riscv64-linux-gnu/include/sys/types.h:121:17 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
|
|
|
// Returned by `clock'.
|
2022-05-07 22:41:21 +02:00
|
|
|
type clock_t = int64 /* /usr/riscv64-linux-gnu/include/bits/types/clock_t.h:7:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
|
|
|
// Clock ID used in clock and timer functions.
|
2022-05-07 22:41:21 +02:00
|
|
|
type clockid_t = int32 /* /usr/riscv64-linux-gnu/include/bits/types/clockid_t.h:7:21 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
|
|
|
// Returned by `time'.
|
2022-05-07 22:41:21 +02:00
|
|
|
type time_t = int64 /* /usr/riscv64-linux-gnu/include/bits/types/time_t.h:7:18 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
|
|
|
// Timer ID returned by `timer_create'.
|
2022-05-07 22:41:21 +02:00
|
|
|
type timer_t = uintptr /* /usr/riscv64-linux-gnu/include/bits/types/timer_t.h:7:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1989-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
//
|
|
|
|
// This file is part of GCC.
|
|
|
|
//
|
|
|
|
// GCC is free software; you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU General Public License as published by
|
|
|
|
// the Free Software Foundation; either version 3, or (at your option)
|
|
|
|
// any later version.
|
|
|
|
//
|
|
|
|
// GCC is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU General Public License for more details.
|
|
|
|
//
|
|
|
|
// Under Section 7 of GPL version 3, you are granted additional
|
|
|
|
// permissions described in the GCC Runtime Library Exception, version
|
|
|
|
// 3.1, as published by the Free Software Foundation.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU General Public License and
|
|
|
|
// a copy of the GCC Runtime Library Exception along with this program;
|
|
|
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
|
|
// <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// ISO C Standard: 7.17 Common definitions <stddef.h>
|
|
|
|
|
|
|
|
// Any one of these symbols __need_* means that GNU libc
|
|
|
|
// wants us just to define one data type. So don't define
|
|
|
|
// the symbols that indicate this file's entire job has been done.
|
|
|
|
|
|
|
|
// This avoids lossage on SunOS but only if stdtypes.h comes first.
|
|
|
|
// There's no way to win with the other order! Sun lossage.
|
|
|
|
|
|
|
|
// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
|
|
|
|
// Just ignore it.
|
|
|
|
|
|
|
|
// On VxWorks, <type/vxTypesBase.h> may have defined macros like
|
|
|
|
// _TYPE_size_t which will typedef size_t. fixincludes patched the
|
|
|
|
// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
|
|
|
|
// not defined, and so that defining this macro defines _GCC_SIZE_T.
|
|
|
|
// If we find that the macros are still defined at this point, we must
|
|
|
|
// invoke them so that the type is defined as expected.
|
|
|
|
|
|
|
|
// In case nobody has defined these types, but we aren't running under
|
|
|
|
// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
|
|
|
|
// __WCHAR_TYPE__ have reasonable values. This can happen if the
|
|
|
|
// parts of GCC is compiled by an older compiler, that actually
|
|
|
|
// include gstddef.h, such as collect2.
|
|
|
|
|
|
|
|
// Signed type of difference of two pointers.
|
|
|
|
|
|
|
|
// Define this type if we are doing the whole job,
|
|
|
|
// or if we want this type in particular.
|
|
|
|
|
|
|
|
// Unsigned type of `sizeof' something.
|
|
|
|
|
|
|
|
// Define this type if we are doing the whole job,
|
|
|
|
// or if we want this type in particular.
|
|
|
|
|
|
|
|
// Wide character type.
|
|
|
|
// Locale-writers should change this as necessary to
|
|
|
|
// be big enough to hold unique values not between 0 and 127,
|
|
|
|
// and not (wchar_t) -1, for each defined multibyte character.
|
|
|
|
|
|
|
|
// Define this type if we are doing the whole job,
|
|
|
|
// or if we want this type in particular.
|
|
|
|
|
|
|
|
// A null pointer constant.
|
|
|
|
|
|
|
|
// Old compatibility names for C types.
|
2022-05-07 22:41:21 +02:00
|
|
|
type ulong = uint64 /* /usr/riscv64-linux-gnu/include/sys/types.h:148:27 */
|
|
|
|
type ushort = uint16 /* /usr/riscv64-linux-gnu/include/sys/types.h:149:28 */
|
|
|
|
type uint = uint32 /* /usr/riscv64-linux-gnu/include/sys/types.h:150:22 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// These size-specific names are used by some of the inet code.
|
|
|
|
|
|
|
|
// Define intN_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type int8_t = int8 /* /usr/riscv64-linux-gnu/include/bits/stdint-intn.h:24:18 */
|
|
|
|
type int16_t = int16 /* /usr/riscv64-linux-gnu/include/bits/stdint-intn.h:25:19 */
|
|
|
|
type int32_t = int32 /* /usr/riscv64-linux-gnu/include/bits/stdint-intn.h:26:19 */
|
|
|
|
type int64_t = int64 /* /usr/riscv64-linux-gnu/include/bits/stdint-intn.h:27:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// These were defined by ISO C without the first `_'.
|
2022-05-07 22:41:21 +02:00
|
|
|
type u_int8_t = uint8 /* /usr/riscv64-linux-gnu/include/sys/types.h:158:19 */
|
|
|
|
type u_int16_t = uint16 /* /usr/riscv64-linux-gnu/include/sys/types.h:159:20 */
|
|
|
|
type u_int32_t = uint32 /* /usr/riscv64-linux-gnu/include/sys/types.h:160:20 */
|
|
|
|
type u_int64_t = uint64 /* /usr/riscv64-linux-gnu/include/sys/types.h:161:20 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type register_t = int32 /* /usr/riscv64-linux-gnu/include/sys/types.h:164:13 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// A set of signals to be blocked, unblocked, or waited for.
|
2022-05-07 22:41:21 +02:00
|
|
|
type sigset_t = struct{ __val [16]uint64 } /* /usr/riscv64-linux-gnu/include/bits/types/sigset_t.h:7:20 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Get definition of timer specification structures.
|
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
|
|
|
// A time value that is accurate to the nearest
|
|
|
|
// microsecond but also has a range of years.
|
|
|
|
type timeval = struct {
|
|
|
|
tv_sec int64
|
|
|
|
tv_usec int64
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/types/struct_timeval.h:8:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// NB: Include guard matches what <linux/time.h> uses.
|
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
|
|
|
// Endian macros for string.h functions
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// POSIX.1b structure for a time value. This is like a `struct timeval' but
|
|
|
|
// has nanoseconds instead of microseconds.
|
|
|
|
type timespec = struct {
|
|
|
|
tv_sec int64
|
|
|
|
tv_nsec int64
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/types/struct_timespec.h:10:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type suseconds_t = int64 /* /usr/riscv64-linux-gnu/include/sys/select.h:43:23 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Some versions of <linux/posix_types.h> define this macros.
|
|
|
|
// It's easier to assume 8-bit bytes than to get CHAR_BIT.
|
|
|
|
|
|
|
|
// fd_set for select and pselect.
|
2022-05-07 22:41:21 +02:00
|
|
|
type fd_set = struct{ __fds_bits [16]int64 } /* /usr/riscv64-linux-gnu/include/sys/select.h:70:5 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Maximum number of file descriptors in `fd_set'.
|
|
|
|
|
|
|
|
// Sometimes the fd_set member is assumed to have this type.
|
2022-05-07 22:41:21 +02:00
|
|
|
type fd_mask = int64 /* /usr/riscv64-linux-gnu/include/sys/select.h:77:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Define some inlines helping to catch common problems.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type blksize_t = int32 /* /usr/riscv64-linux-gnu/include/sys/types.h:185:21 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Types from the Large File Support interface.
|
2022-05-07 22:41:21 +02:00
|
|
|
type blkcnt_t = int64 /* /usr/riscv64-linux-gnu/include/sys/types.h:205:22 */ // Type to count number of disk blocks.
|
|
|
|
type fsblkcnt_t = uint64 /* /usr/riscv64-linux-gnu/include/sys/types.h:209:24 */ // Type to count file system blocks.
|
|
|
|
type fsfilcnt_t = uint64 /* /usr/riscv64-linux-gnu/include/sys/types.h:213:24 */ // Type to count file system inodes.
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Now add the thread types.
|
|
|
|
// Declaration of common pthread types for all architectures.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// For internal mutex and condition variable definitions.
|
|
|
|
// Common threading primitives definitions for both POSIX and C11.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Arch-specific definitions. Each architecture must define the following
|
|
|
|
// macros to define the expected sizes of pthread data types:
|
|
|
|
//
|
|
|
|
// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
|
|
|
|
// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
|
|
|
|
// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
|
|
|
|
// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
|
|
|
|
// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
|
|
|
|
// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
|
|
|
|
// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
|
|
|
|
// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
|
|
|
|
// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
|
|
|
|
//
|
|
|
|
// The additional macro defines any constraint for the lock alignment
|
|
|
|
// inside the thread structures:
|
|
|
|
//
|
|
|
|
// __LOCK_ALIGNMENT - for internal lock/futex usage.
|
|
|
|
//
|
|
|
|
// Same idea but for the once locking primitive:
|
|
|
|
//
|
|
|
|
// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
|
|
|
|
|
|
|
|
// Machine-specific pthread type layouts. RISC-V version.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2011-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library. If not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Endian macros for string.h functions
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Common definition of pthread_mutex_t.
|
|
|
|
|
|
|
|
type __pthread_internal_list = struct {
|
|
|
|
__prev uintptr
|
|
|
|
__next uintptr
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/thread-shared-types.h:49:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type __pthread_internal_slist = struct{ __next uintptr } /* /usr/riscv64-linux-gnu/include/bits/thread-shared-types.h:55:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Arch-specific mutex definitions. A generic implementation is provided
|
|
|
|
// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
|
|
|
|
// can override it by defining:
|
|
|
|
//
|
|
|
|
// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
|
|
|
|
// definition). It should contains at least the internal members
|
|
|
|
// defined in the generic version.
|
|
|
|
//
|
|
|
|
// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
|
|
|
|
// atomic operations.
|
|
|
|
//
|
|
|
|
// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
|
|
|
|
// It should initialize the mutex internal flag.
|
|
|
|
|
|
|
|
// Default mutex implementation struct definitions.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2019-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Generic struct for both POSIX and C11 mutexes. New ports are expected
|
|
|
|
// to use the default layout, however architecture can redefine it to
|
|
|
|
// add arch-specific extension (such as lock-elision). The struct have
|
|
|
|
// a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
|
|
|
|
|
|
|
|
type __pthread_mutex_s = struct {
|
|
|
|
__lock int32
|
|
|
|
__count uint32
|
|
|
|
__owner int32
|
|
|
|
__nusers uint32
|
|
|
|
__kind int32
|
|
|
|
__spins int32
|
|
|
|
__list struct {
|
|
|
|
__prev uintptr
|
|
|
|
__next uintptr
|
|
|
|
}
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/struct_mutex.h:27:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Arch-sepecific read-write lock definitions. A generic implementation is
|
|
|
|
// provided by struct_rwlock.h. If required, an architecture can override it
|
|
|
|
// by defining:
|
|
|
|
//
|
|
|
|
// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
|
|
|
|
// It should contain at least the internal members defined in the
|
|
|
|
// generic version.
|
|
|
|
//
|
|
|
|
// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
|
|
|
|
// It should initialize the rwlock internal type.
|
|
|
|
|
|
|
|
// RISC-V internal rwlock struct definitions.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2019-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
//
|
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
2022-05-07 22:41:21 +02:00
|
|
|
// <http://www.gnu.org/licenses/>.
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// There is a lot of padding in this structure. While it's not strictly
|
|
|
|
// necessary on RISC-V, we're going to leave it in to be on the safe side in
|
|
|
|
// case it's needed in the future. Most other architectures have the padding,
|
|
|
|
// so this gives us the same extensibility as everyone else has.
|
|
|
|
type __pthread_rwlock_arch_t = struct {
|
|
|
|
__readers uint32
|
|
|
|
__writers uint32
|
|
|
|
__wrphase_futex uint32
|
|
|
|
__writers_futex uint32
|
|
|
|
__pad3 uint32
|
|
|
|
__pad4 uint32
|
|
|
|
__cur_writer int32
|
|
|
|
__shared int32
|
|
|
|
__pad1 uint64
|
|
|
|
__pad2 uint64
|
|
|
|
__flags uint32
|
|
|
|
_ [4]byte
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/struct_rwlock.h:27:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Common definition of pthread_cond_t.
|
|
|
|
|
|
|
|
type __pthread_cond_s = struct {
|
|
|
|
__0 struct{ __wseq uint64 }
|
|
|
|
__8 struct{ __g1_start uint64 }
|
|
|
|
__g_refs [2]uint32
|
|
|
|
__g_size [2]uint32
|
|
|
|
__g1_orig_size uint32
|
|
|
|
__wrefs uint32
|
|
|
|
__g_signals [2]uint32
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/thread-shared-types.h:92:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Thread identifiers. The structure of the attribute type is not
|
|
|
|
// exposed on purpose.
|
2022-05-07 22:41:21 +02:00
|
|
|
type pthread_t = uint64 /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:27:27 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Data structures for mutex handling. The structure of the attribute
|
|
|
|
// type is not exposed on purpose.
|
|
|
|
type pthread_mutexattr_t = struct {
|
|
|
|
_ [0]uint32
|
|
|
|
__size [4]uint8
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:36:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Data structure for condition variable handling. The structure of
|
|
|
|
// the attribute type is not exposed on purpose.
|
|
|
|
type pthread_condattr_t = struct {
|
|
|
|
_ [0]uint32
|
|
|
|
__size [4]uint8
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:45:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Keys for thread-specific data
|
2022-05-07 22:41:21 +02:00
|
|
|
type pthread_key_t = uint32 /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:49:22 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Once-only execution
|
2022-05-07 22:41:21 +02:00
|
|
|
type pthread_once_t = int32 /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:53:30 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
type pthread_attr_t1 = struct {
|
|
|
|
_ [0]uint64
|
|
|
|
__size [56]uint8
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:56:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type pthread_attr_t = pthread_attr_t1 /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:62:30 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type pthread_mutex_t = struct{ __data __pthread_mutex_s } /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:72:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type pthread_cond_t = struct{ __data __pthread_cond_s } /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:80:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Data structure for reader-writer lock variable handling. The
|
|
|
|
// structure of the attribute type is deliberately not exposed.
|
2022-05-07 22:41:21 +02:00
|
|
|
type pthread_rwlock_t = struct{ __data __pthread_rwlock_arch_t } /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:91:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
type pthread_rwlockattr_t = struct {
|
|
|
|
_ [0]uint64
|
|
|
|
__size [8]uint8
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:97:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// POSIX spinlock data type.
|
2022-05-07 22:41:21 +02:00
|
|
|
type pthread_spinlock_t = int32 /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:103:22 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// POSIX barriers data type. The structure of the type is
|
|
|
|
// deliberately not exposed.
|
|
|
|
type pthread_barrier_t = struct {
|
|
|
|
_ [0]uint64
|
|
|
|
__size [32]uint8
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:112:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
type pthread_barrierattr_t = struct {
|
|
|
|
_ [0]uint32
|
|
|
|
__size [4]uint8
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/pthreadtypes.h:118:3 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Reentrant versions of the `random' family of functions.
|
|
|
|
// These functions all use the following data structure to contain
|
|
|
|
// state, rather than global state variables.
|
|
|
|
|
|
|
|
type random_data = struct {
|
|
|
|
fptr uintptr
|
|
|
|
rptr uintptr
|
|
|
|
state uintptr
|
|
|
|
rand_type int32
|
|
|
|
rand_deg int32
|
|
|
|
rand_sep int32
|
|
|
|
_ [4]byte
|
|
|
|
end_ptr uintptr
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/stdlib.h:423:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Data structure for communication with thread safe versions. This
|
|
|
|
// type is to be regarded as opaque. It's only exported because users
|
|
|
|
// have to allocate objects of this type.
|
|
|
|
type drand48_data = struct {
|
|
|
|
__x [3]uint16
|
|
|
|
__old_x [3]uint16
|
|
|
|
__c uint16
|
|
|
|
__init uint16
|
|
|
|
__a uint64
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/stdlib.h:490:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// POSIX.1-2008 extended locale interface (see locale.h).
|
|
|
|
// Definition of locale_t.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Definition of struct __locale_struct and __locale_t.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1997-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
// Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// POSIX.1-2008: the locale_t type, representing a locale context
|
|
|
|
// (implementation-namespace version). This type should be treated
|
|
|
|
// as opaque by applications; some details are exposed for the sake of
|
|
|
|
// efficiency in e.g. ctype functions.
|
|
|
|
|
|
|
|
type __locale_struct = struct {
|
|
|
|
__locales [13]uintptr
|
|
|
|
__ctype_b uintptr
|
|
|
|
__ctype_tolower uintptr
|
|
|
|
__ctype_toupper uintptr
|
|
|
|
__names [13]uintptr
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* /usr/riscv64-linux-gnu/include/bits/types/__locale_t.h:28:1 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type locale_t = uintptr /* /usr/riscv64-linux-gnu/include/bits/types/locale_t.h:24:20 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// POSIX Standard: 2.10 Symbolic Constants <unistd.h>
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// These may be used to determine what facilities are present at compile time.
|
|
|
|
// Their values can be obtained at run time from `sysconf'.
|
|
|
|
|
|
|
|
// POSIX Standard approved as ISO/IEC 9945-1 as of September 2008.
|
|
|
|
|
|
|
|
// These are not #ifdef __USE_POSIX2 because they are
|
|
|
|
// in the theoretically application-owned namespace.
|
|
|
|
|
|
|
|
// The utilities on GNU systems also correspond to this version.
|
|
|
|
|
|
|
|
// The utilities on GNU systems also correspond to this version.
|
|
|
|
|
|
|
|
// This symbol was required until the 2001 edition of POSIX.
|
|
|
|
|
|
|
|
// If defined, the implementation supports the
|
|
|
|
// C Language Bindings Option.
|
|
|
|
|
|
|
|
// If defined, the implementation supports the
|
|
|
|
// C Language Development Utilities Option.
|
|
|
|
|
|
|
|
// If defined, the implementation supports the
|
|
|
|
// Software Development Utilities Option.
|
|
|
|
|
|
|
|
// If defined, the implementation supports the
|
|
|
|
// creation of locales with the localedef utility.
|
|
|
|
|
|
|
|
// X/Open version number to which the library conforms. It is selectable.
|
|
|
|
|
|
|
|
// Commands and utilities from XPG4 are available.
|
|
|
|
|
|
|
|
// We are compatible with the old published standards as well.
|
|
|
|
|
|
|
|
// The X/Open Unix extensions are available.
|
|
|
|
|
|
|
|
// The enhanced internationalization capabilities according to XPG4.2
|
|
|
|
// are present.
|
|
|
|
|
|
|
|
// The legacy interfaces are also available.
|
|
|
|
|
|
|
|
// Get values of POSIX options:
|
|
|
|
//
|
|
|
|
// If these symbols are defined, the corresponding features are
|
|
|
|
// always available. If not, they may be available sometimes.
|
|
|
|
// The current values can be obtained with `sysconf'.
|
|
|
|
//
|
|
|
|
// _POSIX_JOB_CONTROL Job control is supported.
|
|
|
|
// _POSIX_SAVED_IDS Processes have a saved set-user-ID
|
|
|
|
// and a saved set-group-ID.
|
|
|
|
// _POSIX_REALTIME_SIGNALS Real-time, queued signals are supported.
|
|
|
|
// _POSIX_PRIORITY_SCHEDULING Priority scheduling is supported.
|
|
|
|
// _POSIX_TIMERS POSIX.4 clocks and timers are supported.
|
|
|
|
// _POSIX_ASYNCHRONOUS_IO Asynchronous I/O is supported.
|
|
|
|
// _POSIX_PRIORITIZED_IO Prioritized asynchronous I/O is supported.
|
|
|
|
// _POSIX_SYNCHRONIZED_IO Synchronizing file data is supported.
|
|
|
|
// _POSIX_FSYNC The fsync function is present.
|
|
|
|
// _POSIX_MAPPED_FILES Mapping of files to memory is supported.
|
|
|
|
// _POSIX_MEMLOCK Locking of all memory is supported.
|
|
|
|
// _POSIX_MEMLOCK_RANGE Locking of ranges of memory is supported.
|
|
|
|
// _POSIX_MEMORY_PROTECTION Setting of memory protections is supported.
|
|
|
|
// _POSIX_MESSAGE_PASSING POSIX.4 message queues are supported.
|
|
|
|
// _POSIX_SEMAPHORES POSIX.4 counting semaphores are supported.
|
|
|
|
// _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported.
|
|
|
|
// _POSIX_THREADS POSIX.1c pthreads are supported.
|
|
|
|
// _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported.
|
|
|
|
// _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported.
|
|
|
|
// _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported.
|
|
|
|
// _POSIX_THREAD_PRIORITY_SCHEDULING
|
|
|
|
// POSIX.1c thread execution scheduling supported.
|
|
|
|
// _POSIX_THREAD_PRIO_INHERIT Thread priority inheritance option supported.
|
|
|
|
// _POSIX_THREAD_PRIO_PROTECT Thread priority protection option supported.
|
|
|
|
// _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported.
|
|
|
|
// _POSIX_PII Protocol-independent interfaces are supported.
|
|
|
|
// _POSIX_PII_XTI XTI protocol-indep. interfaces are supported.
|
|
|
|
// _POSIX_PII_SOCKET Socket protocol-indep. interfaces are supported.
|
|
|
|
// _POSIX_PII_INTERNET Internet family of protocols supported.
|
|
|
|
// _POSIX_PII_INTERNET_STREAM Connection-mode Internet protocol supported.
|
|
|
|
// _POSIX_PII_INTERNET_DGRAM Connectionless Internet protocol supported.
|
|
|
|
// _POSIX_PII_OSI ISO/OSI family of protocols supported.
|
|
|
|
// _POSIX_PII_OSI_COTS Connection-mode ISO/OSI service supported.
|
|
|
|
// _POSIX_PII_OSI_CLTS Connectionless ISO/OSI service supported.
|
|
|
|
// _POSIX_POLL Implementation supports `poll' function.
|
|
|
|
// _POSIX_SELECT Implementation supports `select' and `pselect'.
|
|
|
|
//
|
|
|
|
// _XOPEN_REALTIME X/Open realtime support is available.
|
|
|
|
// _XOPEN_REALTIME_THREADS X/Open realtime thread support is available.
|
|
|
|
// _XOPEN_SHM Shared memory interface according to XPG4.2.
|
|
|
|
//
|
|
|
|
// _XBS5_ILP32_OFF32 Implementation provides environment with 32-bit
|
|
|
|
// int, long, pointer, and off_t types.
|
|
|
|
// _XBS5_ILP32_OFFBIG Implementation provides environment with 32-bit
|
|
|
|
// int, long, and pointer and off_t with at least
|
|
|
|
// 64 bits.
|
|
|
|
// _XBS5_LP64_OFF64 Implementation provides environment with 32-bit
|
|
|
|
// int, and 64-bit long, pointer, and off_t types.
|
|
|
|
// _XBS5_LPBIG_OFFBIG Implementation provides environment with at
|
|
|
|
// least 32 bits int and long, pointer, and off_t
|
|
|
|
// with at least 64 bits.
|
|
|
|
//
|
|
|
|
// If any of these symbols is defined as -1, the corresponding option is not
|
|
|
|
// true for any file. If any is defined as other than -1, the corresponding
|
|
|
|
// option is true for all files. If a symbol is not defined at all, the value
|
|
|
|
// for a specific file can be obtained from `pathconf' and `fpathconf'.
|
|
|
|
//
|
|
|
|
// _POSIX_CHOWN_RESTRICTED Only the super user can use `chown' to change
|
|
|
|
// the owner of a file. `chown' can only be used
|
|
|
|
// to change the group ID of a file to a group of
|
|
|
|
// which the calling process is a member.
|
|
|
|
// _POSIX_NO_TRUNC Pathname components longer than
|
|
|
|
// NAME_MAX generate an error.
|
|
|
|
// _POSIX_VDISABLE If defined, if the value of an element of the
|
|
|
|
// `c_cc' member of `struct termios' is
|
|
|
|
// _POSIX_VDISABLE, no character will have the
|
|
|
|
// effect associated with that element.
|
|
|
|
// _POSIX_SYNC_IO Synchronous I/O may be performed.
|
|
|
|
// _POSIX_ASYNC_IO Asynchronous I/O may be performed.
|
|
|
|
// _POSIX_PRIO_IO Prioritized Asynchronous I/O may be performed.
|
|
|
|
//
|
|
|
|
// Support for the Large File Support interface is not generally available.
|
|
|
|
// If it is available the following constants are defined to one.
|
|
|
|
// _LFS64_LARGEFILE Low-level I/O supports large files.
|
|
|
|
// _LFS64_STDIO Standard I/O supports large files.
|
|
|
|
//
|
|
|
|
|
|
|
|
// Define POSIX options for Linux.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1996-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public License as
|
|
|
|
// published by the Free Software Foundation; either version 2.1 of the
|
|
|
|
// License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; see the file COPYING.LIB. If
|
|
|
|
// not, see <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Job control is supported.
|
|
|
|
|
|
|
|
// Processes have a saved set-user-ID and a saved set-group-ID.
|
|
|
|
|
|
|
|
// Priority scheduling is not supported with the correct semantics,
|
|
|
|
// but GNU/Linux applications expect that the corresponding interfaces
|
|
|
|
// are available, even though the semantics do not meet the POSIX
|
|
|
|
// requirements. See glibc bug 14829.
|
|
|
|
|
|
|
|
// Synchronizing file data is supported.
|
|
|
|
|
|
|
|
// The fsync function is present.
|
|
|
|
|
|
|
|
// Mapping of files to memory is supported.
|
|
|
|
|
|
|
|
// Locking of all memory is supported.
|
|
|
|
|
|
|
|
// Locking of ranges of memory is supported.
|
|
|
|
|
|
|
|
// Setting of memory protections is supported.
|
|
|
|
|
|
|
|
// Some filesystems allow all users to change file ownership.
|
|
|
|
|
|
|
|
// `c_cc' member of 'struct termios' structure can be disabled by
|
|
|
|
// using the value _POSIX_VDISABLE.
|
|
|
|
|
|
|
|
// Filenames are not silently truncated.
|
|
|
|
|
|
|
|
// X/Open realtime support is available.
|
|
|
|
|
|
|
|
// X/Open thread realtime support is available.
|
|
|
|
|
|
|
|
// XPG4.2 shared memory is supported.
|
|
|
|
|
|
|
|
// Tell we have POSIX threads.
|
|
|
|
|
|
|
|
// We have the reentrant functions described in POSIX.
|
|
|
|
|
|
|
|
// We provide priority scheduling for threads.
|
|
|
|
|
|
|
|
// We support user-defined stack sizes.
|
|
|
|
|
|
|
|
// We support user-defined stacks.
|
|
|
|
|
|
|
|
// We support priority inheritence.
|
|
|
|
|
|
|
|
// We support priority protection, though only for non-robust
|
|
|
|
// mutexes.
|
|
|
|
|
|
|
|
// We support priority inheritence for robust mutexes.
|
|
|
|
|
|
|
|
// We do not support priority protection for robust mutexes.
|
|
|
|
|
|
|
|
// We support POSIX.1b semaphores.
|
|
|
|
|
|
|
|
// Real-time signals are supported.
|
|
|
|
|
|
|
|
// We support asynchronous I/O.
|
|
|
|
// Alternative name for Unix98.
|
|
|
|
// Support for prioritization is also available.
|
|
|
|
|
|
|
|
// The LFS support in asynchronous I/O is also available.
|
|
|
|
|
|
|
|
// The rest of the LFS is also available.
|
|
|
|
|
|
|
|
// POSIX shared memory objects are implemented.
|
|
|
|
|
|
|
|
// CPU-time clocks support needs to be checked at runtime.
|
|
|
|
|
|
|
|
// Clock support in threads must be also checked at runtime.
|
|
|
|
|
|
|
|
// GNU libc provides regular expression handling.
|
|
|
|
|
|
|
|
// Reader/Writer locks are available.
|
|
|
|
|
|
|
|
// We have a POSIX shell.
|
|
|
|
|
|
|
|
// We support the Timeouts option.
|
|
|
|
|
|
|
|
// We support spinlocks.
|
|
|
|
|
|
|
|
// The `spawn' function family is supported.
|
|
|
|
|
|
|
|
// We have POSIX timers.
|
|
|
|
|
|
|
|
// The barrier functions are available.
|
|
|
|
|
|
|
|
// POSIX message queues are available.
|
|
|
|
|
|
|
|
// Thread process-shared synchronization is supported.
|
|
|
|
|
|
|
|
// The monotonic clock might be available.
|
|
|
|
|
|
|
|
// The clock selection interfaces are available.
|
|
|
|
|
|
|
|
// Advisory information interfaces are available.
|
|
|
|
|
|
|
|
// IPv6 support is available.
|
|
|
|
|
|
|
|
// Raw socket support is available.
|
|
|
|
|
|
|
|
// We have at least one terminal.
|
|
|
|
|
|
|
|
// Neither process nor thread sporadic server interfaces is available.
|
|
|
|
|
|
|
|
// trace.h is not available.
|
|
|
|
|
|
|
|
// Typed memory objects are not available.
|
|
|
|
|
|
|
|
// Get the environment definitions from Unix98.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1999-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Determine the wordsize from the preprocessor defines. RISC-V version.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library. If not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// This header should define the following symbols under the described
|
|
|
|
// situations. A value `1' means that the model is always supported,
|
|
|
|
// `-1' means it is never supported. Undefined means it cannot be
|
|
|
|
// statically decided.
|
|
|
|
//
|
|
|
|
// _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
|
|
|
|
// _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
|
|
|
|
//
|
2022-05-07 22:41:21 +02:00
|
|
|
// _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
|
2022-03-12 21:53:57 +00:00
|
|
|
// _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
|
|
|
|
//
|
|
|
|
// The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
|
|
|
|
// _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
|
|
|
|
// _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
|
|
|
|
// used in previous versions of the Unix standard and are available
|
|
|
|
// only for compatibility.
|
|
|
|
|
|
|
|
// We can never provide environments with 32-bit wide pointers.
|
|
|
|
// We also have no use (for now) for an environment with bigger pointers
|
|
|
|
// and offsets.
|
|
|
|
|
|
|
|
// By default we have 64-bit wide `long int', pointers and `off_t'.
|
|
|
|
|
|
|
|
// Standard file descriptors.
|
|
|
|
|
|
|
|
// All functions that are not declared anywhere else.
|
|
|
|
|
|
|
|
// bits/types.h -- definitions of __*_t types underlying *_t types.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Never include this file directly; use <sys/types.h> instead.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1989-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
//
|
|
|
|
// This file is part of GCC.
|
|
|
|
//
|
|
|
|
// GCC is free software; you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU General Public License as published by
|
|
|
|
// the Free Software Foundation; either version 3, or (at your option)
|
|
|
|
// any later version.
|
|
|
|
//
|
|
|
|
// GCC is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU General Public License for more details.
|
|
|
|
//
|
|
|
|
// Under Section 7 of GPL version 3, you are granted additional
|
|
|
|
// permissions described in the GCC Runtime Library Exception, version
|
|
|
|
// 3.1, as published by the Free Software Foundation.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU General Public License and
|
|
|
|
// a copy of the GCC Runtime Library Exception along with this program;
|
|
|
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
|
|
// <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// ISO C Standard: 7.17 Common definitions <stddef.h>
|
|
|
|
|
|
|
|
// Any one of these symbols __need_* means that GNU libc
|
|
|
|
// wants us just to define one data type. So don't define
|
|
|
|
// the symbols that indicate this file's entire job has been done.
|
|
|
|
|
|
|
|
// This avoids lossage on SunOS but only if stdtypes.h comes first.
|
|
|
|
// There's no way to win with the other order! Sun lossage.
|
|
|
|
|
|
|
|
// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
|
|
|
|
// Just ignore it.
|
|
|
|
|
|
|
|
// On VxWorks, <type/vxTypesBase.h> may have defined macros like
|
|
|
|
// _TYPE_size_t which will typedef size_t. fixincludes patched the
|
|
|
|
// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
|
|
|
|
// not defined, and so that defining this macro defines _GCC_SIZE_T.
|
|
|
|
// If we find that the macros are still defined at this point, we must
|
|
|
|
// invoke them so that the type is defined as expected.
|
|
|
|
|
|
|
|
// In case nobody has defined these types, but we aren't running under
|
|
|
|
// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
|
|
|
|
// __WCHAR_TYPE__ have reasonable values. This can happen if the
|
|
|
|
// parts of GCC is compiled by an older compiler, that actually
|
|
|
|
// include gstddef.h, such as collect2.
|
|
|
|
|
|
|
|
// Signed type of difference of two pointers.
|
|
|
|
|
|
|
|
// Define this type if we are doing the whole job,
|
|
|
|
// or if we want this type in particular.
|
|
|
|
|
|
|
|
// Unsigned type of `sizeof' something.
|
|
|
|
|
|
|
|
// Define this type if we are doing the whole job,
|
|
|
|
// or if we want this type in particular.
|
|
|
|
|
|
|
|
// Wide character type.
|
|
|
|
// Locale-writers should change this as necessary to
|
|
|
|
// be big enough to hold unique values not between 0 and 127,
|
|
|
|
// and not (wchar_t) -1, for each defined multibyte character.
|
|
|
|
|
|
|
|
// Define this type if we are doing the whole job,
|
|
|
|
// or if we want this type in particular.
|
|
|
|
|
|
|
|
// A null pointer constant.
|
|
|
|
|
|
|
|
// The Single Unix specification says that some more types are
|
|
|
|
// available here.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type useconds_t = uint32 /* /usr/riscv64-linux-gnu/include/unistd.h:255:22 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type intptr_t = int64 /* /usr/riscv64-linux-gnu/include/unistd.h:267:20 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type socklen_t = uint32 /* /usr/riscv64-linux-gnu/include/unistd.h:274:21 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Define some macros helping to catch buffer overflows.
|
|
|
|
|
|
|
|
// System-specific extensions.
|
|
|
|
// System-specific extensions of <unistd.h>, Linux version.
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 2019-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
type u64 = sqlite3_uint64 /* testdata/sqlite-src-3380500/test/speedtest1.c:68:24 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// State structure for a Hash hash in progress
|
|
|
|
type HashContext1 = struct {
|
|
|
|
isInit uint8
|
|
|
|
i uint8
|
|
|
|
j uint8
|
|
|
|
s [256]uint8
|
|
|
|
r [32]uint8
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-src-3380500/test/speedtest1.c:73:9 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// State structure for a Hash hash in progress
|
2022-05-07 22:41:21 +02:00
|
|
|
type HashContext = HashContext1 /* testdata/sqlite-src-3380500/test/speedtest1.c:73:28 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// All global state is held in this structure
|
|
|
|
type Global = struct {
|
|
|
|
db uintptr
|
|
|
|
pStmt uintptr
|
|
|
|
iStart sqlite3_int64
|
|
|
|
iTotal sqlite3_int64
|
|
|
|
bWithoutRowid int32
|
|
|
|
bReprepare int32
|
|
|
|
bSqlOnly int32
|
|
|
|
bExplain int32
|
|
|
|
bVerify int32
|
|
|
|
bMemShrink int32
|
|
|
|
eTemp int32
|
|
|
|
szTest int32
|
|
|
|
nRepeat int32
|
|
|
|
doCheckpoint int32
|
|
|
|
nReserve int32
|
|
|
|
_ [4]byte
|
|
|
|
zWR uintptr
|
|
|
|
zNN uintptr
|
|
|
|
zPK uintptr
|
|
|
|
x uint32
|
|
|
|
y uint32
|
|
|
|
nResByte u64
|
|
|
|
nResult int32
|
|
|
|
zResult [3000]uint8
|
|
|
|
_ [4]byte
|
|
|
|
hashFile uintptr
|
|
|
|
hash HashContext
|
|
|
|
_ [5]byte
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-src-3380500/test/speedtest1.c:83:8 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// All global state is held in this structure
|
2022-05-07 22:41:21 +02:00
|
|
|
var g Global /* testdata/sqlite-src-3380500/test/speedtest1.c:110:3: */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Return " TEMP" or "", as appropriate for creating a table.
|
2022-05-07 22:41:21 +02:00
|
|
|
func isTemp(tls *libc.TLS, N int32) uintptr { /* testdata/sqlite-src-3380500/test/speedtest1.c:114:19: */
|
2022-03-12 21:53:57 +00:00
|
|
|
if g.eTemp >= N {
|
|
|
|
return ts + 2263 /* " TEMP" */
|
|
|
|
}
|
|
|
|
return ts + 2269 /* "" */
|
|
|
|
}
|
|
|
|
|
|
|
|
// Print an error message and exit
|
2022-05-07 22:41:21 +02:00
|
|
|
func fatal_error(tls *libc.TLS, zMsg uintptr, va uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:119:13: */
|
2022-03-12 21:53:57 +00:00
|
|
|
var ap va_list
|
|
|
|
_ = ap
|
|
|
|
ap = va
|
|
|
|
libc.Xvfprintf(tls, libc.Xstderr, zMsg, ap)
|
|
|
|
_ = ap
|
|
|
|
libc.Xexit(tls, 1)
|
|
|
|
}
|
|
|
|
|
|
|
|
// ***************************************************************************
|
|
|
|
//
|
|
|
|
// Hash algorithm used to verify that compilation is not miscompiled
|
|
|
|
// in such a was as to generate an incorrect result.
|
|
|
|
|
|
|
|
// Initialize a new hash. iSize determines the size of the hash
|
|
|
|
// in bits and should be one of 224, 256, 384, or 512. Or iSize
|
|
|
|
// can be zero to use the default hash size of 256 bits.
|
2022-05-07 22:41:21 +02:00
|
|
|
func HashInit(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:138:13: */
|
2022-03-12 21:53:57 +00:00
|
|
|
var k uint32
|
|
|
|
g.hash.i = uint8(0)
|
|
|
|
g.hash.j = uint8(0)
|
|
|
|
for k = uint32(0); k < uint32(256); k++ {
|
|
|
|
*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(k))) = uint8(k)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Make consecutive calls to the HashUpdate function to add new content
|
|
|
|
// to the hash
|
2022-05-07 22:41:21 +02:00
|
|
|
func HashUpdate(tls *libc.TLS, aData uintptr, nData uint32) { /* testdata/sqlite-src-3380500/test/speedtest1.c:149:13: */
|
2022-03-12 21:53:57 +00:00
|
|
|
var t uint8
|
|
|
|
var i uint8 = g.hash.i
|
|
|
|
var j uint8 = g.hash.j
|
|
|
|
var k uint32
|
|
|
|
if g.hashFile != 0 {
|
|
|
|
libc.Xfwrite(tls, aData, uint64(1), uint64(nData), g.hashFile)
|
|
|
|
}
|
|
|
|
for k = uint32(0); k < nData; k++ {
|
|
|
|
j = uint8(int32(j) + (int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(i)))) + int32(*(*uint8)(unsafe.Pointer(aData + uintptr(k))))))
|
|
|
|
t = *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(j)))
|
|
|
|
*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(j))) = *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(i)))
|
|
|
|
*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(i))) = t
|
|
|
|
i++
|
|
|
|
}
|
|
|
|
g.hash.i = i
|
|
|
|
g.hash.j = j
|
|
|
|
}
|
|
|
|
|
|
|
|
// After all content has been added, invoke HashFinal() to compute
|
|
|
|
// the final hash. The hash result is stored in g.hash.r[].
|
2022-05-07 22:41:21 +02:00
|
|
|
func HashFinal(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:173:13: */
|
2022-03-12 21:53:57 +00:00
|
|
|
var k uint32
|
|
|
|
var t uint8
|
|
|
|
var i uint8
|
|
|
|
var j uint8
|
|
|
|
i = g.hash.i
|
|
|
|
j = g.hash.j
|
|
|
|
for k = uint32(0); k < uint32(32); k++ {
|
|
|
|
i++
|
|
|
|
t = *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(i)))
|
|
|
|
j = uint8(int32(j) + int32(t))
|
|
|
|
*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(i))) = *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(j)))
|
|
|
|
*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(j))) = t
|
|
|
|
t = uint8(int32(t) + int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(i)))))
|
|
|
|
*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 259 + uintptr(k))) = *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 3 + uintptr(t)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// End of the Hash hashing logic
|
|
|
|
//
|
|
|
|
|
|
|
|
// Return the value of a hexadecimal digit. Return -1 if the input
|
|
|
|
// is not a hex digit.
|
2022-05-07 22:41:21 +02:00
|
|
|
func hexDigitValue(tls *libc.TLS, c uint8) int32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:197:12: */
|
2022-03-12 21:53:57 +00:00
|
|
|
if int32(c) >= '0' && int32(c) <= '9' {
|
|
|
|
return int32(c) - '0'
|
|
|
|
}
|
|
|
|
if int32(c) >= 'a' && int32(c) <= 'f' {
|
|
|
|
return int32(c) - 'a' + 10
|
|
|
|
}
|
|
|
|
if int32(c) >= 'A' && int32(c) <= 'F' {
|
|
|
|
return int32(c) - 'A' + 10
|
|
|
|
}
|
|
|
|
return -1
|
|
|
|
}
|
|
|
|
|
|
|
|
// Provide an alternative to sqlite3_stricmp() in older versions of
|
|
|
|
// SQLite
|
|
|
|
|
|
|
|
// Interpret zArg as an integer value, possibly with suffixes.
|
2022-05-07 22:41:21 +02:00
|
|
|
func integerValue(tls *libc.TLS, zArg uintptr) int32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:213:12: */
|
2022-03-12 21:53:57 +00:00
|
|
|
var v sqlite3_int64 = int64(0)
|
|
|
|
var i int32
|
|
|
|
var isNeg int32 = 0
|
|
|
|
if int32(*(*uint8)(unsafe.Pointer(zArg))) == '-' {
|
|
|
|
isNeg = 1
|
|
|
|
zArg++
|
|
|
|
} else if int32(*(*uint8)(unsafe.Pointer(zArg))) == '+' {
|
|
|
|
zArg++
|
|
|
|
}
|
|
|
|
if int32(*(*uint8)(unsafe.Pointer(zArg))) == '0' && int32(*(*uint8)(unsafe.Pointer(zArg + 1))) == 'x' {
|
|
|
|
var x int32
|
|
|
|
zArg += uintptr(2)
|
|
|
|
for libc.AssignInt32(&x, hexDigitValue(tls, *(*uint8)(unsafe.Pointer(zArg)))) >= 0 {
|
|
|
|
v = v<<4 + sqlite3_int64(x)
|
|
|
|
zArg++
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zArg))))*2)))&int32(_ISdigit) != 0 {
|
|
|
|
v = v*int64(10) + sqlite3_int64(*(*uint8)(unsafe.Pointer(zArg))) - int64('0')
|
|
|
|
zArg++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for i = 0; uint64(i) < uint64(unsafe.Sizeof(aMult))/uint64(unsafe.Sizeof(struct {
|
|
|
|
zSuffix uintptr
|
|
|
|
iMult int32
|
|
|
|
_ [4]byte
|
|
|
|
}{})); i++ {
|
|
|
|
if sqlite3.Xsqlite3_stricmp(tls, aMult[i].zSuffix, zArg) == 0 {
|
|
|
|
v = v * sqlite3_int64(aMult[i].iMult)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if v > int64(0x7fffffff) {
|
|
|
|
fatal_error(tls, ts+2270, 0)
|
|
|
|
}
|
|
|
|
return func() int32 {
|
|
|
|
if isNeg != 0 {
|
|
|
|
return int32(-v)
|
|
|
|
}
|
|
|
|
return int32(v)
|
|
|
|
}()
|
|
|
|
}
|
|
|
|
|
|
|
|
var aMult = [9]struct {
|
|
|
|
zSuffix uintptr
|
|
|
|
iMult int32
|
|
|
|
_ [4]byte
|
|
|
|
}{
|
|
|
|
{zSuffix: ts + 2307 /* "KiB" */, iMult: 1024},
|
|
|
|
{zSuffix: ts + 2311 /* "MiB" */, iMult: 1024 * 1024},
|
|
|
|
{zSuffix: ts + 2315 /* "GiB" */, iMult: 1024 * 1024 * 1024},
|
|
|
|
{zSuffix: ts + 2319 /* "KB" */, iMult: 1000},
|
|
|
|
{zSuffix: ts + 2322 /* "MB" */, iMult: 1000000},
|
|
|
|
{zSuffix: ts + 2325 /* "GB" */, iMult: 1000000000},
|
|
|
|
{zSuffix: ts + 2328 /* "K" */, iMult: 1000},
|
|
|
|
{zSuffix: ts + 2330 /* "M" */, iMult: 1000000},
|
|
|
|
{zSuffix: ts + 2332 /* "G" */, iMult: 1000000000},
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-src-3380500/test/speedtest1.c:215:53 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Return the current wall-clock time, in milliseconds
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_timestamp(tls *libc.TLS) sqlite3_int64 { /* testdata/sqlite-src-3380500/test/speedtest1.c:258:15: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(16)
|
|
|
|
defer tls.Free(16)
|
|
|
|
|
|
|
|
// var t sqlite3_int64 at bp, 8
|
|
|
|
|
|
|
|
if clockVfs == uintptr(0) {
|
|
|
|
clockVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
|
|
|
|
}
|
|
|
|
if (*sqlite3_vfs)(unsafe.Pointer(clockVfs)).iVersion >= 2 && (*sqlite3_vfs)(unsafe.Pointer(clockVfs)).xCurrentTimeInt64 != uintptr(0) {
|
|
|
|
(*struct {
|
|
|
|
f func(*libc.TLS, uintptr, uintptr) int32
|
|
|
|
})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(clockVfs)).xCurrentTimeInt64})).f(tls, clockVfs, bp /* &t */)
|
|
|
|
} else {
|
|
|
|
// var r float64 at bp+8, 8
|
|
|
|
|
|
|
|
(*struct {
|
|
|
|
f func(*libc.TLS, uintptr, uintptr) int32
|
|
|
|
})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(clockVfs)).xCurrentTime})).f(tls, clockVfs, bp+8 /* &r */)
|
|
|
|
*(*sqlite3_int64)(unsafe.Pointer(bp /* t */)) = libc.Int64FromFloat64(*(*float64)(unsafe.Pointer(bp + 8)) * 86400000.0)
|
|
|
|
}
|
|
|
|
return *(*sqlite3_int64)(unsafe.Pointer(bp /* t */))
|
|
|
|
}
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
var clockVfs uintptr = uintptr(0) /* testdata/sqlite-src-3380500/test/speedtest1.c:262:22 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Return a pseudo-random unsigned integer
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_random(tls *libc.TLS) uint32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:280:14: */
|
2022-03-12 21:53:57 +00:00
|
|
|
g.x = g.x>>1 ^ (uint32(1)+^(g.x&uint32(1)))&0xd0000001
|
|
|
|
g.y = g.y*uint32(1103515245) + uint32(12345)
|
|
|
|
return g.x ^ g.y
|
|
|
|
}
|
|
|
|
|
|
|
|
// Map the value in within the range of 1...limit into another
|
|
|
|
// number in a way that is chatic and invertable.
|
2022-05-07 22:41:21 +02:00
|
|
|
func swizzle(tls *libc.TLS, in uint32, limit uint32) uint32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:289:10: */
|
2022-03-12 21:53:57 +00:00
|
|
|
var out uint32 = uint32(0)
|
|
|
|
for limit != 0 {
|
|
|
|
out = out<<1 | in&uint32(1)
|
|
|
|
in >>= 1
|
|
|
|
limit >>= 1
|
|
|
|
}
|
|
|
|
return out
|
|
|
|
}
|
|
|
|
|
|
|
|
// Round up a number so that it is a power of two minus one
|
2022-05-07 22:41:21 +02:00
|
|
|
func roundup_allones(tls *libc.TLS, limit uint32) uint32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:301:10: */
|
2022-03-12 21:53:57 +00:00
|
|
|
var m uint32 = uint32(1)
|
|
|
|
for m < limit {
|
|
|
|
m = m<<1 + uint32(1)
|
|
|
|
}
|
|
|
|
return m
|
|
|
|
}
|
|
|
|
|
|
|
|
// The speedtest1_numbername procedure below converts its argment (an integer)
|
|
|
|
// into a string which is the English-language name for that number.
|
|
|
|
// The returned string should be freed with sqlite3_free().
|
|
|
|
//
|
|
|
|
// Example:
|
|
|
|
//
|
|
|
|
// speedtest1_numbername(123) -> "one hundred twenty three"
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_numbername(tls *libc.TLS, n uint32, zOut uintptr, nOut int32) int32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:315:5: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(24)
|
|
|
|
defer tls.Free(24)
|
|
|
|
|
|
|
|
var i int32 = 0
|
|
|
|
|
|
|
|
if n >= uint32(1000000000) {
|
|
|
|
i = i + speedtest1_numbername(tls, n/uint32(1000000000), zOut+uintptr(i), nOut-i)
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, nOut-i, zOut+uintptr(i), ts+2334, 0)
|
|
|
|
i = i + int32(libc.Xstrlen(tls, zOut+uintptr(i)))
|
|
|
|
n = n % uint32(1000000000)
|
|
|
|
}
|
|
|
|
if n >= uint32(1000000) {
|
|
|
|
if i != 0 && i < nOut-1 {
|
|
|
|
*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&i, 1)))) = uint8(' ')
|
|
|
|
}
|
|
|
|
i = i + speedtest1_numbername(tls, n/uint32(1000000), zOut+uintptr(i), nOut-i)
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, nOut-i, zOut+uintptr(i), ts+2343, 0)
|
|
|
|
i = i + int32(libc.Xstrlen(tls, zOut+uintptr(i)))
|
|
|
|
n = n % uint32(1000000)
|
|
|
|
}
|
|
|
|
if n >= uint32(1000) {
|
|
|
|
if i != 0 && i < nOut-1 {
|
|
|
|
*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&i, 1)))) = uint8(' ')
|
|
|
|
}
|
|
|
|
i = i + speedtest1_numbername(tls, n/uint32(1000), zOut+uintptr(i), nOut-i)
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, nOut-i, zOut+uintptr(i), ts+2352, 0)
|
|
|
|
i = i + int32(libc.Xstrlen(tls, zOut+uintptr(i)))
|
|
|
|
n = n % uint32(1000)
|
|
|
|
}
|
|
|
|
if n >= uint32(100) {
|
|
|
|
if i != 0 && i < nOut-1 {
|
|
|
|
*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&i, 1)))) = uint8(' ')
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, nOut-i, zOut+uintptr(i), ts+2362, libc.VaList(bp, ones[n/uint32(100)]))
|
|
|
|
i = i + int32(libc.Xstrlen(tls, zOut+uintptr(i)))
|
|
|
|
n = n % uint32(100)
|
|
|
|
}
|
|
|
|
if n >= uint32(20) {
|
|
|
|
if i != 0 && i < nOut-1 {
|
|
|
|
*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&i, 1)))) = uint8(' ')
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, nOut-i, zOut+uintptr(i), ts+2373, libc.VaList(bp+8, tens[n/uint32(10)]))
|
|
|
|
i = i + int32(libc.Xstrlen(tls, zOut+uintptr(i)))
|
|
|
|
n = n % uint32(10)
|
|
|
|
}
|
|
|
|
if n > uint32(0) {
|
|
|
|
if i != 0 && i < nOut-1 {
|
|
|
|
*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&i, 1)))) = uint8(' ')
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, nOut-i, zOut+uintptr(i), ts+2373, libc.VaList(bp+16, ones[n]))
|
|
|
|
i = i + int32(libc.Xstrlen(tls, zOut+uintptr(i)))
|
|
|
|
}
|
|
|
|
if i == 0 {
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, nOut-i, zOut+uintptr(i), ts+2376, 0)
|
|
|
|
i = i + int32(libc.Xstrlen(tls, zOut+uintptr(i)))
|
|
|
|
}
|
|
|
|
return i
|
|
|
|
}
|
|
|
|
|
|
|
|
var ones = [20]uintptr{ts + 2376, ts + 2381, ts + 2385, ts + 2389, ts + 2395, ts + 2400,
|
|
|
|
ts + 2405, ts + 2409, ts + 2415, ts + 2421, ts + 2426, ts + 2430, ts + 2437,
|
|
|
|
ts + 2444, ts + 2453, ts + 2462, ts + 2470, ts + 2478,
|
2022-05-07 22:41:21 +02:00
|
|
|
ts + 2488, ts + 2497} /* testdata/sqlite-src-3380500/test/speedtest1.c:316:21 */
|
2022-03-12 21:53:57 +00:00
|
|
|
var tens = [10]uintptr{ts + 2269, ts + 2426, ts + 2506, ts + 2513, ts + 2520,
|
2022-05-07 22:41:21 +02:00
|
|
|
ts + 2526, ts + 2532, ts + 2538, ts + 2546, ts + 2553} /* testdata/sqlite-src-3380500/test/speedtest1.c:320:21 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Start a new test case
|
2022-05-07 22:41:21 +02:00
|
|
|
var zDots = *(*[72]uint8)(unsafe.Pointer(ts + 2560)) /* testdata/sqlite-src-3380500/test/speedtest1.c:371:19 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_begin_test(tls *libc.TLS, iTestNum int32, zTestName uintptr, va uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:373:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(64)
|
|
|
|
defer tls.Free(64)
|
|
|
|
|
|
|
|
var n int32 = int32(libc.Xstrlen(tls, zTestName))
|
|
|
|
var zName uintptr
|
|
|
|
var ap va_list
|
|
|
|
_ = ap
|
|
|
|
ap = va
|
|
|
|
zName = sqlite3.Xsqlite3_vmprintf(tls, zTestName, ap)
|
|
|
|
_ = ap
|
|
|
|
n = int32(libc.Xstrlen(tls, zName))
|
|
|
|
if n > NAMEWIDTH {
|
|
|
|
*(*uint8)(unsafe.Pointer(zName + 60)) = uint8(0)
|
|
|
|
n = NAMEWIDTH
|
|
|
|
}
|
|
|
|
if g.bSqlOnly != 0 {
|
|
|
|
libc.Xprintf(tls, ts+2632, libc.VaList(bp, iTestNum, zName, NAMEWIDTH-n, uintptr(unsafe.Pointer(&zDots))))
|
|
|
|
} else {
|
|
|
|
libc.Xprintf(tls, ts+2652, libc.VaList(bp+32, iTestNum, zName, NAMEWIDTH-n, uintptr(unsafe.Pointer(&zDots))))
|
|
|
|
libc.Xfflush(tls, libc.Xstdout)
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_free(tls, zName)
|
|
|
|
g.nResult = 0
|
|
|
|
g.iStart = speedtest1_timestamp(tls)
|
|
|
|
g.x = 0xad131d0b
|
|
|
|
g.y = uint32(0x44f9eac8)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Complete a test case
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_end_test(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:402:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(16)
|
|
|
|
defer tls.Free(16)
|
|
|
|
|
|
|
|
var iElapseTime sqlite3_int64 = speedtest1_timestamp(tls) - g.iStart
|
|
|
|
if g.doCheckpoint != 0 {
|
|
|
|
speedtest1_exec(tls, ts+2666, 0)
|
|
|
|
}
|
|
|
|
if !(g.bSqlOnly != 0) {
|
|
|
|
*(*sqlite3_int64)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 24)) += iElapseTime
|
|
|
|
libc.Xprintf(tls, ts+2689, libc.VaList(bp, int32(iElapseTime/int64(1000)), int32(iElapseTime%int64(1000))))
|
|
|
|
}
|
|
|
|
if g.pStmt != 0 {
|
|
|
|
sqlite3.Xsqlite3_finalize(tls, g.pStmt)
|
|
|
|
g.pStmt = uintptr(0)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Report end of testing
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_final(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:416:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(48)
|
|
|
|
defer tls.Free(48)
|
|
|
|
|
|
|
|
if !(g.bSqlOnly != 0) {
|
|
|
|
libc.Xprintf(tls, ts+2700, libc.VaList(bp, NAMEWIDTH-5, uintptr(unsafe.Pointer(&zDots)),
|
|
|
|
int32(g.iTotal/int64(1000)), int32(g.iTotal%int64(1000))))
|
|
|
|
}
|
|
|
|
if g.bVerify != 0 {
|
|
|
|
var i int32
|
|
|
|
libc.Xprintf(tls, ts+2728, libc.VaList(bp+32, g.nResByte))
|
|
|
|
HashUpdate(tls, ts+2753, uint32(1))
|
|
|
|
HashFinal(tls)
|
|
|
|
for i = 0; i < 24; i++ {
|
|
|
|
libc.Xprintf(tls, ts+2755, libc.VaList(bp+40, int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 3136 + 259 + uintptr(i))))))
|
|
|
|
}
|
|
|
|
if g.hashFile != 0 && g.hashFile != libc.Xstdout {
|
|
|
|
libc.Xfclose(tls, g.hashFile)
|
|
|
|
}
|
|
|
|
libc.Xprintf(tls, ts+2753, 0)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Print an SQL statement to standard output
|
2022-05-07 22:41:21 +02:00
|
|
|
func printSql(tls *libc.TLS, zSql uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:439:13: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(32)
|
|
|
|
defer tls.Free(32)
|
|
|
|
|
|
|
|
var n int32 = int32(libc.Xstrlen(tls, zSql))
|
|
|
|
for n > 0 && (int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(n-1)))) == ';' || int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*uint8)(unsafe.Pointer(zSql + uintptr(n-1))))))*2)))&int32(_ISspace) != 0) {
|
|
|
|
n--
|
|
|
|
}
|
|
|
|
if g.bExplain != 0 {
|
|
|
|
libc.Xprintf(tls, ts+2760, 0)
|
|
|
|
}
|
|
|
|
libc.Xprintf(tls, ts+2769, libc.VaList(bp, n, zSql))
|
|
|
|
if g.bExplain != 0 &&
|
|
|
|
(sqlite3.Xsqlite3_strglob(tls, ts+2776, zSql) == 0 ||
|
|
|
|
sqlite3.Xsqlite3_strglob(tls, ts+2785, zSql) == 0 ||
|
|
|
|
sqlite3.Xsqlite3_strglob(tls, ts+2792, zSql) == 0) {
|
|
|
|
libc.Xprintf(tls, ts+2769, libc.VaList(bp+16, n, zSql))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Shrink memory used, if appropriate and if the SQLite version is capable
|
|
|
|
// of doing so.
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_shrink_memory(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:459:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
if g.bMemShrink != 0 {
|
|
|
|
sqlite3.Xsqlite3_db_release_memory(tls, g.db)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Run SQL
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_exec(tls *libc.TLS, zFormat uintptr, va uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:466:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(32)
|
|
|
|
defer tls.Free(32)
|
|
|
|
|
|
|
|
var ap va_list
|
|
|
|
_ = ap
|
|
|
|
var zSql uintptr
|
|
|
|
ap = va
|
|
|
|
zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
|
|
_ = ap
|
|
|
|
if g.bSqlOnly != 0 {
|
|
|
|
printSql(tls, zSql)
|
|
|
|
} else {
|
|
|
|
*(*uintptr)(unsafe.Pointer(bp + 24 /* zErrMsg */)) = uintptr(0)
|
|
|
|
var rc int32 = sqlite3.Xsqlite3_exec(tls, g.db, zSql, uintptr(0), uintptr(0), bp+24)
|
|
|
|
if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
|
|
|
|
fatal_error(tls, ts+2800, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(bp + 24 /* zErrMsg */)), zSql))
|
|
|
|
}
|
|
|
|
if rc != SQLITE_OK {
|
|
|
|
fatal_error(tls, ts+2818, libc.VaList(bp+16, sqlite3.Xsqlite3_errmsg(tls, g.db)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
|
|
speedtest1_shrink_memory(tls)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Run SQL and return the first column of the first row as a string. The
|
|
|
|
// returned string is obtained from sqlite_malloc() and must be freed by
|
|
|
|
// the caller.
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_once(tls *libc.TLS, zFormat uintptr, va uintptr) uintptr { /* testdata/sqlite-src-3380500/test/speedtest1.c:488:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(24)
|
|
|
|
defer tls.Free(24)
|
|
|
|
|
|
|
|
var ap va_list
|
|
|
|
_ = ap
|
|
|
|
var zSql uintptr
|
|
|
|
// var pStmt uintptr at bp+16, 8
|
|
|
|
|
|
|
|
var zResult uintptr = uintptr(0)
|
|
|
|
ap = va
|
|
|
|
zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
|
|
_ = ap
|
|
|
|
if g.bSqlOnly != 0 {
|
|
|
|
printSql(tls, zSql)
|
|
|
|
} else {
|
|
|
|
var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, g.db, zSql, -1, bp+16, uintptr(0))
|
|
|
|
if rc != 0 {
|
|
|
|
fatal_error(tls, ts+2834, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, g.db)))
|
|
|
|
}
|
|
|
|
if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW {
|
|
|
|
var z uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16 /* pStmt */)), 0)
|
|
|
|
if z != 0 {
|
|
|
|
zResult = sqlite3.Xsqlite3_mprintf(tls, ts+2373, libc.VaList(bp+8, z))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16 /* pStmt */)))
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
|
|
speedtest1_shrink_memory(tls)
|
|
|
|
return zResult
|
|
|
|
}
|
|
|
|
|
|
|
|
// Prepare an SQL statement
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_prepare(tls *libc.TLS, zFormat uintptr, va uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:515:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(8)
|
|
|
|
defer tls.Free(8)
|
|
|
|
|
|
|
|
var ap va_list
|
|
|
|
_ = ap
|
|
|
|
var zSql uintptr
|
|
|
|
ap = va
|
|
|
|
zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
|
|
|
|
_ = ap
|
|
|
|
if g.bSqlOnly != 0 {
|
|
|
|
printSql(tls, zSql)
|
|
|
|
} else {
|
|
|
|
var rc int32
|
|
|
|
if g.pStmt != 0 {
|
|
|
|
sqlite3.Xsqlite3_finalize(tls, g.pStmt)
|
|
|
|
}
|
|
|
|
rc = sqlite3.Xsqlite3_prepare_v2(tls, g.db, zSql, -1, uintptr(unsafe.Pointer(&g))+8, uintptr(0))
|
|
|
|
if rc != 0 {
|
|
|
|
fatal_error(tls, ts+2834, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, g.db)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Run an SQL statement previously prepared
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_run(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:535:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(16)
|
|
|
|
defer tls.Free(16)
|
|
|
|
|
|
|
|
var i int32
|
|
|
|
var n int32
|
|
|
|
var len int32
|
|
|
|
if g.bSqlOnly != 0 {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
g.nResult = 0
|
|
|
|
for sqlite3.Xsqlite3_step(tls, g.pStmt) == SQLITE_ROW {
|
|
|
|
n = sqlite3.Xsqlite3_column_count(tls, g.pStmt)
|
|
|
|
for i = 0; i < n; i++ {
|
|
|
|
var z uintptr = sqlite3.Xsqlite3_column_text(tls, g.pStmt, i)
|
|
|
|
if z == uintptr(0) {
|
|
|
|
z = ts + 2849 /* "nil" */
|
|
|
|
}
|
|
|
|
len = int32(libc.Xstrlen(tls, z))
|
|
|
|
if g.bVerify != 0 {
|
|
|
|
var eType int32 = sqlite3.Xsqlite3_column_type(tls, g.pStmt, i)
|
|
|
|
// var zPrefix [2]uint8 at bp, 2
|
|
|
|
|
|
|
|
*(*uint8)(unsafe.Pointer(bp)) = uint8('\n')
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 1)) = uint8(*(*uint8)(unsafe.Pointer(ts + 2853 + uintptr(eType))))
|
|
|
|
if g.nResByte != 0 {
|
|
|
|
HashUpdate(tls, bp, uint32(2))
|
|
|
|
} else {
|
|
|
|
HashUpdate(tls, bp+uintptr(1), uint32(1))
|
|
|
|
}
|
|
|
|
if eType == SQLITE_FLOAT {
|
|
|
|
// Omit the value of floating-point results from the verification
|
|
|
|
// hash. The only thing we record is the fact that the result was
|
|
|
|
// a floating-point value.
|
|
|
|
*(*u64)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 112)) += uint64(2)
|
|
|
|
} else if eType == SQLITE_BLOB {
|
|
|
|
var nBlob int32 = sqlite3.Xsqlite3_column_bytes(tls, g.pStmt, i)
|
|
|
|
var iBlob int32
|
|
|
|
// var zChar [2]uint8 at bp+2, 2
|
|
|
|
|
|
|
|
var aBlob uintptr = sqlite3.Xsqlite3_column_blob(tls, g.pStmt, i)
|
|
|
|
for iBlob = 0; iBlob < nBlob; iBlob++ {
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 2)) = uint8(*(*uint8)(unsafe.Pointer(ts + 2860 + uintptr(int32(*(*uint8)(unsafe.Pointer(aBlob + uintptr(iBlob))))>>4))))
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 2 + 1)) = uint8(*(*uint8)(unsafe.Pointer(ts + 2860 + uintptr(int32(*(*uint8)(unsafe.Pointer(aBlob + uintptr(iBlob))))&15))))
|
|
|
|
HashUpdate(tls, bp+2, uint32(2))
|
|
|
|
}
|
|
|
|
*(*u64)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 112)) += u64(nBlob*2 + 2)
|
|
|
|
} else {
|
|
|
|
HashUpdate(tls, z, uint32(len))
|
|
|
|
*(*u64)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 112)) += u64(len + 2)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if uint64(g.nResult+len) < uint64(unsafe.Sizeof([3000]uint8{}))-uint64(2) {
|
|
|
|
if g.nResult > 0 {
|
|
|
|
*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 124 + uintptr(libc.PostIncInt32(&g.nResult, 1)))) = uint8(' ')
|
|
|
|
}
|
|
|
|
libc.Xmemcpy(tls, uintptr(unsafe.Pointer(&g))+124+uintptr(g.nResult), z, uint64(len+1))
|
|
|
|
*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g)) + 120)) += len
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if g.bReprepare != 0 {
|
|
|
|
// var pNew uintptr at bp+8, 8
|
|
|
|
|
|
|
|
sqlite3.Xsqlite3_prepare_v2(tls, g.db, sqlite3.Xsqlite3_sql(tls, g.pStmt), -1, bp+8, uintptr(0))
|
|
|
|
sqlite3.Xsqlite3_finalize(tls, g.pStmt)
|
|
|
|
g.pStmt = *(*uintptr)(unsafe.Pointer(bp + 8 /* pNew */))
|
|
|
|
} else {
|
|
|
|
sqlite3.Xsqlite3_reset(tls, g.pStmt)
|
|
|
|
}
|
|
|
|
speedtest1_shrink_memory(tls)
|
|
|
|
}
|
|
|
|
|
|
|
|
// The sqlite3_trace() callback function
|
2022-05-07 22:41:21 +02:00
|
|
|
func traceCallback(tls *libc.TLS, NotUsed uintptr, zSql uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:602:13: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(16)
|
|
|
|
defer tls.Free(16)
|
|
|
|
|
|
|
|
var n int32 = int32(libc.Xstrlen(tls, zSql))
|
|
|
|
for n > 0 && (int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(n-1)))) == ';' || int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*uint8)(unsafe.Pointer(zSql + uintptr(n-1))))))*2)))&int32(_ISspace) != 0) {
|
|
|
|
n--
|
|
|
|
}
|
|
|
|
libc.Xfprintf(tls, libc.Xstderr, ts+2769, libc.VaList(bp, n, zSql))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Substitute random() function that gives the same random
|
|
|
|
// sequence on each run, for repeatability.
|
2022-05-07 22:41:21 +02:00
|
|
|
func randomFunc(tls *libc.TLS, context uintptr, NotUsed int32, NotUsed2 uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:611:13: */
|
2022-03-12 21:53:57 +00:00
|
|
|
sqlite3.Xsqlite3_result_int64(tls, context, sqlite3_int64(speedtest1_random(tls)))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Estimate the square root of an integer
|
2022-05-07 22:41:21 +02:00
|
|
|
func est_square_root(tls *libc.TLS, x int32) int32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:620:12: */
|
2022-03-12 21:53:57 +00:00
|
|
|
var y0 int32 = x / 2
|
|
|
|
var y1 int32
|
|
|
|
var n int32
|
|
|
|
for n = 0; y0 > 0 && n < 10; n++ {
|
|
|
|
y1 = (y0 + x/y0) / 2
|
|
|
|
if y1 == y0 {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
y0 = y1
|
|
|
|
}
|
|
|
|
return y0
|
|
|
|
}
|
|
|
|
|
|
|
|
// The main and default testset
|
2022-05-07 22:41:21 +02:00
|
|
|
func testset_main(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:697:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(2568)
|
|
|
|
defer tls.Free(2568)
|
|
|
|
|
|
|
|
var i int32 // Loop counter
|
|
|
|
var n int32 // iteration count
|
|
|
|
var sz int32 // Size of the tables
|
|
|
|
var maxb int32 // Maximum swizzled value
|
|
|
|
var x1 uint32 = uint32(0)
|
|
|
|
var x2 uint32 = uint32(0) // Parameters
|
|
|
|
var len int32 = 0 // Length of the zNum[] string
|
|
|
|
// var zNum [2000]uint8 at bp+568, 2000
|
|
|
|
// A number name
|
|
|
|
|
|
|
|
sz = libc.AssignInt32(&n, g.szTest*500)
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568)) = uint8(0)
|
|
|
|
maxb = int32(roundup_allones(tls, uint32(sz)))
|
|
|
|
speedtest1_begin_test(tls, 100, ts+2877, libc.VaList(bp, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_exec(tls, ts+2919,
|
|
|
|
libc.VaList(bp+8, isTemp(tls, 9), g.zNN, g.zNN, g.zNN))
|
|
|
|
speedtest1_prepare(tls, ts+2977, libc.VaList(bp+40, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = swizzle(tls, uint32(i), uint32(maxb))
|
|
|
|
speedtest1_numbername(tls, x1, bp+568, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int64(tls, g.pStmt, 1, sqlite3_int64(x1))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, i)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 3, bp+568, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz
|
|
|
|
speedtest1_begin_test(tls, 110, ts+3030, libc.VaList(bp+48, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
ts+3067,
|
|
|
|
libc.VaList(bp+56, isTemp(tls, 5), g.zNN, g.zPK, g.zNN, g.zNN, g.zWR))
|
|
|
|
speedtest1_prepare(tls, ts+3130, libc.VaList(bp+104, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = swizzle(tls, uint32(i), uint32(maxb))
|
|
|
|
speedtest1_numbername(tls, x1, bp+568, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, i)
|
|
|
|
sqlite3.Xsqlite3_bind_int64(tls, g.pStmt, 2, sqlite3_int64(x1))
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 3, bp+568, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz
|
|
|
|
speedtest1_begin_test(tls, 120, ts+3175, libc.VaList(bp+112, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
ts+3214,
|
|
|
|
libc.VaList(bp+120, isTemp(tls, 3), g.zNN, g.zPK, g.zNN, g.zNN, g.zWR))
|
|
|
|
speedtest1_prepare(tls, ts+3277, libc.VaList(bp+168, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = swizzle(tls, uint32(i), uint32(maxb))
|
|
|
|
speedtest1_numbername(tls, x1, bp+568, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, i)
|
|
|
|
sqlite3.Xsqlite3_bind_int64(tls, g.pStmt, 1, sqlite3_int64(x1))
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 3, bp+568, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = 25
|
|
|
|
speedtest1_begin_test(tls, 130, ts+3322, libc.VaList(bp+176, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+3361, libc.VaList(bp+184, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
if (i-1)%g.nRepeat == 0 {
|
|
|
|
x1 = speedtest1_random(tls) % uint32(maxb)
|
|
|
|
x2 = speedtest1_random(tls)%uint32(10) + uint32(sz/5000) + x1
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(x1))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32(x2))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = 10
|
|
|
|
speedtest1_begin_test(tls, 140, ts+3466, libc.VaList(bp+192, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+3494, libc.VaList(bp+200, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
if (i-1)%g.nRepeat == 0 {
|
|
|
|
x1 = speedtest1_random(tls) % uint32(maxb)
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568)) = uint8('%')
|
|
|
|
len = speedtest1_numbername(tls, uint32(i), bp+568+uintptr(1), int32(uint64(unsafe.Sizeof([2000]uint8{}))-uint64(2)))
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568 + uintptr(len))) = uint8('%')
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568 + uintptr(len+1))) = uint8(0)
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, bp+568, len+1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = 10
|
|
|
|
speedtest1_begin_test(tls, 142, ts+3589, libc.VaList(bp+208, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+3622, libc.VaList(bp+216, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
if (i-1)%g.nRepeat == 0 {
|
|
|
|
x1 = speedtest1_random(tls) % uint32(maxb)
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568)) = uint8('%')
|
|
|
|
len = speedtest1_numbername(tls, uint32(i), bp+568+uintptr(1), int32(uint64(unsafe.Sizeof([2000]uint8{}))-uint64(2)))
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568 + uintptr(len))) = uint8('%')
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568 + uintptr(len+1))) = uint8(0)
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, bp+568, len+1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = 10 // g.szTest/5;
|
|
|
|
speedtest1_begin_test(tls, 145, ts+3686, libc.VaList(bp+224, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+3729, libc.VaList(bp+232, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
if (i-1)%g.nRepeat == 0 {
|
|
|
|
x1 = speedtest1_random(tls) % uint32(maxb)
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568)) = uint8('%')
|
|
|
|
len = speedtest1_numbername(tls, uint32(i), bp+568+uintptr(1), int32(uint64(unsafe.Sizeof([2000]uint8{}))-uint64(2)))
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568 + uintptr(len))) = uint8('%')
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568 + uintptr(len+1))) = uint8(0)
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, bp+568, len+1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 150, ts+3802, 0)
|
|
|
|
speedtest1_exec(tls, ts+3826, 0)
|
|
|
|
speedtest1_exec(tls, ts+3833, 0)
|
|
|
|
speedtest1_exec(tls, ts+3867, 0)
|
|
|
|
speedtest1_exec(tls, ts+3894, 0)
|
|
|
|
speedtest1_exec(tls, ts+3928, 0)
|
|
|
|
speedtest1_exec(tls, ts+3960, 0)
|
|
|
|
speedtest1_exec(tls, ts+3990, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz / 5
|
|
|
|
speedtest1_begin_test(tls, 160, ts+3998, libc.VaList(bp+240, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+4035, libc.VaList(bp+248, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
if (i-1)%g.nRepeat == 0 {
|
|
|
|
x1 = speedtest1_random(tls) % uint32(maxb)
|
|
|
|
x2 = speedtest1_random(tls)%uint32(10) + uint32(sz/5000) + x1
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(x1))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32(x2))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz / 5
|
|
|
|
speedtest1_begin_test(tls, 161, ts+4140, libc.VaList(bp+256, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+4172, libc.VaList(bp+264, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
if (i-1)%g.nRepeat == 0 {
|
|
|
|
x1 = speedtest1_random(tls) % uint32(maxb)
|
|
|
|
x2 = speedtest1_random(tls)%uint32(10) + uint32(sz/5000) + x1
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(x1))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32(x2))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz / 5
|
|
|
|
speedtest1_begin_test(tls, 170, ts+4277, libc.VaList(bp+272, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+4311, libc.VaList(bp+280, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
if (i-1)%g.nRepeat == 0 {
|
|
|
|
x1 = swizzle(tls, uint32(i), uint32(maxb))
|
|
|
|
len = speedtest1_numbername(tls, x1, bp+568, int32(uint64(unsafe.Sizeof([2000]uint8{}))-uint64(1)))
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, bp+568, len, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz
|
|
|
|
speedtest1_begin_test(tls, 180, ts+4423, libc.VaList(bp+288, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
|
|
|
|
ts+4453,
|
|
|
|
libc.VaList(bp+296, isTemp(tls, 1), g.zNN, g.zPK, g.zNN, g.zNN, g.zWR))
|
|
|
|
speedtest1_exec(tls, ts+4524, 0)
|
|
|
|
speedtest1_exec(tls, ts+4550, 0)
|
|
|
|
speedtest1_exec(tls, ts+4576, 0)
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz
|
|
|
|
speedtest1_begin_test(tls, 190, ts+4608, libc.VaList(bp+344, n))
|
|
|
|
speedtest1_exec(tls, ts+4636, 0)
|
|
|
|
speedtest1_exec(tls, ts+4652, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 200, ts+4685, 0)
|
|
|
|
speedtest1_exec(tls, ts+4685, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 210, ts+4692, 0)
|
|
|
|
speedtest1_exec(tls, ts+4726, 0)
|
|
|
|
speedtest1_exec(tls, ts+4770, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz / 5
|
|
|
|
speedtest1_begin_test(tls, 230, ts+4792, libc.VaList(bp+352, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
ts+4829, libc.VaList(bp+360, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = speedtest1_random(tls) % uint32(maxb)
|
|
|
|
x2 = speedtest1_random(tls)%uint32(10) + uint32(sz/5000) + x1
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(x1))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32(x2))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz
|
|
|
|
speedtest1_begin_test(tls, 240, ts+4888, libc.VaList(bp+368, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
ts+4918, libc.VaList(bp+376, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = speedtest1_random(tls)%uint32(sz) + uint32(1)
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(x1))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 250, ts+4962, libc.VaList(bp+384, sz))
|
|
|
|
speedtest1_exec(tls, ts+5003, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 260, ts+5023, 0)
|
|
|
|
speedtest1_exec(tls, ts+4770, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz / 5
|
|
|
|
speedtest1_begin_test(tls, 270, ts+5056, libc.VaList(bp+392, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
ts+5093, libc.VaList(bp+400, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = speedtest1_random(tls)%uint32(maxb) + uint32(1)
|
|
|
|
x2 = speedtest1_random(tls)%uint32(10) + uint32(sz/5000) + x1
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(x1))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32(x2))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz
|
|
|
|
speedtest1_begin_test(tls, 280, ts+5147, libc.VaList(bp+408, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
ts+5177, libc.VaList(bp+416, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = speedtest1_random(tls)%uint32(sz) + uint32(1)
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(x1))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 290, ts+5216, libc.VaList(bp+424, sz))
|
|
|
|
speedtest1_exec(tls, ts+5255, 0)
|
|
|
|
speedtest1_exec(tls, ts+5299, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 300, ts+5343, libc.VaList(bp+432, sz))
|
|
|
|
speedtest1_exec(tls, ts+4636, 0)
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
ts+5384, 0)
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
ts+5449, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = sz / 5
|
|
|
|
speedtest1_begin_test(tls, 310, ts+5514, libc.VaList(bp+440, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+5533, 0)
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = speedtest1_random(tls)%uint32(sz) + uint32(1)
|
|
|
|
x2 = speedtest1_random(tls)%uint32(10) + x1 + uint32(4)
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(x1))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32(x2))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 320, ts+5646, libc.VaList(bp+448, n))
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+5669, 0)
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, est_square_root(tls, g.szTest)*50)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
sz = libc.AssignInt32(&n, g.szTest*700)
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568)) = uint8(0)
|
|
|
|
maxb = int32(roundup_allones(tls, uint32(sz/3)))
|
|
|
|
speedtest1_begin_test(tls, 400, ts+5787, libc.VaList(bp+456, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_exec(tls, ts+5812,
|
|
|
|
libc.VaList(bp+464, isTemp(tls, 9), g.zNN))
|
|
|
|
speedtest1_prepare(tls, ts+5860, libc.VaList(bp+480, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = swizzle(tls, uint32(i), uint32(maxb))
|
|
|
|
speedtest1_numbername(tls, uint32(i), bp+568, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(sqlite3_int64(x1)))
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 2, bp+568, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
speedtest1_begin_test(tls, 410, ts+5904, libc.VaList(bp+488, n))
|
|
|
|
speedtest1_prepare(tls, ts+5925, libc.VaList(bp+496, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = swizzle(tls, uint32(i), uint32(maxb))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(sqlite3_int64(x1)))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
sz = libc.AssignInt32(&n, g.szTest*700)
|
|
|
|
*(*uint8)(unsafe.Pointer(bp + 568)) = uint8(0)
|
|
|
|
maxb = int32(roundup_allones(tls, uint32(sz/3)))
|
|
|
|
speedtest1_begin_test(tls, 500, ts+5967, libc.VaList(bp+504, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_exec(tls, ts+5989,
|
|
|
|
libc.VaList(bp+512, isTemp(tls, 9), g.zNN,
|
|
|
|
func() uintptr {
|
|
|
|
if sqlite3.Xsqlite3_libversion_number(tls) >= 3008002 {
|
|
|
|
return ts + 6036 /* "WITHOUT ROWID" */
|
|
|
|
}
|
|
|
|
return ts + 2269 /* "" */
|
|
|
|
}()))
|
|
|
|
speedtest1_prepare(tls, ts+6050, libc.VaList(bp+536, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = swizzle(tls, uint32(i), uint32(maxb))
|
|
|
|
speedtest1_numbername(tls, x1, bp+568, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, i)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, bp+568, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
speedtest1_begin_test(tls, 510, ts+6094, libc.VaList(bp+544, n))
|
|
|
|
speedtest1_prepare(tls, ts+6118, libc.VaList(bp+552, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
x1 = swizzle(tls, uint32(i), uint32(maxb))
|
|
|
|
speedtest1_numbername(tls, x1, bp+568, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, bp+568, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
speedtest1_begin_test(tls, 520, ts+6160, libc.VaList(bp+560, n))
|
|
|
|
speedtest1_exec(tls, ts+6179, 0)
|
|
|
|
speedtest1_exec(tls, ts+6206, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 980, ts+6233, 0)
|
|
|
|
speedtest1_exec(tls, ts+6233, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 990, ts+6256, 0)
|
|
|
|
speedtest1_exec(tls, ts+6256, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
}
|
|
|
|
|
|
|
|
// A testset for common table expressions. This exercises code
|
|
|
|
// for views, subqueries, co-routines, etc.
|
2022-05-07 22:41:21 +02:00
|
|
|
func testset_cte(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:1147:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(32)
|
|
|
|
defer tls.Free(32)
|
|
|
|
|
|
|
|
var zPuz uintptr
|
|
|
|
var rSpacing float64
|
|
|
|
var nElem int32
|
|
|
|
|
|
|
|
if g.szTest < 25 {
|
|
|
|
zPuz = azPuzzle[0]
|
|
|
|
} else if g.szTest < 70 {
|
|
|
|
zPuz = azPuzzle[1]
|
|
|
|
} else {
|
|
|
|
zPuz = azPuzzle[2]
|
|
|
|
}
|
|
|
|
speedtest1_begin_test(tls, 100, ts+6264, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+6295, 0)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, zPuz, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 200, ts+7099, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+7127, 0)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, zPuz, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
rSpacing = 5.0 / float64(g.szTest)
|
|
|
|
speedtest1_begin_test(tls, 300, ts+7939, libc.VaList(bp, rSpacing))
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+7970, 0)
|
|
|
|
sqlite3.Xsqlite3_bind_double(tls, g.pStmt, 1, rSpacing*.05)
|
|
|
|
sqlite3.Xsqlite3_bind_double(tls, g.pStmt, 2, rSpacing)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
nElem = 10000 * g.szTest
|
|
|
|
speedtest1_begin_test(tls, 400, ts+8566, libc.VaList(bp+8, nElem))
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+8603,
|
|
|
|
libc.VaList(bp+16, nElem, nElem))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
}
|
|
|
|
|
|
|
|
var azPuzzle = [3]uintptr{
|
|
|
|
// Easy
|
|
|
|
|
|
|
|
ts + 8834,
|
|
|
|
|
|
|
|
ts + 8916,
|
|
|
|
|
|
|
|
ts + 8998,
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-src-3380500/test/speedtest1.c:1148:21 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
// Compute a pseudo-random floating point ascii number.
|
2022-05-07 22:41:21 +02:00
|
|
|
func speedtest1_random_ascii_fp(tls *libc.TLS, zFP uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:1300:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(24)
|
|
|
|
defer tls.Free(24)
|
|
|
|
|
|
|
|
var x int32 = int32(speedtest1_random(tls))
|
|
|
|
var y int32 = int32(speedtest1_random(tls))
|
|
|
|
var z int32
|
|
|
|
z = y % 10
|
|
|
|
if z < 0 {
|
|
|
|
z = -z
|
|
|
|
}
|
|
|
|
y = y / 10
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, 100, zFP, ts+9080, libc.VaList(bp, y, z, x%200))
|
|
|
|
}
|
|
|
|
|
|
|
|
// A testset for floating-point numbers.
|
2022-05-07 22:41:21 +02:00
|
|
|
func testset_fp(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:1313:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(272)
|
|
|
|
defer tls.Free(272)
|
|
|
|
|
|
|
|
var n int32
|
|
|
|
var i int32
|
|
|
|
// var zFP1 [100]uint8 at bp+72, 100
|
|
|
|
|
|
|
|
// var zFP2 [100]uint8 at bp+172, 100
|
|
|
|
|
|
|
|
n = g.szTest * 5000
|
|
|
|
speedtest1_begin_test(tls, 100, ts+9089, libc.VaList(bp, n*2))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_exec(tls, ts+9120,
|
|
|
|
libc.VaList(bp+8, isTemp(tls, 1), g.zNN, g.zNN))
|
|
|
|
speedtest1_prepare(tls, ts+9161, libc.VaList(bp+32, n))
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
speedtest1_random_ascii_fp(tls, bp+72)
|
|
|
|
speedtest1_random_ascii_fp(tls, bp+172)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, bp+72, -1, uintptr(0))
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 2, bp+172, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = g.szTest/25 + 2
|
|
|
|
speedtest1_begin_test(tls, 110, ts+9203, libc.VaList(bp+40, n))
|
|
|
|
speedtest1_prepare(tls, ts+9220, 0)
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
speedtest1_random_ascii_fp(tls, bp+72)
|
|
|
|
speedtest1_random_ascii_fp(tls, bp+172)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, bp+72, -1, uintptr(0))
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 2, bp+172, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 120, ts+9268, 0)
|
|
|
|
speedtest1_exec(tls, ts+3826, 0)
|
|
|
|
speedtest1_exec(tls, ts+9293, 0)
|
|
|
|
speedtest1_exec(tls, ts+9320, 0)
|
|
|
|
speedtest1_exec(tls, ts+9347, 0)
|
|
|
|
speedtest1_exec(tls, ts+3990, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = g.szTest/3 + 2
|
|
|
|
speedtest1_begin_test(tls, 130, ts+9377, libc.VaList(bp+48, n))
|
|
|
|
speedtest1_prepare(tls, ts+9220, 0)
|
|
|
|
for i = 1; i <= n; i++ {
|
|
|
|
speedtest1_random_ascii_fp(tls, bp+72)
|
|
|
|
speedtest1_random_ascii_fp(tls, bp+172)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 1, bp+72, -1, uintptr(0))
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 2, bp+172, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = g.szTest * 5000
|
|
|
|
speedtest1_begin_test(tls, 140, ts+9402, libc.VaList(bp+56, n))
|
|
|
|
speedtest1_exec(tls, ts+9422, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 150, ts+9465, libc.VaList(bp+64, n*4))
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
|
|
|
|
ts+9483, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Generate two numbers between 1 and mx. The first number is less than
|
|
|
|
// the second. Usually the numbers are near each other but can sometimes
|
|
|
|
// be far apart.
|
2022-05-07 22:41:21 +02:00
|
|
|
func twoCoords(tls *libc.TLS, p1 int32, p2 int32, mx uint32, pX0 uintptr, pX1 uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:1386:13: */
|
2022-03-12 21:53:57 +00:00
|
|
|
var d uint32
|
|
|
|
var x0 uint32
|
|
|
|
var x1 uint32
|
|
|
|
var span uint32
|
|
|
|
|
|
|
|
span = mx/uint32(100) + uint32(1)
|
|
|
|
if speedtest1_random(tls)%uint32(3) == uint32(0) {
|
|
|
|
span = span * uint32(p1)
|
|
|
|
}
|
|
|
|
if speedtest1_random(tls)%uint32(p2) == uint32(0) {
|
|
|
|
span = mx / uint32(2)
|
|
|
|
}
|
|
|
|
d = speedtest1_random(tls)%span + uint32(1)
|
|
|
|
x0 = speedtest1_random(tls)%(mx-d) + uint32(1)
|
|
|
|
x1 = x0 + d
|
|
|
|
*(*uint32)(unsafe.Pointer(pX0)) = x0
|
|
|
|
*(*uint32)(unsafe.Pointer(pX1)) = x1
|
|
|
|
}
|
|
|
|
|
|
|
|
// The following routine is an R-Tree geometry callback. It returns
|
|
|
|
// true if the object overlaps a slice on the Y coordinate between the
|
|
|
|
// two values given as arguments. In other words
|
|
|
|
//
|
|
|
|
// SELECT count(*) FROM rt1 WHERE id MATCH xslice(10,20);
|
|
|
|
//
|
|
|
|
// Is the same as saying:
|
|
|
|
//
|
|
|
|
// SELECT count(*) FROM rt1 WHERE y1>=10 AND y0<=20;
|
2022-05-07 22:41:21 +02:00
|
|
|
func xsliceGeometryCallback(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:1415:12: */
|
2022-03-12 21:53:57 +00:00
|
|
|
*(*int32)(unsafe.Pointer(pRes)) = libc.Bool32(*(*float64)(unsafe.Pointer(aCoord + 3*8)) >= *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).aParam)) && *(*float64)(unsafe.Pointer(aCoord + 2*8)) <= *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).aParam + 1*8)))
|
|
|
|
return SQLITE_OK
|
|
|
|
}
|
|
|
|
|
|
|
|
// A testset for the R-Tree virtual table
|
2022-05-07 22:41:21 +02:00
|
|
|
func testset_rtree(tls *libc.TLS, p1 int32, p2 int32) { /* testdata/sqlite-src-3380500/test/speedtest1.c:1430:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(224)
|
|
|
|
defer tls.Free(224)
|
|
|
|
|
|
|
|
var i uint32
|
|
|
|
var n uint32
|
|
|
|
var mxCoord uint32
|
|
|
|
// var x0 uint32 at bp+200, 4
|
|
|
|
|
|
|
|
// var x1 uint32 at bp+204, 4
|
|
|
|
|
|
|
|
// var y0 uint32 at bp+208, 4
|
|
|
|
|
|
|
|
// var y1 uint32 at bp+212, 4
|
|
|
|
|
|
|
|
// var z0 uint32 at bp+216, 4
|
|
|
|
|
|
|
|
// var z1 uint32 at bp+220, 4
|
|
|
|
|
|
|
|
var iStep uint32
|
|
|
|
var mxRowid uint32
|
|
|
|
var aCheck uintptr = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(g.szTest)*uint64(500)))
|
|
|
|
|
|
|
|
mxCoord = uint32(15000)
|
|
|
|
mxRowid = libc.AssignUint32(&n, uint32(g.szTest*500))
|
|
|
|
speedtest1_begin_test(tls, 100, ts+9578, libc.VaList(bp, n))
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_exec(tls, ts+9604, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
ts+9663, 0)
|
|
|
|
for i = uint32(1); i <= n; i++ {
|
|
|
|
twoCoords(tls, p1, p2, mxCoord, bp+200, bp+204)
|
|
|
|
twoCoords(tls, p1, p2, mxCoord, bp+208, bp+212)
|
|
|
|
twoCoords(tls, p1, p2, mxCoord, bp+216, bp+220)
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32(*(*uint32)(unsafe.Pointer(bp + 200 /* x0 */))))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 3, int32(*(*uint32)(unsafe.Pointer(bp + 204 /* x1 */))))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 4, int32(*(*uint32)(unsafe.Pointer(bp + 208 /* y0 */))))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 5, int32(*(*uint32)(unsafe.Pointer(bp + 212 /* y1 */))))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 6, int32(*(*uint32)(unsafe.Pointer(bp + 216 /* z0 */))))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 7, int32(*(*uint32)(unsafe.Pointer(bp + 220 /* z1 */))))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 101, ts+9729, 0)
|
|
|
|
speedtest1_exec(tls, ts+9764, 0)
|
|
|
|
speedtest1_exec(tls, ts+9822, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 200)
|
|
|
|
speedtest1_begin_test(tls, 110, ts+9855, libc.VaList(bp+8, n))
|
|
|
|
speedtest1_prepare(tls, ts+9898, 0)
|
|
|
|
iStep = mxCoord / n
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*iStep))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32((i+uint32(1))*iStep))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
*(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)) = libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
if g.bVerify != 0 {
|
|
|
|
n = uint32(g.szTest * 200)
|
|
|
|
speedtest1_begin_test(tls, 111, ts+9947, 0)
|
|
|
|
speedtest1_prepare(tls, ts+9994, 0)
|
|
|
|
iStep = mxCoord / n
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*iStep))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32((i+uint32(1))*iStep))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
if *(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)) != libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124) {
|
|
|
|
fatal_error(tls, ts+10042,
|
|
|
|
libc.VaList(bp+16, i, i*iStep, (i+uint32(1))*iStep, *(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)), libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
}
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 200)
|
|
|
|
speedtest1_begin_test(tls, 120, ts+10084, libc.VaList(bp+56, n))
|
|
|
|
speedtest1_prepare(tls, ts+10125, 0)
|
|
|
|
iStep = mxCoord / n
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*iStep))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32((i+uint32(1))*iStep))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
*(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)) = libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
if g.bVerify != 0 {
|
|
|
|
n = uint32(g.szTest * 200)
|
|
|
|
speedtest1_begin_test(tls, 121, ts+10174, 0)
|
|
|
|
speedtest1_prepare(tls, ts+10219, 0)
|
|
|
|
iStep = mxCoord / n
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*iStep))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32((i+uint32(1))*iStep))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
if *(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)) != libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124) {
|
|
|
|
fatal_error(tls, ts+10042,
|
|
|
|
libc.VaList(bp+64, i, i*iStep, (i+uint32(1))*iStep, *(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)), libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
}
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 200)
|
|
|
|
speedtest1_begin_test(tls, 125, ts+10267, libc.VaList(bp+104, n))
|
|
|
|
sqlite3.Xsqlite3_rtree_geometry_callback(tls, g.db, ts+10303, *(*uintptr)(unsafe.Pointer(&struct {
|
|
|
|
f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
|
|
|
|
}{xsliceGeometryCallback})), uintptr(0))
|
|
|
|
speedtest1_prepare(tls, ts+10310, 0)
|
|
|
|
iStep = mxCoord / n
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*iStep))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32((i+uint32(1))*iStep))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
if *(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)) != libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124) {
|
|
|
|
fatal_error(tls, ts+10042,
|
|
|
|
libc.VaList(bp+112, i, i*iStep, (i+uint32(1))*iStep, *(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)), libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 400)
|
|
|
|
speedtest1_begin_test(tls, 130, ts+10364, libc.VaList(bp+152, n))
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
ts+10407, 0)
|
|
|
|
iStep = mxCoord / n
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*iStep))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 2, int32((i+uint32(1))*iStep))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
*(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)) = libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 500)
|
|
|
|
speedtest1_begin_test(tls, 140, ts+10500, libc.VaList(bp+160, n))
|
|
|
|
speedtest1_prepare(tls, ts+10517, 0)
|
|
|
|
for i = uint32(1); i <= n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 50)
|
|
|
|
speedtest1_begin_test(tls, 150, ts+10547, libc.VaList(bp+168, n))
|
|
|
|
speedtest1_prepare(tls, ts+10570, 0)
|
|
|
|
for i = uint32(1); i <= n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*uint32(251)%mxRowid+uint32(1)))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 5)
|
|
|
|
speedtest1_begin_test(tls, 155, ts+10618, libc.VaList(bp+176, n))
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
ts+10659, 0)
|
|
|
|
iStep = mxCoord / n
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*iStep))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
*(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)) = libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 50)
|
|
|
|
speedtest1_begin_test(tls, 160, ts+10721, libc.VaList(bp+184, n))
|
|
|
|
speedtest1_prepare(tls, ts+10744, 0)
|
|
|
|
for i = uint32(1); i <= n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*uint32(257)%mxRowid+uint32(1)))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 5)
|
|
|
|
speedtest1_begin_test(tls, 165, ts+10772, libc.VaList(bp+192, n))
|
|
|
|
speedtest1_prepare(tls, ts+10813, 0)
|
|
|
|
iStep = mxCoord / n
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i*iStep))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
*(*int32)(unsafe.Pointer(aCheck + uintptr(i)*4)) = libc.Xatoi(tls, uintptr(unsafe.Pointer(&g))+124)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 170, ts+10855, 0)
|
|
|
|
speedtest1_exec(tls, ts+10902, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
}
|
|
|
|
|
|
|
|
// A testset that does key/value storage on tables with many columns.
|
|
|
|
// This is the kind of workload generated by ORMs such as CoreData.
|
2022-05-07 22:41:21 +02:00
|
|
|
func testset_orm(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:1615:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(2016)
|
|
|
|
defer tls.Free(2016)
|
|
|
|
|
|
|
|
var i uint32
|
|
|
|
var j uint32
|
|
|
|
var n uint32
|
|
|
|
var nRow uint32
|
|
|
|
var x1 uint32
|
|
|
|
var len uint32
|
|
|
|
// var zNum [2000]uint8 at bp+16, 2000
|
|
|
|
|
|
|
|
nRow = libc.AssignUint32(&n, uint32(g.szTest*250))
|
|
|
|
speedtest1_begin_test(tls, 100, ts+10945, libc.VaList(bp, n))
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
|
|
|
|
ts+10958, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+14858, 0)
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
x1 = speedtest1_random(tls)
|
|
|
|
speedtest1_numbername(tls, x1%uint32(1000), bp+16, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
len = uint32(int32(libc.Xstrlen(tls, bp+16)))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(i^uint32(0xf)))
|
|
|
|
for j = uint32(0); zType[j] != 0; j++ {
|
|
|
|
switch int32(zType[j]) {
|
|
|
|
case 'I':
|
|
|
|
fallthrough
|
|
|
|
case 'T':
|
|
|
|
sqlite3.Xsqlite3_bind_int64(tls, g.pStmt, int32(j+uint32(2)), int64(x1))
|
|
|
|
break
|
|
|
|
case 'F':
|
|
|
|
sqlite3.Xsqlite3_bind_double(tls, g.pStmt, int32(j+uint32(2)), float64(x1))
|
|
|
|
break
|
|
|
|
case 'V':
|
|
|
|
fallthrough
|
|
|
|
case 'B':
|
|
|
|
sqlite3.Xsqlite3_bind_text64(tls, g.pStmt, int32(j+uint32(2)), bp+16, uint64(len),
|
|
|
|
uintptr(0), uint8(SQLITE_UTF8))
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3990, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
n = uint32(g.szTest * 250)
|
|
|
|
speedtest1_begin_test(tls, 110, ts+18102, libc.VaList(bp+8, n))
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+18125, 0)
|
|
|
|
for i = uint32(0); i < n; i++ {
|
|
|
|
x1 = speedtest1_random(tls) % nRow
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, int32(x1))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
}
|
|
|
|
|
|
|
|
var zType = // Types for all non-PK columns, in order
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
*(*[120]uint8)(unsafe.Pointer(ts + 20878)) /* testdata/sqlite-src-3380500/test/speedtest1.c:1620:21 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
|
|
|
//
|
2022-05-07 22:41:21 +02:00
|
|
|
func testset_trigger(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:1882:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(2032)
|
|
|
|
defer tls.Free(2032)
|
|
|
|
|
|
|
|
var jj int32
|
|
|
|
var ii int32
|
|
|
|
// var zNum [2000]uint8 at bp+32, 2000
|
|
|
|
// A number name
|
|
|
|
|
|
|
|
var NROW int32 = 500 * g.szTest
|
|
|
|
var NROW2 int32 = 100 * g.szTest
|
|
|
|
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
|
|
|
|
ts+20998, 0)
|
|
|
|
for jj = 1; jj <= 3; jj++ {
|
|
|
|
speedtest1_prepare(tls, ts+21326, libc.VaList(bp, jj))
|
|
|
|
for ii = 0; ii < NROW; ii++ {
|
|
|
|
var x1 int32 = int32(speedtest1_random(tls) % uint32(NROW))
|
|
|
|
speedtest1_numbername(tls, uint32(x1), bp+32, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, x1)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 2, bp+32, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
|
|
|
|
ts+21361, 0)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 100, ts+21444, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
ts+21458, 0)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 110, ts+21525, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
ts+21539, 0)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 120, ts+21598, 0)
|
|
|
|
for jj = 1; jj <= 3; jj++ {
|
|
|
|
speedtest1_prepare(tls, ts+21612, libc.VaList(bp+8, jj))
|
|
|
|
for ii = 0; ii < NROW2; ii = ii + 3 {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, ii*3)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 130, ts+21646, 0)
|
|
|
|
for jj = 1; jj <= 3; jj++ {
|
|
|
|
speedtest1_prepare(tls, ts+21661, libc.VaList(bp+16, jj))
|
|
|
|
for ii = 0; ii < NROW2; ii = ii + 3 {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, ii*3)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 140, ts+21646, 0)
|
|
|
|
for jj = 1; jj <= 3; jj++ {
|
|
|
|
speedtest1_prepare(tls, ts+21661, libc.VaList(bp+24, jj))
|
|
|
|
for ii = 0; ii < NROW2; ii = ii + 3 {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, ii*3)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 150, ts+21695, 0)
|
|
|
|
speedtest1_prepare(tls,
|
|
|
|
|
|
|
|
ts+21714, 0)
|
|
|
|
for jj = 0; jj < NROW2; jj++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, jj*3)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 160, ts+21829, 0)
|
|
|
|
speedtest1_exec(tls, ts+2913, 0)
|
|
|
|
speedtest1_prepare(tls, ts+21850, 0)
|
|
|
|
for jj = 0; jj < NROW2; jj++ {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, jj)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_exec(tls, ts+21885, 0)
|
|
|
|
speedtest1_begin_test(tls, 170, ts+21933, 0)
|
|
|
|
speedtest1_exec(tls, ts+21955, 0)
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
|
|
|
|
ts+22000, 0)
|
|
|
|
|
|
|
|
speedtest1_begin_test(tls, 180, ts+22490, 0)
|
|
|
|
speedtest1_prepare(tls, ts+22507, 0)
|
|
|
|
for jj = 0; jj < NROW2; jj++ {
|
|
|
|
speedtest1_numbername(tls, uint32(jj), bp+32, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, jj)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 2, bp+32, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
// Note: Of the queries, only half actually update a row. This property
|
|
|
|
// was copied over from speed4p.test, where it was probably introduced
|
|
|
|
// inadvertantly.
|
|
|
|
speedtest1_begin_test(tls, 190, ts+22543, 0)
|
|
|
|
speedtest1_prepare(tls, ts+22560, 0)
|
|
|
|
for jj = 1; jj <= NROW2*2; jj = jj + 2 {
|
|
|
|
speedtest1_numbername(tls, uint32(jj*2), bp+32, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, jj*2)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 2, bp+32, -1, uintptr(0))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 3, jj)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
|
|
|
|
// Note: Same again.
|
|
|
|
speedtest1_begin_test(tls, 200, ts+22606, 0)
|
|
|
|
speedtest1_prepare(tls, ts+22623, 0)
|
|
|
|
for jj = 1; jj <= NROW2*2; jj = jj + 2 {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, jj*2)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
|
|
|
|
// The following block contains the same tests as the above block that
|
|
|
|
// tests triggers, with one crucial difference: no triggers are defined.
|
|
|
|
// So the difference in speed between these tests and the preceding ones
|
|
|
|
// is the amount of time taken to compile and execute the trigger programs.
|
|
|
|
speedtest1_exec(tls,
|
|
|
|
|
|
|
|
ts+22655, 0)
|
|
|
|
speedtest1_begin_test(tls, 210, ts+22760, 0)
|
|
|
|
speedtest1_prepare(tls, ts+22507, 0)
|
|
|
|
for jj = 0; jj < NROW2; jj++ {
|
|
|
|
speedtest1_numbername(tls, uint32(jj), bp+32, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, jj)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 2, bp+32, -1, uintptr(0))
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
speedtest1_begin_test(tls, 210, ts+22779, 0)
|
|
|
|
speedtest1_prepare(tls, ts+22560, 0)
|
|
|
|
for jj = 1; jj <= NROW2*2; jj = jj + 2 {
|
|
|
|
speedtest1_numbername(tls, uint32(jj*2), bp+32, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, jj*2)
|
|
|
|
sqlite3.Xsqlite3_bind_text(tls, g.pStmt, 2, bp+32, -1, uintptr(0))
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 3, jj)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
speedtest1_begin_test(tls, 220, ts+22798, 0)
|
|
|
|
speedtest1_prepare(tls, ts+22623, 0)
|
|
|
|
for jj = 1; jj <= NROW2*2; jj = jj + 2 {
|
|
|
|
sqlite3.Xsqlite3_bind_int(tls, g.pStmt, 1, jj*2)
|
|
|
|
speedtest1_run(tls)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
speedtest1_exec(tls, ts+3023, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
// A testset used for debugging speedtest1 itself.
|
2022-05-07 22:41:21 +02:00
|
|
|
func testset_debug1(tls *libc.TLS) { /* testdata/sqlite-src-3380500/test/speedtest1.c:2084:6: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(2032)
|
|
|
|
defer tls.Free(2032)
|
|
|
|
|
|
|
|
var i uint32
|
|
|
|
var n uint32
|
|
|
|
var x1 uint32
|
|
|
|
var x2 uint32
|
|
|
|
// var zNum [2000]uint8 at bp+32, 2000
|
|
|
|
// A number name
|
|
|
|
|
|
|
|
n = uint32(g.szTest)
|
|
|
|
for i = uint32(1); i <= n; i++ {
|
|
|
|
x1 = swizzle(tls, i, n)
|
|
|
|
x2 = swizzle(tls, x1, n)
|
|
|
|
speedtest1_numbername(tls, x1, bp+32, int32(unsafe.Sizeof([2000]uint8{})))
|
|
|
|
libc.Xprintf(tls, ts+22817, libc.VaList(bp, i, x1, x2, bp+32))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
// Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
2022-03-12 21:53:57 +00:00
|
|
|
// This file is part of the GNU C Library.
|
|
|
|
//
|
|
|
|
// The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with the GNU C Library; if not, see
|
|
|
|
// <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// POSIX Standard: 2.10 Symbolic Constants <unistd.h>
|
|
|
|
|
|
|
|
// Attempt to display I/O stats on Linux using /proc/PID/io
|
2022-05-07 22:41:21 +02:00
|
|
|
func displayLinuxIoStats(tls *libc.TLS, out uintptr) { /* testdata/sqlite-src-3380500/test/speedtest1.c:2105:13: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(224)
|
|
|
|
defer tls.Free(224)
|
|
|
|
|
|
|
|
var in uintptr
|
|
|
|
// var z [200]uint8 at bp+24, 200
|
|
|
|
|
|
|
|
sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+24, ts+22833, libc.VaList(bp, libc.Xgetpid(tls)))
|
|
|
|
in = libc.Xfopen(tls, bp+24, ts+22845)
|
|
|
|
if in == uintptr(0) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
for libc.Xfgets(tls, bp+24, int32(unsafe.Sizeof([200]uint8{})), in) != uintptr(0) {
|
|
|
|
var i int32
|
|
|
|
for i = 0; uint64(i) < uint64(unsafe.Sizeof(aTrans))/uint64(unsafe.Sizeof(struct {
|
|
|
|
zPattern uintptr
|
|
|
|
zDesc uintptr
|
|
|
|
}{})); i++ {
|
|
|
|
var n int32 = int32(libc.Xstrlen(tls, aTrans[i].zPattern))
|
|
|
|
if libc.Xstrncmp(tls, aTrans[i].zPattern, bp+24, uint64(n)) == 0 {
|
|
|
|
libc.Xfprintf(tls, out, ts+22848, libc.VaList(bp+8, aTrans[i].zDesc, bp+24+uintptr(n)))
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
libc.Xfclose(tls, in)
|
|
|
|
}
|
|
|
|
|
|
|
|
var aTrans = [7]struct {
|
|
|
|
zPattern uintptr
|
|
|
|
zDesc uintptr
|
|
|
|
}{
|
|
|
|
{zPattern: ts + 22860 /* "rchar: " */, zDesc: ts + 22868 /* "Bytes received b..." */},
|
|
|
|
{zPattern: ts + 22894 /* "wchar: " */, zDesc: ts + 22902 /* "Bytes sent to wr..." */},
|
|
|
|
{zPattern: ts + 22925 /* "syscr: " */, zDesc: ts + 22933 /* "Read() system ca..." */},
|
|
|
|
{zPattern: ts + 22954 /* "syscw: " */, zDesc: ts + 22962 /* "Write() system c..." */},
|
|
|
|
{zPattern: ts + 22984 /* "read_bytes: " */, zDesc: ts + 22997 /* "Bytes rcvd from ..." */},
|
|
|
|
{zPattern: ts + 23022 /* "write_bytes: " */, zDesc: ts + 23036 /* "Bytes sent to st..." */},
|
|
|
|
{zPattern: ts + 23059 /* "cancelled_write_..." */, zDesc: ts + 23083 /* "Cancelled write ..." */},
|
2022-05-07 22:41:21 +02:00
|
|
|
} /* testdata/sqlite-src-3380500/test/speedtest1.c:2115:7 */
|
2022-03-12 21:53:57 +00:00
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
func xCompileOptions(tls *libc.TLS, pCtx uintptr, nVal int32, azVal uintptr, azCol uintptr) int32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:2145:12: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(8)
|
|
|
|
defer tls.Free(8)
|
|
|
|
|
|
|
|
libc.Xprintf(tls, ts+23106, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(azVal))))
|
|
|
|
return SQLITE_OK
|
|
|
|
}
|
|
|
|
|
2022-05-07 22:41:21 +02:00
|
|
|
func main1(tls *libc.TLS, argc int32, argv uintptr) int32 { /* testdata/sqlite-src-3380500/test/speedtest1.c:2150:5: */
|
2022-03-12 21:53:57 +00:00
|
|
|
bp := tls.Alloc(576)
|
|
|
|
defer tls.Free(576)
|
|
|
|
|
|
|
|
var doAutovac int32 = 0 // True for --autovacuum
|
|
|
|
var cacheSize int32 = 0 // Desired cache size. 0 means default
|
|
|
|
var doExclusive int32 = 0 // True for --exclusive
|
|
|
|
var nHeap int32 = 0
|
|
|
|
var mnHeap int32 = 0 // Heap size from --heap
|
|
|
|
var doIncrvac int32 = 0 // True for --incrvacuum
|
|
|
|
var zJMode uintptr = uintptr(0) // Journal mode
|
|
|
|
var zKey uintptr = uintptr(0) // Encryption key
|
|
|
|
var nLook int32 = -1
|
|
|
|
var szLook int32 = 0 // --lookaside configuration
|
|
|
|
var noSync int32 = 0 // True for --nosync
|
|
|
|
var pageSize int32 = 0 // Desired page size. 0 means default
|
|
|
|
var nPCache int32 = 0
|
|
|
|
var szPCache int32 = 0 // --pcache configuration
|
|
|
|
var doPCache int32 = 0 // True if --pcache is seen
|
|
|
|
var showStats int32 = 0 // True for --stats
|
|
|
|
var nThread int32 = 0 // --threads value
|
|
|
|
var mmapSize int32 = 0 // How big of a memory map to use
|
|
|
|
var memDb int32 = 0 // --memdb. Use an in-memory database
|
|
|
|
var zTSet uintptr = ts + 23129 /* "main" */ // Which --testset torun
|
|
|
|
var doTrace int32 = 0 // True for --trace
|
|
|
|
var zEncoding uintptr = uintptr(0) // --utf16be or --utf16le
|
|
|
|
var zDbName uintptr = uintptr(0) // Name of the test database
|
|
|
|
|
|
|
|
var pHeap uintptr = uintptr(0) // Allocated heap space
|
|
|
|
var pLook uintptr = uintptr(0) // Allocated lookaside space
|
|
|
|
var pPCache uintptr = uintptr(0) // Allocated storage for pcache
|
|
|
|
// var iCur int32 at bp+568, 4
|
|
|
|
|
|
|
|
// var iHi int32 at bp+572, 4
|
|
|
|
// Stats values, current and "highwater"
|
|
|
|
var i int32 // Loop counter
|
|
|
|
var rc int32 // API return code
|
|
|
|
|
|
|
|
// Display the version of SQLite being tested
|
|
|
|
libc.Xprintf(tls, ts+23134,
|
|
|
|
libc.VaList(bp, sqlite3.Xsqlite3_libversion(tls), sqlite3.Xsqlite3_sourceid(tls)))
|
|
|
|
|
|
|
|
// Process command-line arguments
|
|
|
|
g.zWR = ts + 2269 /* "" */
|
|
|
|
g.zNN = ts + 2269 /* "" */
|
|
|
|
g.zPK = ts + 23169 /* "UNIQUE" */
|
|
|
|
g.szTest = 100
|
|
|
|
g.nRepeat = 1
|
|
|
|
for i = 1; i < argc; i++ {
|
|
|
|
var z uintptr = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
|
|
|
|
if int32(*(*uint8)(unsafe.Pointer(z))) == '-' {
|
|
|
|
for __ccgo := true; __ccgo; __ccgo = int32(*(*uint8)(unsafe.Pointer(z))) == '-' {
|
|
|
|
z++
|
|
|
|
}
|
|
|
|
if libc.Xstrcmp(tls, z, ts+23176) == 0 {
|
|
|
|
doAutovac = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23187) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
i++
|
|
|
|
cacheSize = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23221) == 0 {
|
|
|
|
doExclusive = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23231) == 0 {
|
|
|
|
g.doCheckpoint = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23242) == 0 {
|
|
|
|
g.bSqlOnly = 1
|
|
|
|
g.bExplain = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23250) == 0 {
|
|
|
|
if i >= argc-2 {
|
|
|
|
fatal_error(tls, ts+23255, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
nHeap = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i+1)*8)))
|
|
|
|
mnHeap = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i+2)*8)))
|
|
|
|
i = i + 2
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23280) == 0 {
|
|
|
|
doIncrvac = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23291) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
zJMode = *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PreIncInt32(&i, 1))*8))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23299) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
zKey = *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PreIncInt32(&i, 1))*8))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23303) == 0 {
|
|
|
|
if i >= argc-2 {
|
|
|
|
fatal_error(tls, ts+23255, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
nLook = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i+1)*8)))
|
|
|
|
szLook = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i+2)*8)))
|
|
|
|
i = i + 2
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23313) == 0 {
|
|
|
|
memDb = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23319) == 0 {
|
|
|
|
sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MULTITHREAD, 0)
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23331) == 0 {
|
|
|
|
sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MEMSTATUS, libc.VaList(bp+56, 0))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23341) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
mmapSize = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PreIncInt32(&i, 1))*8)))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23346) == 0 {
|
|
|
|
noSync = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23353) == 0 {
|
|
|
|
g.zNN = ts + 23361 /* "NOT NULL" */
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23370) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+72, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
i++
|
|
|
|
if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ts+23377) == 0 {
|
|
|
|
g.hashFile = libc.Xstdout
|
|
|
|
} else {
|
|
|
|
g.hashFile = libc.Xfopen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ts+23379)
|
|
|
|
if g.hashFile == uintptr(0) {
|
|
|
|
fatal_error(tls, ts+23382, libc.VaList(bp+80, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23412) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+88, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
pageSize = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PreIncInt32(&i, 1))*8)))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23421) == 0 {
|
|
|
|
if i >= argc-2 {
|
|
|
|
fatal_error(tls, ts+23255, libc.VaList(bp+96, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
nPCache = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i+1)*8)))
|
|
|
|
szPCache = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i+2)*8)))
|
|
|
|
doPCache = 1
|
|
|
|
i = i + 2
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23428) == 0 {
|
|
|
|
g.zPK = ts + 23439 /* "PRIMARY KEY" */
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23451) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23255, libc.VaList(bp+104, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
g.nRepeat = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i+1)*8)))
|
|
|
|
i = i + 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23458) == 0 {
|
|
|
|
g.bReprepare = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23468) == 0 {
|
|
|
|
sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_SERIALIZED, 0)
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23479) == 0 {
|
|
|
|
sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_SINGLETHREAD, 0)
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23492) == 0 {
|
|
|
|
g.bSqlOnly = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23500) == 0 {
|
|
|
|
g.bMemShrink = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23514) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+112, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
g.szTest = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PreIncInt32(&i, 1))*8)))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23519) == 0 {
|
|
|
|
showStats = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23525) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+120, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
i++
|
|
|
|
if int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))) < '0' || int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))) > '9' || int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) + 1))) != 0 {
|
|
|
|
fatal_error(tls, ts+23530, 0)
|
|
|
|
}
|
|
|
|
g.eTemp = int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))) - '0'
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23583) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+128, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
zTSet = *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PreIncInt32(&i, 1))*8))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23591) == 0 {
|
|
|
|
doTrace = 1
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23597) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+136, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
nThread = integerValue(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PreIncInt32(&i, 1))*8)))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23605) == 0 {
|
|
|
|
zEncoding = ts + 23605 /* "utf16le" */
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23613) == 0 {
|
|
|
|
zEncoding = ts + 23613 /* "utf16be" */
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23621) == 0 {
|
|
|
|
g.bVerify = 1
|
|
|
|
HashInit(tls)
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23628) == 0 {
|
|
|
|
if i >= argc-1 {
|
|
|
|
fatal_error(tls, ts+23197, libc.VaList(bp+144, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
|
|
|
|
}
|
|
|
|
g.nReserve = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PreIncInt32(&i, 1))*8)))
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23636) == 0 {
|
|
|
|
if libc.Xstrstr(tls, g.zWR, ts+23650) != uintptr(0) {
|
|
|
|
// no-op
|
|
|
|
} else if libc.Xstrstr(tls, g.zWR, ts+23658) != uintptr(0) {
|
|
|
|
g.zWR = ts + 23665 /* "WITHOUT ROWID,ST..." */
|
|
|
|
} else {
|
|
|
|
g.zWR = ts + 6036 /* "WITHOUT ROWID" */
|
|
|
|
}
|
|
|
|
g.zPK = ts + 23439 /* "PRIMARY KEY" */
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23686) == 0 {
|
|
|
|
if libc.Xstrstr(tls, g.zWR, ts+23658) != uintptr(0) {
|
|
|
|
// no-op
|
|
|
|
} else if libc.Xstrstr(tls, g.zWR, ts+23650) != uintptr(0) {
|
|
|
|
g.zWR = ts + 23665 /* "WITHOUT ROWID,ST..." */
|
|
|
|
} else {
|
|
|
|
g.zWR = ts + 23658 /* "STRICT" */
|
|
|
|
}
|
|
|
|
} else if libc.Xstrcmp(tls, z, ts+23693) == 0 || libc.Xstrcmp(tls, z, ts+23698) == 0 {
|
|
|
|
libc.Xprintf(tls, uintptr(unsafe.Pointer(&zHelp)), libc.VaList(bp+152, *(*uintptr)(unsafe.Pointer(argv))))
|
|
|
|
libc.Xexit(tls, 0)
|
|
|
|
} else {
|
|
|
|
fatal_error(tls, ts+23700,
|
|
|
|
libc.VaList(bp+160, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), *(*uintptr)(unsafe.Pointer(argv))))
|
|
|
|
}
|
|
|
|
} else if zDbName == uintptr(0) {
|
|
|
|
zDbName = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
|
|
|
|
} else {
|
|
|
|
fatal_error(tls, ts+23741,
|
|
|
|
libc.VaList(bp+176, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), *(*uintptr)(unsafe.Pointer(argv))))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if zDbName != uintptr(0) {
|
|
|
|
libc.Xunlink(tls, zDbName)
|
|
|
|
}
|
|
|
|
if nHeap > 0 {
|
|
|
|
pHeap = libc.Xmalloc(tls, uint64(nHeap))
|
|
|
|
if pHeap == uintptr(0) {
|
|
|
|
fatal_error(tls, ts+23784, libc.VaList(bp+192, nHeap))
|
|
|
|
}
|
|
|
|
rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp+200, pHeap, nHeap, mnHeap))
|
|
|
|
if rc != 0 {
|
|
|
|
fatal_error(tls, ts+23814, libc.VaList(bp+224, rc))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if doPCache != 0 {
|
|
|
|
if nPCache > 0 && szPCache > 0 {
|
|
|
|
pPCache = libc.Xmalloc(tls, uint64(sqlite3_int64(nPCache)*sqlite3_int64(szPCache)))
|
|
|
|
if pPCache == uintptr(0) {
|
|
|
|
fatal_error(tls, ts+23845,
|
|
|
|
libc.VaList(bp+232, sqlite3_int64(nPCache)*sqlite3_int64(szPCache)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp+240, pPCache, szPCache, nPCache))
|
|
|
|
if rc != 0 {
|
|
|
|
fatal_error(tls, ts+23879, libc.VaList(bp+264, rc))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if nLook >= 0 {
|
|
|
|
sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOOKASIDE, libc.VaList(bp+272, 0, 0))
|
|
|
|
}
|
|
|
|
sqlite3.Xsqlite3_initialize(tls)
|
|
|
|
|
|
|
|
// Open the database and the input file
|
|
|
|
if sqlite3.Xsqlite3_open(tls, func() uintptr {
|
|
|
|
if memDb != 0 {
|
|
|
|
return ts + 23912
|
|
|
|
}
|
|
|
|
return zDbName
|
|
|
|
}(), uintptr(unsafe.Pointer(&g))) != 0 {
|
|
|
|
fatal_error(tls, ts+23921, libc.VaList(bp+288, zDbName))
|
|
|
|
}
|
|
|
|
if nLook > 0 && szLook > 0 {
|
|
|
|
pLook = libc.Xmalloc(tls, uint64(nLook*szLook))
|
|
|
|
rc = sqlite3.Xsqlite3_db_config(tls, g.db, SQLITE_DBCONFIG_LOOKASIDE, libc.VaList(bp+296, pLook, szLook, nLook))
|
|
|
|
if rc != 0 {
|
|
|
|
fatal_error(tls, ts+23952, libc.VaList(bp+320, rc))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if g.nReserve > 0 {
|
|
|
|
sqlite3.Xsqlite3_file_control(tls, g.db, uintptr(0), SQLITE_FCNTL_RESERVE_BYTES, uintptr(unsafe.Pointer(&g))+72)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set database connection options
|
|
|
|
sqlite3.Xsqlite3_create_function(tls, g.db, ts+23988, 0, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
|
|
|
|
f func(*libc.TLS, uintptr, int32, uintptr)
|
|
|
|
}{randomFunc})), uintptr(0), uintptr(0))
|
|
|
|
if doTrace != 0 {
|
|
|
|
sqlite3.Xsqlite3_trace(tls, g.db, *(*uintptr)(unsafe.Pointer(&struct {
|
|
|
|
f func(*libc.TLS, uintptr, uintptr)
|
|
|
|
}{traceCallback})), uintptr(0))
|
|
|
|
}
|
|
|
|
if memDb > 0 {
|
|
|
|
speedtest1_exec(tls, ts+23995, 0)
|
|
|
|
}
|
|
|
|
if mmapSize > 0 {
|
|
|
|
speedtest1_exec(tls, ts+24020, libc.VaList(bp+328, mmapSize))
|
|
|
|
}
|
|
|
|
speedtest1_exec(tls, ts+24040, libc.VaList(bp+336, nThread))
|
|
|
|
if zKey != 0 {
|
|
|
|
speedtest1_exec(tls, ts+24058, libc.VaList(bp+344, zKey))
|
|
|
|
}
|
|
|
|
if zEncoding != 0 {
|
|
|
|
speedtest1_exec(tls, ts+24075, libc.VaList(bp+352, zEncoding))
|
|
|
|
}
|
|
|
|
if doAutovac != 0 {
|
|
|
|
speedtest1_exec(tls, ts+24094, 0)
|
|
|
|
} else if doIncrvac != 0 {
|
|
|
|
speedtest1_exec(tls, ts+24118, 0)
|
|
|
|
}
|
|
|
|
if pageSize != 0 {
|
|
|
|
speedtest1_exec(tls, ts+24149, libc.VaList(bp+360, pageSize))
|
|
|
|
}
|
|
|
|
if cacheSize != 0 {
|
|
|
|
speedtest1_exec(tls, ts+24169, libc.VaList(bp+368, cacheSize))
|
|
|
|
}
|
|
|
|
if noSync != 0 {
|
|
|
|
speedtest1_exec(tls, ts+24190, 0)
|
|
|
|
}
|
|
|
|
if doExclusive != 0 {
|
|
|
|
speedtest1_exec(tls, ts+24213, 0)
|
|
|
|
}
|
|
|
|
if zJMode != 0 {
|
|
|
|
speedtest1_exec(tls, ts+24243, libc.VaList(bp+376, zJMode))
|
|
|
|
}
|
|
|
|
|
|
|
|
if g.bExplain != 0 {
|
|
|
|
libc.Xprintf(tls, ts+24266, 0)
|
|
|
|
}
|
|
|
|
for __ccgo1 := true; __ccgo1; __ccgo1 = *(*uint8)(unsafe.Pointer(zTSet)) != 0 {
|
|
|
|
var zThisTest uintptr = zTSet
|
|
|
|
var zComma uintptr = libc.Xstrchr(tls, zThisTest, ',')
|
|
|
|
if zComma != 0 {
|
|
|
|
*(*uint8)(unsafe.Pointer(zComma)) = uint8(0)
|
|
|
|
zTSet = zComma + uintptr(1)
|
|
|
|
} else {
|
|
|
|
zTSet = ts + 2269 /* "" */
|
|
|
|
}
|
|
|
|
if g.iTotal > int64(0) || zComma != uintptr(0) {
|
|
|
|
libc.Xprintf(tls, ts+24285, libc.VaList(bp+384, zThisTest))
|
|
|
|
}
|
|
|
|
if libc.Xstrcmp(tls, zThisTest, ts+23129) == 0 {
|
|
|
|
testset_main(tls)
|
|
|
|
} else if libc.Xstrcmp(tls, zThisTest, ts+24312) == 0 {
|
|
|
|
testset_debug1(tls)
|
|
|
|
} else if libc.Xstrcmp(tls, zThisTest, ts+24319) == 0 {
|
|
|
|
testset_orm(tls)
|
|
|
|
} else if libc.Xstrcmp(tls, zThisTest, ts+24323) == 0 {
|
|
|
|
testset_cte(tls)
|
|
|
|
} else if libc.Xstrcmp(tls, zThisTest, ts+24327) == 0 {
|
|
|
|
testset_fp(tls)
|
|
|
|
} else if libc.Xstrcmp(tls, zThisTest, ts+24330) == 0 {
|
|
|
|
testset_trigger(tls)
|
|
|
|
} else if libc.Xstrcmp(tls, zThisTest, ts+24338) == 0 {
|
|
|
|
testset_rtree(tls, 6, 147)
|
|
|
|
} else {
|
|
|
|
fatal_error(tls,
|
|
|
|
ts+24344,
|
|
|
|
libc.VaList(bp+392, zThisTest))
|
|
|
|
}
|
|
|
|
if *(*uint8)(unsafe.Pointer(zTSet)) != 0 {
|
|
|
|
var zSql uintptr
|
|
|
|
var zObj uintptr
|
|
|
|
speedtest1_begin_test(tls, 999, ts+24413, 0)
|
|
|
|
for 1 != 0 {
|
|
|
|
zObj = speedtest1_once(tls,
|
|
|
|
|
|
|
|
ts+24432, 0)
|
|
|
|
if zObj == uintptr(0) {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
zSql = sqlite3.Xsqlite3_mprintf(tls, ts+24502, libc.VaList(bp+400, zObj))
|
|
|
|
speedtest1_exec(tls, zSql, 0)
|
|
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
|
|
sqlite3.Xsqlite3_free(tls, zObj)
|
|
|
|
}
|
|
|
|
for 1 != 0 {
|
|
|
|
zObj = speedtest1_once(tls,
|
|
|
|
|
|
|
|
ts+24523, 0)
|
|
|
|
if zObj == uintptr(0) {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
zSql = sqlite3.Xsqlite3_mprintf(tls, ts+24502, libc.VaList(bp+408, zObj))
|
|
|
|
speedtest1_exec(tls, zSql, 0)
|
|
|
|
sqlite3.Xsqlite3_free(tls, zSql)
|
|
|
|
sqlite3.Xsqlite3_free(tls, zObj)
|
|
|
|
}
|
|
|
|
speedtest1_end_test(tls)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
speedtest1_final(tls)
|
|
|
|
|
|
|
|
if showStats != 0 {
|
|
|
|
sqlite3.Xsqlite3_exec(tls, g.db, ts+24593, *(*uintptr)(unsafe.Pointer(&struct {
|
|
|
|
f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
|
|
|
|
}{xCompileOptions})), uintptr(0), uintptr(0))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Database connection statistics printed after both prepared statements
|
|
|
|
// have been finalized
|
|
|
|
if showStats != 0 {
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_LOOKASIDE_USED, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+24616, libc.VaList(bp+416, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */)), *(*int32)(unsafe.Pointer(bp + 572 /* iHi */))))
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_LOOKASIDE_HIT, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+24661, libc.VaList(bp+432, *(*int32)(unsafe.Pointer(bp + 572 /* iHi */))))
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+24697, libc.VaList(bp+440, *(*int32)(unsafe.Pointer(bp + 572 /* iHi */))))
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+24733, libc.VaList(bp+448, *(*int32)(unsafe.Pointer(bp + 572 /* iHi */))))
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_CACHE_USED, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+24769, libc.VaList(bp+456, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */))))
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_CACHE_HIT, bp+568, bp+572, 1)
|
|
|
|
libc.Xprintf(tls, ts+24811, libc.VaList(bp+464, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */))))
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_CACHE_MISS, bp+568, bp+572, 1)
|
|
|
|
libc.Xprintf(tls, ts+24847, libc.VaList(bp+472, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */))))
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_CACHE_WRITE, bp+568, bp+572, 1)
|
|
|
|
libc.Xprintf(tls, ts+24883, libc.VaList(bp+480, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */))))
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_SCHEMA_USED, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+24919, libc.VaList(bp+488, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */))))
|
|
|
|
sqlite3.Xsqlite3_db_status(tls, g.db, SQLITE_DBSTATUS_STMT_USED, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+24961, libc.VaList(bp+496, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */))))
|
|
|
|
}
|
|
|
|
|
|
|
|
sqlite3.Xsqlite3_close(tls, g.db)
|
|
|
|
|
|
|
|
// Global memory usage statistics printed after the database connection
|
|
|
|
// has closed. Memory usage should be zero at this point.
|
|
|
|
if showStats != 0 {
|
|
|
|
sqlite3.Xsqlite3_status(tls, SQLITE_STATUS_MEMORY_USED, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+25003, libc.VaList(bp+504, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */)), *(*int32)(unsafe.Pointer(bp + 572 /* iHi */))))
|
|
|
|
sqlite3.Xsqlite3_status(tls, SQLITE_STATUS_MALLOC_COUNT, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+25048, libc.VaList(bp+520, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */)), *(*int32)(unsafe.Pointer(bp + 572 /* iHi */))))
|
|
|
|
sqlite3.Xsqlite3_status(tls, SQLITE_STATUS_PAGECACHE_OVERFLOW, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+25093, libc.VaList(bp+536, *(*int32)(unsafe.Pointer(bp + 568 /* iCur */)), *(*int32)(unsafe.Pointer(bp + 572 /* iHi */))))
|
|
|
|
sqlite3.Xsqlite3_status(tls, SQLITE_STATUS_MALLOC_SIZE, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+25138, libc.VaList(bp+552, *(*int32)(unsafe.Pointer(bp + 572 /* iHi */))))
|
|
|
|
sqlite3.Xsqlite3_status(tls, SQLITE_STATUS_PAGECACHE_SIZE, bp+568, bp+572, 0)
|
|
|
|
libc.Xprintf(tls, ts+25180, libc.VaList(bp+560, *(*int32)(unsafe.Pointer(bp + 572 /* iHi */))))
|
|
|
|
}
|
|
|
|
|
|
|
|
if showStats != 0 {
|
|
|
|
displayLinuxIoStats(tls, libc.Xstdout)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Release memory
|
|
|
|
libc.Xfree(tls, pLook)
|
|
|
|
libc.Xfree(tls, pPCache)
|
|
|
|
libc.Xfree(tls, pHeap)
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
var ts1 = "Usage: %s [--options] DATABASE\nOptions:\n --autovacuum Enable AUTOVACUUM mode\n --cachesize N Set the cache size to N\n --checkpoint Run PRAGMA wal_checkpoint after each test case\n --exclusive Enable locking_mode=EXCLUSIVE\n --explain Like --sqlonly but with added EXPLAIN keywords\n --heap SZ MIN Memory allocator uses SZ bytes & min allocation MIN\n --incrvacuum Enable incremenatal vacuum mode\n --journal M Set the journal_mode to M\n --key KEY Set the encryption key to KEY\n --lookaside N SZ Configure lookaside for N slots of SZ bytes each\n --memdb Use an in-memory database\n --mmap SZ MMAP the first SZ bytes of the database file\n --multithread Set multithreaded mode\n --nomemstat Disable memory statistics\n --nosync Set PRAGMA synchronous=OFF\n --notnull Add NOT NULL constraints to table columns\n --output FILE Store SQL output in FILE\n --pagesize N Set the page size to N\n --pcache N SZ Configure N pages of pagecache each of size SZ bytes\n --primarykey Use PRIMARY KEY instead of UNIQUE where appropriate\n --repeat N Repeat each SELECT N times (default: 1)\n --reprepare Reprepare each statement upon every invocation\n --reserve N Reserve N bytes on each database page\n --serialized Set serialized threading mode\n --singlethread Set single-threaded mode - disables all mutexing\n --sqlonly No-op. Only show the SQL that would have been run.\n --shrink-memory Invoke sqlite3_db_release_memory() frequently.\n --size N Relative test size. Default=100\n --strict Use STRICT table where appropriate\n --stats Show statistics at the end\n --temp N N from 0 to 9. 0: no temp table. 9: all temp tables\n --testset T Run test-set T (main, cte, rtree, orm, fp, debug)\n --trace Turn on SQL tracing\n --threads N Use up to N threads for sorting\n --utf16be Set text encoding to UTF-16BE\n --utf16le Set text encoding to UTF-16LE\n --verify Run additional verification steps.\n --without-rowid Use WITHOUT ROWID where appropriate\n\x00 TEMP\x00\x00parameter too large - max 2147483648\x00KiB\x00MiB\x00GiB\x00KB\x00MB\x00GB\x00K\x00M\x00G\x00 billion\x00 million\x00 thousand\x00%s hundred\x00%s\x00zero\x00one\x00two\x00three\x00four\x00five\x00six\x00seven\x00eight\x00nine\x00ten\x00eleven\x00twelve\x00thirteen\x00fourteen\x00fifteen\x00sixteen\x00seventeen\x00eighteen\x00nineteen\x00twenty\x00thirty\x00forty\x00fifty\x00sixty\x00seventy\x00eighty\x00ninety\x00.......................................................................\x00/* %4d - %s%.*s */\n\x00%4d - %s%.*s \x00PRAGMA wal_checkpoint;\x00%4d.%03ds\n\x00 TOTAL%.*s %4d.%03ds\n\x00Verification Hash: %llu \x00\n\x00%02x\x00EXPLAIN \x00%.*s;\n\x00CREATE *\x00DROP *\x00ALTER *\x00SQL error: %s\n%s\n\x00exec error: %s\n\x00SQL error: %s\n\x00nil\x00-IFTBN\x000123456789abcdef\x00%d INSERTs into table with no index\x00BEGIN\x00CREATE%s TABLE z1(a INTEGER %s, b INTEGER %s, c TEXT %s);\x00INSERT INTO z1 VALUES(?1,?2,?3); -- %d times\x00COMMIT\x00%d ordered INSERTS with one index/PK\x00CREATE%s TABLE z2(a INTEGER %s %s, b INTEGER %s, c TEXT %s) %s\x00INSERT INTO z2 VALUES(?1,?2,?3); -- %d times\x00%d unordered INSERTS with one index/PK\x00CREATE%s TABLE t3(a INTEGER %s %s, b INTEGER %s, c TEXT %s) %s\x00INSERT INTO t3 VALUES(?1,?2,?3); -- %d times\x00%d SELECTS, numeric BETWEEN, unindexed\x00SELECT count(*), avg(b), sum(length(c)), group_concat(c) FROM z1\n WHERE b BETWEEN ?1 AND ?2; -- %d times\x00%d SELECTS, LIKE, unindexed\x00SELECT count(*), avg(b), sum(length(c)), group_concat(c) FROM z1\n WHERE c LIKE ?1; -- %d times\x00%d SELECTS w/ORDER BY, unindexed\x00SELECT a, b, c FROM z1 WHERE c LIKE ?1\n ORDER BY a; -- %d times\x00%d SELECTS w/ORDER BY and LIMIT, unindexed\x00SELECT a, b, c FROM z1 WHERE c LIKE ?1\n ORDER BY a
|
|
|
|
var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data
|