Commit Graph

790 Commits

Author SHA1 Message Date
drh 0ff287fb01 Add and use the sqlite3VdbeChangeOpcode() routine. Simplify the implementation
of the other sqlite3VdbeChange*() routines.

FossilOrigin-Name: 0a5b00e493efae58252f9fc7bde5a469645942d5
2015-09-02 18:40:33 +00:00
drh 2991ba050b Add the sqlite3VdbeAddGoto(v,i) routine as a shorthand for
sqlite3VdbeAddOp2(v,OP_Goto,0,i).

FossilOrigin-Name: be78f413df1b0d874b44a866ef6bf17543d7e8a2
2015-09-02 18:19:00 +00:00
drh ef41dfe5b1 Change sqlite3_sql() so that it always returns the SQL text of the prepared
statement, if the text is available, even if the the prepared statement was
generated using sqlite3_prepare() instead of sqlite3_prepare_v2().  Also
include some minor comment fixes and code simplifications.

FossilOrigin-Name: 2f5472cfda6c72e75b9cf7b7481612465c1a5e6a
2015-09-02 17:55:12 +00:00
drh d5a74c8e19 Minor fix to the display of oversized KeyInfo structures in the P4 operand
of Open opcodes in EXPLAIN output.

FossilOrigin-Name: f65a9b4ab2c6f0b7028e16e2a0f83fd6d58ae1cd
2015-08-15 16:32:50 +00:00
drh 4698136594 Early detection of file corruption in a debugging routine, before the invalid
data can cause problems.

FossilOrigin-Name: b27a47fef995f0ab2516e6ca779711cab1f50fb9
2015-07-08 12:25:38 +00:00
drh c5ef7151b0 Avoid unnecessary calls to sqlite3VdbeSerialTypeLen() for integer
serial types, for a small size reduction and a speed increase.

FossilOrigin-Name: 9cd30d33b1d02dc8c55c1d74bdbcefab63ebf2a7
2015-06-28 02:58:51 +00:00
drh e2d9e7cfd0 Further optimization of SQL function dispatch. Improvements to opcode
documentation.

FossilOrigin-Name: eaddbf296aee98ffca82adade1b0d2fbefd09d7b
2015-06-26 18:47:53 +00:00
drh 9c7c913cd6 Cache the sqlite3_context structure in the P4 operand of VDBE programs
for faster SQL function dispatch.

FossilOrigin-Name: 2abc44eb3b9d489321baa50bc25e17dafbda3687
2015-06-26 18:16:52 +00:00
drh f1aabd6b78 Optimizations to two VDBE accessory routines for a 0.2% performance increase.
FossilOrigin-Name: 66d033b9c9a8c16b9a342be0b325bd85b8487c03
2015-06-17 01:31:28 +00:00
drh 0dd5cdaea5 Ensure that the CREATE TABLE AS statement correctly undoes partial changes
to the sqlite_master table if the SELECT on the right-hand side aborts with
an error.  Fix for ticket [873cae2b6e25b]

FossilOrigin-Name: 400e025e7c61efab71b891743c07a0862e5bb934
2015-06-16 16:39:01 +00:00
drh 97bae794c2 Add a new opcode to the VDBE that gives the b-tree a hint about the set
of columns in a table or index that are actually used by the query.

FossilOrigin-Name: f167bba446b78dd7538d0b2bae3e6678f3b1ba28
2015-06-05 15:59:57 +00:00
dan b95e1193d5 Avoid a buffer overread when comparing against a corrupt record that spans at least one overflow page.
FossilOrigin-Name: 62a5b3633a086694ef0e579a0a82322cb1ae3d60
2015-05-26 20:31:20 +00:00
dan cc7aa1f6f3 Avoid branching on an uninitalized variable when comparing SQL values with the undefined serial types 10 and 11 (which only appear in corrupt databases).
FossilOrigin-Name: b4a45d3b78fede2433ac18f20b1ab7bddee77059
2015-05-26 20:07:32 +00:00
drh 22c17b8bf5 Simplifications to error message processing. Fix a possible problem in error
message formatting when vacuuming a database with a corrupt schema.

FossilOrigin-Name: 56ef98a04765c34c1c2f3ed7a6f03a732f3b886e
2015-05-15 04:13:15 +00:00
drh ab4e7f3337 Make sure all cursors are closed when returning from a VDBE subprogram that
implements a foreign-key construct.

FossilOrigin-Name: d04d354d8e423961c3091b6ebcfbbbf10d3ecb04
2015-04-16 18:11:50 +00:00
dan 7004f3f6a3 Improve performance of multi-field sorts where the first field has a low cardinality.
FossilOrigin-Name: 601e7b6b8e6bfabda03b70f75094c9014e3a3c49
2015-03-30 12:06:26 +00:00
drh 466fd815fb Simplify the EXPLAIN output of virtual table P4 parameters to only show the
pointer to the sqlite3_vtab object and omit the sqlite3_module object.

