diff options
Diffstat (limited to 'vendor/modernc.org/sqlite/doc.go')
-rw-r--r-- | vendor/modernc.org/sqlite/doc.go | 226 |
1 files changed, 201 insertions, 25 deletions
diff --git a/vendor/modernc.org/sqlite/doc.go b/vendor/modernc.org/sqlite/doc.go index 121810ce..923a8db7 100644 --- a/vendor/modernc.org/sqlite/doc.go +++ b/vendor/modernc.org/sqlite/doc.go @@ -8,37 +8,105 @@ // SQLite is an in-process implementation of a self-contained, serverless, // zero-configuration, transactional SQL database engine. // -// Thanks +// # Thanks // // This project is sponsored by Schleibinger Geräte Teubert u. Greim GmbH by // allowing one of the maintainers to work on it also in office hours. // -// Supported platforms and architectures +// # Supported platforms and architectures // // These combinations of GOOS and GOARCH are currently supported // // OS Arch SQLite version // ------------------------------ -// darwin amd64 3.41.0 -// darwin arm64 3.41.0 -// freebsd amd64 3.41.0 -// freebsd arm64 3.41.0 -// linux 386 3.41.0 -// linux amd64 3.41.0 -// linux arm 3.41.0 -// linux arm64 3.41.0 -// linux ppc64le 3.41.0 -// linux riscv64 3.41.0 -// windows amd64 3.41.0 -// windows arm64 3.41.0 -// -// Builders -// -// Builder results available at +// darwin amd64 3.41.2 +// darwin arm64 3.41.2 +// freebsd amd64 3.41.2 +// freebsd arm64 3.41.2 +// linux 386 3.41.2 +// linux amd64 3.41.2 +// linux arm 3.41.2 +// linux arm64 3.41.2 +// linux ppc64le 3.41.2 +// linux riscv64 3.41.2 +// linux s390x 3.41.2 +// windows amd64 3.41.2 +// windows arm64 3.41.2 +// +// # Builders +// +// Builder results available at: // // https://modern-c.appspot.com/-/builder/?importpath=modernc.org%2fsqlite // -// Changelog +// # Speedtest1 +// +// Numbers for the pure Go version were produced by +// +// ~/src/modernc.org/sqlite/speedtest1$ go build && ./speedtest1 +// +// Numbers for the pure C version were produced by +// +// ~/src/modernc.org/sqlite/testdata/sqlite-src-3410200/test$ gcc speedtest1.c ../../sqlite-amalgamation-3410200/sqlite3.c -lpthread -ldl && ./a.out +// +// The results are from Go version 1.20.4 and GCC version 10.2.1 on a +// Linux/amd64 machine, CPU: AMD Ryzen 9 3900X 12-Core Processor × 24, 128GB +// RAM. Shown are the best of 3 runs. +// +// Go C +// +// -- Speedtest1 for SQLite 3.41.2 2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69 -- Speedtest1 for SQLite 3.41.2 2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69 +// 100 - 50000 INSERTs into table with no index...................... 0.071s 100 - 50000 INSERTs into table with no index...................... 0.077s +// 110 - 50000 ordered INSERTS with one index/PK..................... 0.114s 110 - 50000 ordered INSERTS with one index/PK..................... 0.082s +// 120 - 50000 unordered INSERTS with one index/PK................... 0.137s 120 - 50000 unordered INSERTS with one index/PK................... 0.099s +// 130 - 25 SELECTS, numeric BETWEEN, unindexed...................... 0.083s 130 - 25 SELECTS, numeric BETWEEN, unindexed...................... 0.091s +// 140 - 10 SELECTS, LIKE, unindexed................................. 0.210s 140 - 10 SELECTS, LIKE, unindexed................................. 0.120s +// 142 - 10 SELECTS w/ORDER BY, unindexed............................ 0.276s 142 - 10 SELECTS w/ORDER BY, unindexed............................ 0.182s +// 145 - 10 SELECTS w/ORDER BY and LIMIT, unindexed.................. 0.183s 145 - 10 SELECTS w/ORDER BY and LIMIT, unindexed.................. 0.099s +// 150 - CREATE INDEX five times..................................... 0.172s 150 - CREATE INDEX five times..................................... 0.127s +// 160 - 10000 SELECTS, numeric BETWEEN, indexed..................... 0.080s 160 - 10000 SELECTS, numeric BETWEEN, indexed..................... 0.078s +// 161 - 10000 SELECTS, numeric BETWEEN, PK.......................... 0.080s 161 - 10000 SELECTS, numeric BETWEEN, PK.......................... 0.078s +// 170 - 10000 SELECTS, text BETWEEN, indexed........................ 0.187s 170 - 10000 SELECTS, text BETWEEN, indexed........................ 0.169s +// 180 - 50000 INSERTS with three indexes............................ 0.196s 180 - 50000 INSERTS with three indexes............................ 0.154s +// 190 - DELETE and REFILL one table................................. 0.200s 190 - DELETE and REFILL one table................................. 0.155s +// 200 - VACUUM...................................................... 0.180s 200 - VACUUM...................................................... 0.142s +// 210 - ALTER TABLE ADD COLUMN, and query........................... 0.004s 210 - ALTER TABLE ADD COLUMN, and query........................... 0.005s +// 230 - 10000 UPDATES, numeric BETWEEN, indexed..................... 0.093s 230 - 10000 UPDATES, numeric BETWEEN, indexed..................... 0.080s +// 240 - 50000 UPDATES of individual rows............................ 0.153s 240 - 50000 UPDATES of individual rows............................ 0.137s +// 250 - One big UPDATE of the whole 50000-row table................. 0.024s 250 - One big UPDATE of the whole 50000-row table................. 0.019s +// 260 - Query added column after filling............................ 0.004s 260 - Query added column after filling............................ 0.005s +// 270 - 10000 DELETEs, numeric BETWEEN, indexed..................... 0.278s 270 - 10000 DELETEs, numeric BETWEEN, indexed..................... 0.263s +// 280 - 50000 DELETEs of individual rows............................ 0.188s 280 - 50000 DELETEs of individual rows............................ 0.180s +// 290 - Refill two 50000-row tables using REPLACE................... 0.411s 290 - Refill two 50000-row tables using REPLACE................... 0.359s +// 300 - Refill a 50000-row table using (b&1)==(a&1)................. 0.175s 300 - Refill a 50000-row table using (b&1)==(a&1)................. 0.151s +// 310 - 10000 four-ways joins....................................... 0.427s 310 - 10000 four-ways joins....................................... 0.365s +// 320 - subquery in result set...................................... 0.440s 320 - subquery in result set...................................... 0.521s +// 400 - 70000 REPLACE ops on an IPK................................. 0.125s 400 - 70000 REPLACE ops on an IPK................................. 0.106s +// 410 - 70000 SELECTS on an IPK..................................... 0.081s 410 - 70000 SELECTS on an IPK..................................... 0.078s +// 500 - 70000 REPLACE on TEXT PK.................................... 0.174s 500 - 70000 REPLACE on TEXT PK.................................... 0.116s +// 510 - 70000 SELECTS on a TEXT PK.................................. 0.153s 510 - 70000 SELECTS on a TEXT PK.................................. 0.117s +// 520 - 70000 SELECT DISTINCT....................................... 0.083s 520 - 70000 SELECT DISTINCT....................................... 0.067s +// 980 - PRAGMA integrity_check...................................... 0.436s 980 - PRAGMA integrity_check...................................... 0.377s +// 990 - ANALYZE..................................................... 0.107s 990 - ANALYZE..................................................... 0.038s +// TOTAL....................................................... 5.525s TOTAL....................................................... 4.637s +// +// This particular test executes 16.1% faster in the C version. +// +// # Changelog +// +// 2023-08-03 v1.25.0: enable SQLITE_ENABLE_DBSTAT_VTAB. +// +// 2023-07-11 v1.24.0: +// +// Add (*conn).{Serialize,Deserialize,NewBackup,NewRestore} methods, add Backup type. +// +// 2023-06-01 v1.23.0: +// +// Allow registering aggregate functions. +// +// 2023-04-22 v1.22.0: +// +// Support linux/s390x. // // 2023-02-23 v1.21.0: // @@ -65,7 +133,7 @@ // // Support scalar application defined functions written in Go. // -// https://www.sqlite.org/appfunc.html +// https://www.sqlite.org/appfunc.html // // 2022-03-13 v1.15.0: // @@ -80,8 +148,6 @@ // // Support freebsd/amd64. // -// Changelog -// // 2021-06-23 v1.11.0: // // Upgrade to use sqlite 3.36.0, release notes at https://www.sqlite.org/releaselog/3_36_0.html. @@ -169,7 +235,7 @@ // // 2017-06-05 Linux/Intel no more uses the VM (cznic/virtual). // -// Connecting to a database +// # Connecting to a database // // To access a Sqlite database do something like // @@ -186,7 +252,7 @@ // // ... // -// Debug and development versions +// # Debug and development versions // // A comma separated list of options can be passed to `go generate` via the // environment variable GO_GENERATE. Some useful options include for example: @@ -201,7 +267,117 @@ // // Note: To run `go generate` you need to have modernc.org/ccgo/v3 installed. // -// Sqlite documentation +// # Hacking +// +// This is an example of how to use the debug logs in modernc.org/libc when hunting a bug. +// +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ git status +// On branch master +// Your branch is up to date with 'origin/master'. +// +// nothing to commit, working tree clean +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ git log -1 +// commit df33b8d15107f3cc777799c0fe105f74ef499e62 (HEAD -> master, tag: v1.21.1, origin/master, origin/HEAD, wips, ok) +// Author: Jan Mercl <0xjnml@gmail.com> +// Date: Mon Mar 27 16:18:28 2023 +0200 +// +// upgrade to SQLite 3.41.2 +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ rm -f /tmp/libc.log ; go test -v -tags=libc.dmesg -run TestScalar ; ls -l /tmp/libc.log +// test binary compiled for linux/amd64 +// === RUN TestScalar +// --- PASS: TestScalar (0.09s) +// PASS +// ok modernc.org/sqlite 0.128s +// -rw-r--r-- 1 jnml jnml 76 Apr 6 11:22 /tmp/libc.log +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ cat /tmp/libc.log +// [10723 sqlite.test] 2023-04-06 11:22:48.288066057 +0200 CEST m=+0.000707150 +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ +// +// The /tmp/libc.log file is created as requested. No useful messages there because none are enabled in libc. Let's try to enable Xwrite as an example. +// +// 0:jnml@e5-1650:~/src/modernc.org/libc$ git status +// On branch master +// Your branch is up to date with 'origin/master'. +// +// Changes not staged for commit: +// (use "git add <file>..." to update what will be committed) +// (use "git restore <file>..." to discard changes in working directory) +// modified: libc_linux.go +// +// no changes added to commit (use "git add" and/or "git commit -a") +// 0:jnml@e5-1650:~/src/modernc.org/libc$ git log -1 +// commit 1e22c18cf2de8aa86d5b19b165f354f99c70479c (HEAD -> master, tag: v1.22.3, origin/master, origin/HEAD) +// Author: Jan Mercl <0xjnml@gmail.com> +// Date: Wed Feb 22 20:27:45 2023 +0100 +// +// support sqlite 3.41 on linux targets +// 0:jnml@e5-1650:~/src/modernc.org/libc$ git diff +// diff --git a/libc_linux.go b/libc_linux.go +// index 1c2f482..ac1f08d 100644 +// --- a/libc_linux.go +// +++ b/libc_linux.go +// @@ -332,19 +332,19 @@ func Xwrite(t *TLS, fd int32, buf uintptr, count types.Size_t) types.Ssize_t { +// var n uintptr +// switch n, _, err = unix.Syscall(unix.SYS_WRITE, uintptr(fd), buf, uintptr(count)); err { +// case 0: +// - // if dmesgs { +// - // // dmesg("%v: %d %#x: %#x\n%s", origin(1), fd, count, n, hex.Dump(GoBytes(buf, int(n)))) +// - // dmesg("%v: %d %#x: %#x", origin(1), fd, count, n) +// - // } +// + if dmesgs { +// + // dmesg("%v: %d %#x: %#x\n%s", origin(1), fd, count, n, hex.Dump(GoBytes(buf, int(n)))) +// + dmesg("%v: %d %#x: %#x", origin(1), fd, count, n) +// + } +// return types.Ssize_t(n) +// case errno.EAGAIN: +// // nop +// } +// } +// +// - // if dmesgs { +// - // dmesg("%v: fd %v, count %#x: %v", origin(1), fd, count, err) +// - // } +// + if dmesgs { +// + dmesg("%v: fd %v, count %#x: %v", origin(1), fd, count, err) +// + } +// t.setErrno(err) +// return -1 +// } +// 0:jnml@e5-1650:~/src/modernc.org/libc$ +// +// We need to tell the Go build system to use our local, patched/debug libc: +// +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ go work use $(go env GOPATH)/src/modernc.org/libc +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ go work use . +// +// And run the test again: +// +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ rm -f /tmp/libc.log ; go test -v -tags=libc.dmesg -run TestScalar ; ls -l /tmp/libc.log +// test binary compiled for linux/amd64 +// === RUN TestScalar +// --- PASS: TestScalar (0.26s) +// PASS +// ok modernc.org/sqlite 0.285s +// -rw-r--r-- 1 jnml jnml 918 Apr 6 11:29 /tmp/libc.log +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ cat /tmp/libc.log +// [11910 sqlite.test] 2023-04-06 11:29:13.143589542 +0200 CEST m=+0.000689270 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0x200: 0x200 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0xc: 0xc +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 7 0x1000: 0x1000 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 7 0x1000: 0x1000 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0x200: 0x200 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0x4: 0x4 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0x1000: 0x1000 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0x4: 0x4 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0x4: 0x4 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0x1000: 0x1000 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0x4: 0x4 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 8 0xc: 0xc +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 7 0x1000: 0x1000 +// [11910 sqlite.test] libc_linux.go:337:Xwrite: 7 0x1000: 0x1000 +// 0:jnml@e5-1650:~/src/modernc.org/sqlite$ +// +// # Sqlite documentation // // See https://sqlite.org/docs.html package sqlite // import "modernc.org/sqlite" |