]> git.ipfire.org Git - thirdparty/sqlite.git/log
thirdparty/sqlite.git
3 years agoGet docs caught up with the .shxload change.
larrybr [Sun, 17 Apr 2022 21:03:44 +0000 (21:03 +0000)] 
Get docs caught up with the .shxload change.

FossilOrigin-Name: e21964480f68152d1c1607f75895354241ec3ea7247f1ee3c2a20c454beec919

3 years agoMove shell extension load functionality into its own .shxload command for usage and...
larrybr [Sun, 17 Apr 2022 19:22:42 +0000 (19:22 +0000)] 
Move shell extension load functionality into its own .shxload command for usage and code simplicity.

FossilOrigin-Name: e2c8c88b4b4f2c23c42fb1fdb86c0ade2992ce2e5d7f23b06af0e9ea3eb6a4f9

3 years agoFor sqlite3x, rudimentary testing in place as make target shellxtest . More to come.
larrybr [Sun, 17 Apr 2022 00:48:49 +0000 (00:48 +0000)] 
For sqlite3x, rudimentary testing in place as make target shellxtest . More to come.

FossilOrigin-Name: b73928befb013622a369bf8f9904b5aeca626a5598884b4030229a33f684960f

3 years agoGet sqlite3x and extensions testing from Makefile setup, and some of wapptest changes...
larrybr [Fri, 15 Apr 2022 21:21:01 +0000 (21:21 +0000)] 
Get sqlite3x and extensions testing from Makefile setup, and some of wapptest changes done to run same. (a WIP)

FossilOrigin-Name: d238fcf4beb0b121e4754e288df9906cb61d38a827f1fe38cf4aaa784520fc08