FossilOrigin-Name: 85610bbbc60cb4a6ec856123447fdb2ba948e52f
2015-03-24 14:57:02 +00:00
drh f496a7dc81 More defenses against virtual table being deleted out from under a running
statement.

FossilOrigin-Name: 116c99823022c017946b6088878a2d46759deb6e
2015-03-24 14:05:50 +00:00
drh a68d628291 Prevent a virtual table from being destroyed while it is in use.
FossilOrigin-Name: fba674c083286dabb37fed9357b67593b56ed3a5
2015-03-24 13:32:53 +00:00
drh 086723a4a8 Replace the Vdbe.inVtabMethod field with the sqlite3.nVDestroy counter.
FossilOrigin-Name: 9faefb96272967e731e83ef516a8c1e1b876391b
2015-03-24 12:51:52 +00:00
drh 75a4d7c3da When deleting the master journal to commit a multi-database transaction, do
not sync the directory if PRAGMA synchronous=OFF for all participating
database files.

FossilOrigin-Name: 018d7671402a0f8103d1306641655b69f9fa235d
2015-03-16 16:44:55 +00:00
mistachkin 1b3ee49225 Fix harmless compiler warning seen with MSVC.
FossilOrigin-Name: 78c2e62bb4c529595aaaf2e1f5f26387ad977b1b
2015-01-21 00:51:08 +00:00
drh 1af3c64d03 Fix the assert() of the previous check-in so that it works even when
compiled without SQLITE_DEBUG.

FossilOrigin-Name: 38868f845e1ad4d61354ab1ad39dd19e3e07c7fd
2015-01-19 20:57:19 +00:00
drh e1bb802c54 An alternative way of implementing the assert() that verifies the relative
values of KeyInfo.nField+KeyInfo.nXField and the number of columns in a record.
This version of the assert() only fires when the high-speed comparison
routines are used - which is to say it only fires when the constraint
actually matters.

FossilOrigin-Name: bf744b4908b096f301565f6a4ea8d56667c1d76a
2015-01-19 19:48:52 +00:00
dan 0466883300 Experimental opimizations to speed up FK constraint CASCADE and SET NULL action processing.
FossilOrigin-Name: 35a20a5f22245c70faa51965951e8cc011defa93
2014-12-16 20:13:30 +00:00
drh 9b5444af6c Work around overzealous NULL pointer checking in memcpy() and memset() for
some systems.

FossilOrigin-Name: 0d04f380e1bd17104b3cf76b64d0cfc79a726606
2014-12-02 13:46:53 +00:00
drh 1b40e63f9b Fix the encoding of some integers to use the minimum amount of space:
-128, -32768, -8388608, -217483648, and -140737488355328.

FossilOrigin-Name: 2d7c8da5f16e64eaa7b0c2d66898682ea3d102a0
2014-11-20 02:58:10 +00:00
drh 654858d7f4 Add some requirements marks to the record formatting logic. Comment changes
only - the code is unaltered.

FossilOrigin-Name: 9a9627e178a67bbfc85366aaea900e674d22fb53
2014-11-20 02:18:14 +00:00
drh 518140ed04 Change the SQLITE_SCANSTAT_EST parameter so that it returns a double for
the estimated number of output rows per loop, rather than a 64-bit integer.
Revise the output format for the ".scanstats on" in the shell to make use
of this new capability.

FossilOrigin-Name: f9684000665ae7ef6f89c3773612b8286b8f545a
2014-11-06 03:55:10 +00:00
dan e2f771b047 Add further tests. Fixes so that compilation without ENABLE_STMT_SCANSTATUS works.
FossilOrigin-Name: a2303c719222f1effb51acc6b37930561148c00c
2014-11-03 15:33:17 +00:00
dan 037b5324bd Remove unused variable from struct WhereInfo. Add some explanatory comments to new code.
FossilOrigin-Name: f5313e0c680d9baebefb1cf50ddadedd4418a334
2014-11-03 11:25:32 +00:00
dan 43764a8efb Minor performance enhancements to SQLITE_ENABLE_STMT_SCANSTATUS code.
FossilOrigin-Name: f13d6ba8a72d75838c4aaf85326c1129da027f8b
2014-11-01 21:00:04 +00:00
dan 6f9702ed4d If SQLITE_ENABLE_STMT_SCANSTATUS is defined, record the number of times each VDBE opcode is executed. Derive the values returned by sqlite3_stmt_scanstatus() from these records on demand.
FossilOrigin-Name: 9ea37422a8cc2fce51bb10508e5e90f40fd4b511
2014-11-01 20:38:06 +00:00
dan 04489b6dce Add the experimental sqlite3_stmt_scanstatus() API.
FossilOrigin-Name: 6a9bab34aeb6a01b612211a28c140de60a3e883c
2014-10-31 20:11:32 +00:00
dan c3da667b25 Modify the documentation for sqlite3_changes() to make it more testable. Add tests and minor fixes for the same.
FossilOrigin-Name: 41cdd0c422d61533a94870cb5ad094682956d472
2014-10-28 18:24:16 +00:00
drh f526dcad29 Three small optimizations to vdbeaux.c.
FossilOrigin-Name: 04892f8ba6c55cec4fe37bfe59b6349fd2a40698
2014-10-13 17:42:05 +00:00
drh c22284f4b3 Reduce the CPU load imposed by sqlit3VdbeCursorMoveto() by factoring out
some of its functions and by avoiding unnecessary calls.

FossilOrigin-Name: c2799aece17d347c64217a0e407bb10e50c184a3
2014-10-13 16:02:20 +00:00
drh b53a5a9e50 Remove the VdbeCursor.lastRowid cache of the current rowid, since maintaining
the correct cache value uses more CPU cycles than just recomputing the rowid
on the occasions when it is actually needed.  Replace it with the
VdbeCursor.aOffset field which used to be computed from VdbeCursor.aType
when needed. Saves 100 bytes of code space and runs 0.2% faster.

FossilOrigin-Name: 91384a7d727ef0f285cd430e829ba9f3852db50e
2014-10-12 22:37:22 +00:00
drh 4fa4a54f7e Remove the SQLITE_ENABLE_TREE_EXPLAIN compile-time option. Add alternative
debugging display routines: sqlite3TreeViewExpr(), sqlite3TreeViewExprList(),
and sqlite3TreeViewSelect().

FossilOrigin-Name: 4ff51325d6b41d0c59e303b573700ec80c51d216
2014-09-30 12:33:33 +00:00
drh 39c4b82b5a Fix the header comment in sqlite3VdbeDeletePriorOpcode(). No changes to
code.

FossilOrigin-Name: 7fb1626866c2f8dad84c7e6184824be3efd71ca2
2014-09-29 15:42:01 +00:00
drh 069c23c947 Small size reduction and performance increase for releaseMemArray().
FossilOrigin-Name: 24cd32d681df58f687b2afbe4b13d579e3efdd4b
2014-09-19 16:13:12 +00:00
drh 7abda85607 Updates to comments. No code changes.
FossilOrigin-Name: 9b42c3da6b2593a10b8fe4b2fcc3d650132625c1
2014-09-19 16:02:06 +00:00
drh 322f2852f2 Add the sqlite3VdbeMemClearAndResize() interface to be used in place of
sqlite3VdbeMemGrow().

FossilOrigin-Name: 5b9b8987797abf7c68d2c3154f6657be9b8b1c8f
2014-09-19 00:43:39 +00:00
drh 17bcb10299 Add the Mem.szMalloc element to the Mem object and use it to keep track of
the size of the Mem.zMalloc allocation.

FossilOrigin-Name: 9c09ac353df6041808cace41880f4729ee73f5e1
2014-09-18 21:25:33 +00:00
drh 74eaba4de2 Merge the Mem.r value into the MemValue union as Mem.u.r. Hence, a Mem can
now store an integer or a real but not both at the same time.  Strings are
still stored in a separate element Mem.z, for now.

FossilOrigin-Name: 4c8c89d7e62aecfe2eb735f7bb114aed6b452847
2014-09-18 17:52:15 +00:00
drh d3b74200a8 In the Mem object, stop requiring that Mem.xDel be NULL when the MEM_Dyn
bit is clear.  Also reduce the amount of initialization of Mem objects.
All for a small size reduction and performance increase.

FossilOrigin-Name: fdddb477c89dabb9f7bf2d5ccb32534868df3a03
2014-09-17 16:41:15 +00:00
drh 8740a60016 Make sure registers are cleared properly prior to being used to store
the result of an OP_Column operator.

FossilOrigin-Name: 78fb8838d80b229418c347c63579989432e1af7d
2014-09-16 20:05:21 +00:00
drh 897a2d50f2 Remove an unused parameter from sqlite3VdbeIdxRowid(). This is cosmetic
only as the C-compiler optimizers were already omitting this parameter on
amalgamation builds.

FossilOrigin-Name: a10a6bba4963761b490b7243b388dcc920c4cfed
2014-09-16 14:55:08 +00:00
drh 75179ded97 Reduce the number of arguments to RecordCompare functions from 4 to 3,
resulting in a small performance increase.

FossilOrigin-Name: 8239c35aedd583af79505378bb7dbb78346a3f45
2014-09-16 14:37:35 +00:00
drh 035e563bf6 Reorder the elements of the Mem object for a small size reduction and
performance improvement.

FossilOrigin-Name: 0be3019ed794c10de67dfd645ceea7d45815bc4b
2014-09-16 14:16:31 +00:00