3 years agoExtension interface cleanup, and rename MetaCommand to DotCommand (to better match...
larrybr [Wed, 13 Apr 2022 03:48:28 +0000 (03:48 +0000)] 
Extension interface cleanup, and rename MetaCommand to DotCommand (to better match docs)

FossilOrigin-Name: f78d7b8b89b667daba486fdb67de105bd8524203cc44bb02c3cb94acd85560e9

3 years agoFurther clarification of Tcl extension intro.
larrybr [Tue, 12 Apr 2022 10:06:21 +0000 (10:06 +0000)] 
Further clarification of Tcl extension intro.

FossilOrigin-Name: 29ab6e90372d216a0cb9d86861c804d356cd2f11ad835443da08651bec0da398

3 years agoTcl extension doc, minor clarifications and spelling improvements
larrybr [Mon, 11 Apr 2022 23:08:36 +0000 (23:08 +0000)] 
Tcl extension doc, minor clarifications and spelling improvements

FossilOrigin-Name: 6ccdd9b7519bf8945c5187742c8ea9c335cb6a89b87f6b005bf2ba9dc6890b2f

3 years agoFix CLI mishandling of SQL "execute" tokens, go and /
larrybr [Mon, 11 Apr 2022 23:01:18 +0000 (23:01 +0000)] 
Fix CLI mishandling of SQL "execute" tokens, go and /

FossilOrigin-Name: 1a117b0388d61f72d1f5947c9092ab5b6fffda32c438baadaef3187dc52bd7ca

3 years agoFix mis-renditions of help text.
larrybr [Mon, 11 Apr 2022 18:42:15 +0000 (18:42 +0000)] 
Fix mis-renditions of help text.

FossilOrigin-Name: 1a7a6b6f48327fffeff1173a8e437c9989f761ce236c99478f088087a386b155

3 years agoAdd embedded doc, Intro to Tcl Extension
larrybr [Mon, 11 Apr 2022 08:07:16 +0000 (08:07 +0000)] 
Add embedded doc, Intro to Tcl Extension

FossilOrigin-Name: 33591833326e98882e0fa6225a7a55a7e915063a36bf24bb3c17c35e693d972e

3 years agoCreate parallel C and C++ test/demo shell extensions, with header tweaks to make...
larrybr [Sun, 10 Apr 2022 09:17:29 +0000 (09:17 +0000)] 
Create parallel C and C++ test/demo shell extensions, with header tweaks to make that work. Fix a bug exposed when multiple shell extensions were loaded.

FossilOrigin-Name: 2596e7c439b6c4c89921079a78ba6174e99f766b30fab8763be20c1b631e49ec

3 years agoSync w/trunk, for .import fix.
larrybr [Sat, 9 Apr 2022 19:39:58 +0000 (19:39 +0000)] 
Sync w/trunk, for .import fix.

FossilOrigin-Name: 861ab023be283782131df5ccd9eff50cf2f06f48f1ea7defd3f08177a3df5889

3 years agoFix .import bug reported at https://sqlite.org/forum/forumpost/14db09d7e765b819 ...
larrybr [Sat, 9 Apr 2022 18:51:49 +0000 (18:51 +0000)] 
Fix .import bug reported at https://sqlite.org/forum/forumpost/14db09d7e765b819 . zAutoColumn made to deliver characters, not bytes.

FossilOrigin-Name: 21e96600d90c1cda84777abe22a11058eba46c9faefeb05f8c31bc0e7fa84b19

3 years agoGet tclshext made with Tk, optionally, and make unknown work as in tclsh.
larrybr [Sat, 9 Apr 2022 14:57:17 +0000 (14:57 +0000)] 
Get tclshext made with Tk, optionally, and make unknown work as in tclsh.

FossilOrigin-Name: 43eb311e517b79cde9e17c1a80baed8d13d9d943dd9ee44b31831159df8715fc

3 years agoFix TCL extension build issue.
larrybr [Sat, 9 Apr 2022 03:12:40 +0000 (03:12 +0000)] 
Fix TCL extension build issue.

FossilOrigin-Name: 0b3bb0e793f8c7fd79042322b7748a75d17a3c3d0752cfb0f2c544af49b1d6d6

3 years agoThe sqlite3WhereMalloc() routine allocates memory that is automatically
drh [Sat, 9 Apr 2022 03:06:01 +0000 (03:06 +0000)] 
The sqlite3WhereMalloc() routine allocates memory that is automatically
deleted when the corresponding WhereInfo object is destroyed.

FossilOrigin-Name: f237e1d8cc41b937f34288daebfacf5f7b0990a807a805e0cb6b45bc730192d6

3 years agoFor shell extensions, generate a single-file header. For TCL extension, provide Makef...
larrybr [Sat, 9 Apr 2022 02:31:50 +0000 (02:31 +0000)] 
For shell extensions, generate a single-file header. For TCL extension, provide Makefile target, and make Tk opt-in rather than default. (a WIP)

FossilOrigin-Name: 2cd49df502a7cd250c453cbbd6a2651e588d69dd755bbdf5a55b58715e548760

3 years agoEnhance the sqlite_dbpage fix at [/info/642a0b4752743216|check-in 642a0b4752743]
drh [Fri, 8 Apr 2022 17:01:29 +0000 (17:01 +0000)] 
Enhance the sqlite_dbpage fix at [/info/642a0b4752743216|check-in 642a0b4752743]
from about a month ago such that it still takes a transaction on all attached
databases, but it only starts a read transaction for read-only operations,
rather than starting a write transaction for everything.

FossilOrigin-Name: 8efd61e8518594e3e9c84681fc35796a78fe8885a97ad4dd19f1573ee8065b18

3 years agoImproved explanation and commentary on the sqlite3JoinType() routine. One
drh [Fri, 8 Apr 2022 15:11:10 +0000 (15:11 +0000)] 
Improved explanation and commentary on the sqlite3JoinType() routine.  One
of the error messages changes slightly, but besides that everything works
the same.

FossilOrigin-Name: 48f2e5a1fbaa8ceb32e08066766be74233b0c67ab430bbf7adfdff42cdb7b8ec

3 years agoSync w/trunk, including all CLI updates
larrybr [Fri, 8 Apr 2022 04:24:34 +0000 (04:24 +0000)] 
Sync w/trunk, including all CLI updates

FossilOrigin-Name: ad8b48d6326b253e5d62dd262130820e4e6e56896abf17ddc6f1f7802204503a

3 years agoFor shell, silence some clang warnings, and cure one bona-fide gripe.
larrybr [Fri, 8 Apr 2022 03:40:05 +0000 (03:40 +0000)] 
For shell, silence some clang warnings, and cure one bona-fide gripe.

FossilOrigin-Name: 52be86685006ac66cce79a7d8026d671030b308823c6ba427b52377591ba7064

3 years agoRevamp and simplify shell help extension interface, and provide for scripted shell...
larrybr [Fri, 8 Apr 2022 03:20:39 +0000 (03:20 +0000)] 
Revamp and simplify shell help extension interface, and provide for scripted shell extensions to be seen in .help output.

FossilOrigin-Name: aa785473d948b9f05f32c2107fb302374573a2906d867b4599a7063943277b0f

3 years agoFix two unreachable branches introduced by the recent
drh [Thu, 7 Apr 2022 20:45:38 +0000 (20:45 +0000)] 
Fix two unreachable branches introduced by the recent
sqlite3TriggersExist() optimization.

FossilOrigin-Name: 1b5475d212cf9de0bff69eee8c607b4fcd8e04bf4df72171429e7609c4153951

3 years agoEnhance the EXPLAIN output formatting in the CLI so that the subroutine that
drh [Thu, 7 Apr 2022 19:06:31 +0000 (19:06 +0000)] 
Enhance the EXPLAIN output formatting in the CLI so that the subroutine that
implements the loop body for the multi-index OR optimization is indented.

FossilOrigin-Name: c2965fea9df7076b235d3eadaf84f0a36242476d0329030b0e57557b66e2540c

3 years agoThe ".testctrl optimizations 0x400000" command disables the generation of
drh [Thu, 7 Apr 2022 18:17:56 +0000 (18:17 +0000)] 
The ".testctrl optimizations 0x400000" command disables the generation of
OP_ReleaseReg opcodes.  OP_ReleaseReg opcodes are usually only generated for
SQLITE_DEBUG builds and are used to verify that registers are descoped
propertly.  But they can get in the way of code understanding when studying
bytecode dumps.  So this new optimization setting is provided to
temporarily turn OP_ReleaseReg opcodes off.

FossilOrigin-Name: fa5276725f246cef9d58b27c1e617ee3f873f7a9b88284a4e8fc453ebda338bc

3 years agoFix the parsing of C-style comments in Lemon, as reported by
drh [Thu, 7 Apr 2022 14:13:32 +0000 (14:13 +0000)] 
Fix the parsing of C-style comments in Lemon, as reported by
[forum:/forumpost/b6edc69548|forum post b6edc69548].  This has no affect
on SQLite itself.

FossilOrigin-Name: 201569e09b000919ccb463bd581fb2ecd5320e7f584fdb1bc2aaba111061d5c3

3 years agoOptimization to sqlite3TriggersExist() saves over 700K CPU cycles.
drh [Thu, 7 Apr 2022 14:03:07 +0000 (14:03 +0000)] 
Optimization to sqlite3TriggersExist() saves over 700K CPU cycles.

FossilOrigin-Name: 5043a3507e0781878e0e1bea5095a33273958820baead4af8fc2929e9d7c07ee

3 years agoAvoid compiler warnings about the new sqlite3Show() debugging routines
drh [Thu, 7 Apr 2022 13:48:34 +0000 (13:48 +0000)] 
Avoid compiler warnings about the new sqlite3Show() debugging routines
begin "defined but not used".

FossilOrigin-Name: 47ddc26974fbad8233c953d435e79d4f5dd5e09fbd684ea5f4ad32f4cae6cae6

3 years agoOmit an unnecessary initialization in tokenExpr().
drh [Thu, 7 Apr 2022 12:10:00 +0000 (12:10 +0000)] 
Omit an unnecessary initialization in tokenExpr().

FossilOrigin-Name: 8f6ae686019c61a03fe70eb78d2b529b1cf126215b45513a97cfdf7086f82f54

3 years agoFix harmless compiler warnings.
drh [Thu, 7 Apr 2022 10:11:35 +0000 (10:11 +0000)] 
Fix harmless compiler warnings.

FossilOrigin-Name: 61095b5bcb5c30d29f03efa5b4809e3a0b780ed57e35227c292aab9dd1cfe3f6

3 years agoImproved technique for parsing the ON and USING clauses of a join is faster
drh [Thu, 7 Apr 2022 01:11:13 +0000 (01:11 +0000)] 
Improved technique for parsing the ON and USING clauses of a join is faster
and uses less memory.

FossilOrigin-Name: 158156a3e3d50042cafc75dea3aaaa68b1f2efb9c3d178518ea6e68e32e0d21c

3 years agoFaster parsing of the FROM clause in joins for the common case where there
drh [Wed, 6 Apr 2022 19:46:20 +0000 (19:46 +0000)] 
Faster parsing of the FROM clause in joins for the common case where there
is no INDEXED BY clause.

FossilOrigin-Name: 848b7a0ea99ddc52091b78313f018c07d00a0e28aa6da8c1cae709c1d03468fe

3 years agoImprovements to the display of AST for DML statements.
drh [Wed, 6 Apr 2022 18:30:17 +0000 (18:30 +0000)] 
Improvements to the display of AST for DML statements.

FossilOrigin-Name: 84c239a071cfaf8af107646f01ef269e2915fd2384e95927d484f2e408ba6bbf

3 years agoGet shell.c past clang preprocessor, silently.
larrybr [Wed, 6 Apr 2022 17:07:42 +0000 (17:07 +0000)] 
Get shell.c past clang preprocessor, silently.

FossilOrigin-Name: 588c3512286491e2128103bcef0d6b3bdd0a0d0dcdc6bdc3e3068db552d70ed4

3 years agoAdd sqlite3x target to other makefiles.
larrybr [Wed, 6 Apr 2022 16:47:56 +0000 (16:47 +0000)] 
Add sqlite3x target to other makefiles.

FossilOrigin-Name: efc9f08dcb1d64b92dd08e8776abc805d911fbb905758f8af6977f31a6633bb4

3 years agoAdd sqlite3x build target. Cure CLI build warning. Tweak CLI test.
larrybr [Wed, 6 Apr 2022 16:19:16 +0000 (16:19 +0000)] 
Add sqlite3x build target. Cure CLI build warning. Tweak CLI test.

FossilOrigin-Name: 45736d46cdca75d0f6eb1a0b9f2702b86851bd1da85f34c0687a3aaadf628975

3 years agoAttempt to show triggers in the TreeView output from DELETE, INSERT, and
drh [Wed, 6 Apr 2022 15:41:53 +0000 (15:41 +0000)] 
Attempt to show triggers in the TreeView output from DELETE, INSERT, and
UPDATE statements.

FossilOrigin-Name: b0939d6f4d94b45dce53ace6295508a67d574cc72bd6977623bf77065b3c4e64

3 years agoCorrections and updates to the header comment describing the
drh [Wed, 6 Apr 2022 12:54:41 +0000 (12:54 +0000)] 
Corrections and updates to the header comment describing the
TriggerStep object.  No changes to code.

FossilOrigin-Name: abb34c0830a49d4f4e277ddd17e710529e87cba7061f3546079dbba2f82b020e

3 years agoAdd the sqlite3Show() family of debugging interfaces under SQLITE_DEBUG.
drh [Wed, 6 Apr 2022 12:25:04 +0000 (12:25 +0000)] 
Add the sqlite3Show() family of debugging interfaces under SQLITE_DEBUG.
No changes to deliverable builds.  Rename SQLITE_ENABLE_SELECTTRACE to
SQLITE_ENABLE_TREETRACE in ctime.c.

FossilOrigin-Name: bc33168cf1f48caf848c2dc5c3ae15e4efff8c0378f944eb5398a245139a2b35

3 years agoRename debugging defines and variables from SELECTTRACE to TREETRACE (and
drh [Wed, 6 Apr 2022 11:08:38 +0000 (11:08 +0000)] 
Rename debugging defines and variables from SELECTTRACE to TREETRACE (and
similar) since the functionality has how expanded to include data structures
beyond SELECT statements.  Should not affect deliverable builds.

FossilOrigin-Name: 393fa32e188a017f431372b54037cb31e885030542f00d0bfd59da9d9db5c014

3 years agoAdd additional tree display routines for DELETE and UPDATE. No changes
drh [Wed, 6 Apr 2022 10:37:44 +0000 (10:37 +0000)] 
Add additional tree display routines for DELETE and UPDATE.  No changes
to deliverable code.

FossilOrigin-Name: fbd288ff3d4ea47cd324b5952e7754a465901844f2d950f0860d4488d5b6eb9f

3 years agoAdd new diagnostic "sqlite3TreeView" routines for IdList, Upsert, and for
drh [Wed, 6 Apr 2022 00:29:21 +0000 (00:29 +0000)] 
Add new diagnostic "sqlite3TreeView" routines for IdList, Upsert, and for
INSERT statements.  This is all debugging code.  There are no changes to
release builds.

FossilOrigin-Name: f3084122039bcb30c8617f5f432009a49be8b488235850a1f10ef862c91560b2

3 years agoSmall performance and size improvement to OP_Found.
drh [Mon, 4 Apr 2022 20:20:22 +0000 (20:20 +0000)] 
Small performance and size improvement to OP_Found.

FossilOrigin-Name: 81587a18b7c0516628453000172a0c58e74ee173c15f655d035799d84d4e2d81

3 years agoTag an always-taken branch using ALWAYS().
drh [Mon, 4 Apr 2022 19:58:55 +0000 (19:58 +0000)] 
Tag an always-taken branch using ALWAYS().

FossilOrigin-Name: ad8bc3d7443ff57ce5a8756428e717ac42ec0295191a9b4d7ae44846d8fa03a2

3 years agoOptimizations to the OP_Found opcode save about 600K cycles in speedtest1.
drh [Mon, 4 Apr 2022 19:43:57 +0000 (19:43 +0000)] 
Optimizations to the OP_Found opcode save about 600K cycles in speedtest1.

FossilOrigin-Name: 5c3357ad62843fe982b9c2d31dbf02018f2948ceab2c85dac917cd9ce1e97dd6

3 years agoUse unpacked keys for OP_Found in foreign key processing.
drh [Mon, 4 Apr 2022 18:17:59 +0000 (18:17 +0000)] 
Use unpacked keys for OP_Found in foreign key processing.

FossilOrigin-Name: 328dc76657eb5317f0201859d2b3abe6918103b894f7beaed0aca3058a9f2b64

3 years agoFor shell extension writers, reduce boilerplate (mimicing SQLITE_EXTENSION_INIT#...
larrybr [Mon, 4 Apr 2022 17:27:59 +0000 (17:27 +0000)] 
For shell extension writers, reduce boilerplate (mimicing SQLITE_EXTENSION_INIT# macros)

FossilOrigin-Name: 761208132d99ad602b80c3fe2f0780020c54a3a4ca5be3d2b69b2e3c25e83bc1

3 years agoWhen constructing the JSON Path for the "fullpath" column of the
drh [Mon, 4 Apr 2022 15:15:45 +0000 (15:15 +0000)] 
When constructing the JSON Path for the "fullpath" column of the
json_tree() and json_each() table-valued functions, be sure to quote
object labels where necessary.

FossilOrigin-Name: 0fbbe7881cadf0b3c211653c7a0797e0a90c7c24da78ecc8a27140c05f89f2ed

3 years agoFix the JSON Path parser so that it will accept zero-length object labels.
drh [Mon, 4 Apr 2022 14:24:14 +0000 (14:24 +0000)] 
Fix the JSON Path parser so that it will accept zero-length object labels.
[forum/forumpost/c082aeab43|Forum thread c082aeab43].

FossilOrigin-Name: 84fe95d2a5b4d232d657e3b8110027a698a9bcd597f205cc535cfa97bc299f21

3 years agoPerformance optimization and stronger assert()s in the comparison opcodes.
drh [Mon, 4 Apr 2022 11:38:49 +0000 (11:38 +0000)] 
Performance optimization and stronger assert()s in the comparison opcodes.

FossilOrigin-Name: e0305e640b9078c7eed9ab0bcc14f4515b54e7cd9ade3306bc2d1660f05b2725

3 years agoFor TCL extension: Adjust provided "gui" command, and document it.
larrybr [Mon, 4 Apr 2022 06:33:43 +0000 (06:33 +0000)] 
For TCL extension: Adjust provided "gui" command, and document it.
For shell: Separate shell variables from binding parameters, mainly so they live longer, in the shell DB.
Add .vars dot command to reflect this separation, and specialized for shell variables.
Much code shuffling to share code between .parameters and .vars commands.

FossilOrigin-Name: fa492ff57ca9d89ac623734e8ed0411e29ed6a926c2f534f2a91e41fad994b46

3 years agoOnly invoke sqlite3VdbeClearObject() from a single location, so that the
drh [Mon, 4 Apr 2022 01:12:11 +0000 (01:12 +0000)] 
Only invoke sqlite3VdbeClearObject() from a single location, so that the
compiler is more likely to in-line the code.  Performance increase and
size reduction.

FossilOrigin-Name: c6947a96e61f71aa61ca3d70d9e2612d784ab04d60fa88852b03cfce86b1bf2b

3 years agoPerformance optimization in the sqlite3VdbeHalt() routine.
drh [Sun, 3 Apr 2022 22:35:13 +0000 (22:35 +0000)] 
Performance optimization in the sqlite3VdbeHalt() routine.

FossilOrigin-Name: 9564d72a0820dbcb38f905fcd42ed4c858ea8fb5f648b189ceb65380a14a785b

3 years agoPerformance optimization and size reduction in the OP_Halt opcode.
drh [Sun, 3 Apr 2022 20:39:48 +0000 (20:39 +0000)] 
Performance optimization and size reduction in the OP_Halt opcode.

FossilOrigin-Name: 21948e6e1ccd2ce128742415d21759604ecb8902226ec4707dbd75585450f208

3 years agoOmit the Vdbe.runOnlyOnce flag (simplifying the prepared statement
drh [Sun, 3 Apr 2022 19:13:40 +0000 (19:13 +0000)] 
Omit the Vdbe.runOnlyOnce flag (simplifying the prepared statement
implementation) and accomplish the same result by adding an "OP_Expire 1 1"
opcode to prepared statements that would normally have runOnlyOnce set.

FossilOrigin-Name: 6e20e1c46d17ac6aba21e02b57649af51cfa415d83d0c001b30677d2fd1f1dc1

3 years agoPerformance optimization and slight size reduction in the OP_Transaction
drh [Sun, 3 Apr 2022 10:42:06 +0000 (10:42 +0000)] 
Performance optimization and slight size reduction in the OP_Transaction
opcode.

FossilOrigin-Name: 7bee8c195f3fc27aaab13e493ad446a4f19201de3ac064ed6d8a3cbda7c69ee1

3 years agoExpand the getVarint32() macro in a few places, as the C-compiler seems to
drh [Sat, 2 Apr 2022 22:47:47 +0000 (22:47 +0000)] 
Expand the getVarint32() macro in a few places, as the C-compiler seems to
be able to optimize better when that macro is expanded manually.

FossilOrigin-Name: cd4fe34b98bf5ce26f3596c717edb73932f3b46ad6e9b4934d06b7b3c176a0d6

3 years agoFix harmless compiler warnings.
drh [Sat, 2 Apr 2022 20:08:48 +0000 (20:08 +0000)] 
Fix harmless compiler warnings.

FossilOrigin-Name: 8a3a3486358d076c34e515ac92663a04f0c7ff10f405094cb5b6ada0d5f05cdc

3 years agoEnsure that a zero-blob does not cause in invocation of memcpy() with a
drh [Sat, 2 Apr 2022 19:21:58 +0000 (19:21 +0000)] 
Ensure that a zero-blob does not cause in invocation of memcpy() with a
zero length and a NULL source pointer.

FossilOrigin-Name: 35441eb5e1447e01f2031837a4ede705bce34f87be27912278cc730abce6cf05

3 years agoMinor loop optimization in OP_MakeRecord.
drh [Sat, 2 Apr 2022 15:19:02 +0000 (15:19 +0000)] 
Minor loop optimization in OP_MakeRecord.

FossilOrigin-Name: 4350983b37879d3280432d90fef04f5cc4be1b3110b5435123d897e31b34db8a

3 years agoIn-line the sqlite3VdbeSerialPut() routine into the OP_MakeRecord opcode.
drh [Sat, 2 Apr 2022 14:30:58 +0000 (14:30 +0000)] 
In-line the sqlite3VdbeSerialPut() routine into the OP_MakeRecord opcode.
This allows some duplicate comparisons to be omitted, resulting in a size
reduction and performance increase.

FossilOrigin-Name: 6f4d6f212a3558c27be6e9dcf71cec43c424d445e5889c6e91dde84a19c5a2c1

3 years agoThe putVarint32() macro does not optimize well. So expand it into in-line
drh [Fri, 1 Apr 2022 21:01:37 +0000 (21:01 +0000)] 
The putVarint32() macro does not optimize well.  So expand it into in-line
code in places were performance is an issue.

FossilOrigin-Name: 390c239e53cf936a97b268dce8171f0b17050542ae64735ca8ef375fec2c9544

3 years agoLoop optimization in the OP_MakeRecord opcode.
drh [Fri, 1 Apr 2022 20:39:40 +0000 (20:39 +0000)] 
Loop optimization in the OP_MakeRecord opcode.

FossilOrigin-Name: 47a61fbd63928021098fbe492283f1afda7c293b3b2706c001192ae4ff1b2cbe

3 years agoIt is not necessary to de-ephermeralize the output registers in the
drh [Fri, 1 Apr 2022 20:19:36 +0000 (20:19 +0000)] 
It is not necessary to de-ephermeralize the output registers in the
OP_ResultRow opcode.  Omit that step for a size reduction and performance
increase.

FossilOrigin-Name: 8a07745aed1d0a4eead55d43f1923597b12371f307ecf5bc19c5a1db9a107a50

3 years agoThere is no need for sqlite3_step() to check for an OOM condition prior
drh [Fri, 1 Apr 2022 19:13:39 +0000 (19:13 +0000)] 
There is no need for sqlite3_step() to check for an OOM condition prior
to starting up.

FossilOrigin-Name: 44be7f46ba89289683ed0e123169ca9adb1018de03071d66de480c910a23d074

3 years agoOmit the Vdbe.doingRerun field for a slight size reduction and performance gain.
drh [Fri, 1 Apr 2022 19:04:13 +0000 (19:04 +0000)] 
Omit the Vdbe.doingRerun field for a slight size reduction and performance gain.

FossilOrigin-Name: e93297a9d775688e6274c54ba75b19fc1fe8b29b73b9b5e7f94f3f2ca37f045f

3 years agoNew macro ROUND8P() which works like ROUND8() but assumes that the input is
drh [Fri, 1 Apr 2022 18:45:11 +0000 (18:45 +0000)] 
New macro ROUND8P() which works like ROUND8() but assumes that the input is
already a multiple of the size of a pointer.  It becomes a no-op for
64-bit machines, giving a small size reduction and speed boost.

FossilOrigin-Name: d126f304cde66ebfe21a4967c22dcba0bac27cbce56318b14bd50051e49c978c

3 years agoProvide and use a version of sqlite3VdbeFreeCursor() that guarantees the
drh [Fri, 1 Apr 2022 18:19:04 +0000 (18:19 +0000)] 
Provide and use a version of sqlite3VdbeFreeCursor() that guarantees the
cursor pointer is not NULL.  This saves a few bytes of code space and a
few CPU cycles.

FossilOrigin-Name: cb5e6f8e265c91221227e5f15b95798c688773262407dd138d414103184702f6

3 years agoRemove an unnecessary branch from sqlite3VdbeReset().
drh [Fri, 1 Apr 2022 17:23:17 +0000 (17:23 +0000)] 
Remove an unnecessary branch from sqlite3VdbeReset().

FossilOrigin-Name: a7d79560a0efd6221ba59ce84bcb4fa94024a901ac4a45e192ddecc6e1b5c78c

3 years agoRefactor the Vdbe.iVdbeMagic field into Vdbe.eVdbeState. Split the RUNNING
drh [Fri, 1 Apr 2022 17:01:57 +0000 (17:01 +0000)] 
Refactor the Vdbe.iVdbeMagic field into Vdbe.eVdbeState.  Split the RUNNING
state into separate RUNNING and READY.  This gives a size reduction and
performance increase.

FossilOrigin-Name: 5a50a42fde9477868fad31099f5fe976437825fac44f8b3a4cf6c739c7667bbb

3 years agoAvoid a harmless uninitialized variable warning in PRAGMA incremental_vacuum.
drh [Fri, 1 Apr 2022 16:22:41 +0000 (16:22 +0000)] 
Avoid a harmless uninitialized variable warning in PRAGMA incremental_vacuum.

FossilOrigin-Name: 6d976f90dfe4886c3f4c062151af5c5ca7454d34b71172401b8c67acd2d663a0

3 years agoHave the sqlite3_context object carry the encoding for the prepared statement
drh [Fri, 1 Apr 2022 15:31:58 +0000 (15:31 +0000)] 
Have the sqlite3_context object carry the encoding for the prepared statement
that it represents, so that sqlite3_result() and similar can set the encoding
according to the prepared statement, even if the database encoding has
changed.
dbsqlfuzz c409b10d0a6bccf78ab00f47e1d29d42ee5b3565

FossilOrigin-Name: d4e19314f564126e180e091f9135c7bc55a10442edb46fbd3a4cfad21201dfa6

3 years agoSplit out the RUN state into separate READY and RUN states. vdbe-state-refactor
drh [Thu, 31 Mar 2022 21:15:09 +0000 (21:15 +0000)] 
Split out the RUN state into separate READY and RUN states.

FossilOrigin-Name: d698826b08b88e227eb83f84b3cdb19f17306b532eccfa162090abccdf3c63d8

3 years agoRename Vdbe.iVdbeMagic to eVdbeState. Remove unnecessary states. This is
drh [Thu, 31 Mar 2022 20:04:49 +0000 (20:04 +0000)] 
Rename Vdbe.iVdbeMagic to eVdbeState.  Remove unnecessary states.  This is
a preliminary step toward splitting RUN_STATE out into several other states.

FossilOrigin-Name: ff91191d232305d44ae6c0fbca2542a749422dc716fa1fd5d54f58c7d6052c14

3 years agoFix harmless compiler warnings.
drh [Thu, 31 Mar 2022 16:09:13 +0000 (16:09 +0000)] 
Fix harmless compiler warnings.

FossilOrigin-Name: b916087aacba53530d2bd19eef2a4fd7a253bf7fa87b49e0df17f7987d7164ae

3 years agoRefinement to [3f9887d4a58cbfdb]: The SQLITE_CONSTRAINT error should only
drh [Thu, 31 Mar 2022 11:12:56 +0000 (11:12 +0000)] 
Refinement to [3f9887d4a58cbfdb]:  The SQLITE_CONSTRAINT error should only
be returned if the prepared statement came from sqlite3_prepare_v2().  The
legacy sqlite3_prepare() is documented to return only SQLITE_ERROR.

FossilOrigin-Name: f2d9262e4427ab37ba26c004fc7a4790c86c1856d695a6b4ec3e72732ea54c09

3 years agoMake CLI build after an incomplete rename completed.
larrybr [Thu, 31 Mar 2022 04:05:48 +0000 (04:05 +0000)] 
Make CLI build after an incomplete rename completed.

FossilOrigin-Name: 4f11e639f02e6ebe5ec9268cf066b83e6992599c049f497ebed704614b870706

3 years agoFor TCL extension: Add Tk and means to run it, optionally. Implement ScriptSupport...
larrybr [Thu, 31 Mar 2022 03:45:52 +0000 (03:45 +0000)] 
For TCL extension: Add Tk and means to run it, optionally. Implement ScriptSupport interface.
For shell: Get scripting support thru an object interface like the others. Rename OutMode* to Export*.
For both: Provide a way to pass arguments to an extension upon load and get them into TCL's argv.

FossilOrigin-Name: d2446e50805cc3a46f9bcafccf017da60b0cf9fcd27695c214d71d1c5141d03f

3 years agoFaster and slightly smaller implementation of sqlite3Step().
drh [Wed, 30 Mar 2022 17:56:27 +0000 (17:56 +0000)] 
Faster and slightly smaller implementation of sqlite3Step().

FossilOrigin-Name: c6901a8c78838228f8135c9346b214e638b72086fd85367b9ff482273e62ece6

3 years agoSmall size reduction and performance increase in sqlite3FinishCoding().
drh [Wed, 30 Mar 2022 17:36:40 +0000 (17:36 +0000)] 
Small size reduction and performance increase in sqlite3FinishCoding().

FossilOrigin-Name: 9248ce50f57fb9c4ba67949fdf9c9567c3e626cd9dd1b41b71c602d29c77c43e

3 years agoIn setResultStrOrError(), if the input string pointer is NULL and hence the
drh [Tue, 29 Mar 2022 22:57:00 +0000 (22:57 +0000)] 
In setResultStrOrError(), if the input string pointer is NULL and hence the
value gets set to an SQL NULL, then the Mem.enc field is uninitialized.  So
do not read it.  This is a harmless OSSFuzz/ASAN found problem.

FossilOrigin-Name: 47d0b1c4cfc3d2d8f57a02079276bb70a205ffd0f18007dd39c92f813d4c87f5

3 years agoFor TCL extension:
larrybr [Tue, 29 Mar 2022 21:11:30 +0000 (21:11 +0000)] 
For TCL extension:
  Cleanup TCL library interaction and interpreter management.
  Group code into more purpose oriented functions.
  Add .unknown dot command, delegating to TCL commands with "dot" names.
  Drop planned .eval new dot command.
For shell:
  Implement undocumented .unknown dot command, doing little.
  Make dispatcher call .unknown's implementation for unknown dot command.
  Fix a command lookup bug exposed by above change to unknown handling.
  Add .eval dot command.
  Add options to .x command aimed at control of errors in command sequences. (a WIP)
  Make dispatcher report ambiguous dot command lookups, even with no extension.

FossilOrigin-Name: 7616a6f4abe20699e5aa66018233247aa94e3e87f3e6ebe1357f776a18115eb3

3 years agoEnsure that sqlite3VdbeMemSetStr() always leaves the value in a consistent
drh [Tue, 29 Mar 2022 20:50:20 +0000 (20:50 +0000)] 
Ensure that sqlite3VdbeMemSetStr() always leaves the value in a consistent
state even if there is an error.

FossilOrigin-Name: c86ab289ec31ce9ae0abaf103a829b8d1e5ed632f493456f1f40607aeb91b41c

3 years agoReverse the order of two tests to stop a harmless initialized value
drh [Tue, 29 Mar 2022 19:19:23 +0000 (19:19 +0000)] 
Reverse the order of two tests to stop a harmless initialized value
warning from MSAN - reported by OSSFuzz.

FossilOrigin-Name: 800b8fdad73b67105e416b4b5c6a5c5ded7d6a43b4eacd6b67d690cab7584b0b

3 years agoAvoid unnecessary calls to balance() from sqlite3BtreeDelete().
drh [Tue, 29 Mar 2022 13:16:32 +0000 (13:16 +0000)] 
Avoid unnecessary calls to balance() from sqlite3BtreeDelete().

FossilOrigin-Name: d0966d1bdd474e27cb048884d340184f0e81a4fab65eb6b74682b20630caddf8

3 years agoFix the sqlite3_result_xxxxx() routines so that they all check for and
drh [Tue, 29 Mar 2022 01:43:09 +0000 (01:43 +0000)] 
Fix the sqlite3_result_xxxxx() routines so that they all check for and
perform any necessary text encoding conversions and check for oversize
strings and BLOBs.  Thus those checks can be done where they are most
efficient and avoided in cases like OP_Function where they are more
expensive.

FossilOrigin-Name: d50b162b2f2e320af0889b931351f9443580465a933f6657fa98f437b6579277

3 years agoTCL extension polished and more smoothly integrated. A couple of bugs related to...
larrybr [Mon, 28 Mar 2022 21:42:16 +0000 (21:42 +0000)] 
TCL extension polished and more smoothly integrated. A couple of bugs related to takedown fixed. Help for added features. Code cleaned up and commented.

FossilOrigin-Name: 4ee7df118033af368854992763d96f860f8bd218b28b9ad27dd7ad4291cabfd7

3 years agoFurther size and performance optimizations for sqlite3VdbeMemSetStr().
drh [Mon, 28 Mar 2022 18:34:40 +0000 (18:34 +0000)] 
Further size and performance optimizations for sqlite3VdbeMemSetStr().

FossilOrigin-Name: 310a3e102d8eedf92ee63ffffb48621abfb1e2736b96bd2a676d63cca0f40598

3 years agoSlightly smaller and faster sqlite3VdbeMemSetStr().
drh [Mon, 28 Mar 2022 17:34:46 +0000 (17:34 +0000)] 
Slightly smaller and faster sqlite3VdbeMemSetStr().

FossilOrigin-Name: 06928e745c7bcb26ec46a17989f30efe3536fd48a74c8a1cd423cc9ff6feccb5

3 years agoPerformance increase in the loop that frees an opcode array.
drh [Mon, 28 Mar 2022 15:06:36 +0000 (15:06 +0000)] 
Performance increase in the loop that frees an opcode array.

FossilOrigin-Name: 4ccebb86aae178dbce905d782f04d98211f8fce9aacd71c12b8694c92a4f5c40

3 years agoAnother small performance gain by using sqlite3DbFreeNN().
drh [Mon, 28 Mar 2022 14:56:47 +0000 (14:56 +0000)] 
Another small performance gain by using sqlite3DbFreeNN().

FossilOrigin-Name: daa924af987253345bdb1c71b13378681bd252521e94d01f5d4629601232c352

3 years agoUse sqlite3DbFreeNN() instead of sqlite3DbFree() in a few hot spots for
drh [Mon, 28 Mar 2022 14:18:03 +0000 (14:18 +0000)] 
Use sqlite3DbFreeNN() instead of sqlite3DbFree() in a few hot spots for
better performance.

FossilOrigin-Name: b12de0ecc78a4f654c8e7b2b17cc2201688808a4f516908e9563a216677e655c

3 years agoPerformance optimization in the memsys5 memory allocator.
drh [Mon, 28 Mar 2022 13:22:54 +0000 (13:22 +0000)] 
Performance optimization in the memsys5 memory allocator.

FossilOrigin-Name: 949133231f8f751aa86518d0d3f6f03d7827fec085bfef3929fa3d57369d0216

3 years agoIn TCL shell extension, wrap shell DB for use from TCL.
larrybr [Mon, 28 Mar 2022 05:57:07 +0000 (05:57 +0000)] 
In TCL shell extension, wrap shell DB for use from TCL.

FossilOrigin-Name: 41cc84336bbf7bc64492c24e1bf5be0fccbb8a3db57498070b624af8818d0075

3 years agoTCL extension made to use shell's line inputter with prompting and line editing/history.
larrybr [Sun, 27 Mar 2022 23:33:43 +0000 (23:33 +0000)] 
TCL extension made to use shell's line inputter with prompting and line editing/history.

FossilOrigin-Name: fbf0eb0d12932513bba4c6a6ef31d9972d704ab38690c806098504a4cd67786d

3 years agoIn TCL shell extension, add TCL command "udb". This gets the TCL environment to near...
larrybr [Sun, 27 Mar 2022 03:08:02 +0000 (03:08 +0000)] 
In TCL shell extension, add TCL command "udb". This gets the TCL environment to near parity with pre-extended utility, except for query result display (TBD soon).

FossilOrigin-Name: c9aa76bf88401d193a536bc6576405aaad06681504996916b492962d890bc9e0

3 years agoSync w/trunk
larrybr [Fri, 25 Mar 2022 20:39:09 +0000 (20:39 +0000)] 
Sync w/trunk

FossilOrigin-Name: 8402e5e78a83af3ba015bb6ab173350c1b73e04ce37ef933f9a847a7cf5e6157

3 years agoCLI preparation for shell's db to be used from TCL
larrybr [Fri, 25 Mar 2022 18:27:47 +0000 (18:27 +0000)] 
CLI preparation for shell's db to be used from TCL

FossilOrigin-Name: 57501e7fbda84a22cd8ab15beff8af4766a3851aa3c6c705484fe1eab808caa9

3 years agoGet shell TCL extension more smoothly integrated.
larrybr [Fri, 25 Mar 2022 06:46:20 +0000 (06:46 +0000)] 
Get shell TCL extension more smoothly integrated.

FossilOrigin-Name: 29fd246fb2605a2731dd6327a354daedd8182225a97234939c79fc66e1e9e83e

3 years agoFix the Bloom-filter optimization so that it does not use IS NULL or
drh [Fri, 25 Mar 2022 01:23:37 +0000 (01:23 +0000)] 
Fix the Bloom-filter optimization so that it does not use IS NULL or
IS NOT NULL constraints from the WHERE clause when operating on a LEFT JOIN.
[forum:/forumpost/031e262a89b6a9d2|Forum thread 031e262a89b6a9d2].

FossilOrigin-Name: 1a6328f2a5b4973094e5f85787145d652119822c86ec01a61f3f985c9d2903f2