1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-08 03:22:21 +03:00
Commit Graph

536 Commits

Author SHA1 Message Date
drh
6c5351589c Simplified array allocation in the IdList and AggInfo objects.
FossilOrigin-Name: 25df2a7458d025bc00380b4a0893637639f9f0d4
2012-02-02 03:38:30 +00:00
drh
d872bb180c Remove the nAlloc field from the ExprList object.
FossilOrigin-Name: 5963de303a9106b446a9423aa838bfdf6bc1e7f3
2012-02-02 01:58:08 +00:00
drh
4b3ac73c2f Minor cleanups of the compound-subquery flattening logic. New test cases
added for joins the compound subquery.

FossilOrigin-Name: 5061d85ff934db3c217c97acbbbed3286d9e02aa
2011-12-10 23:18:32 +00:00
drh
678a9aa7bd Import the experimental parse-tree explainer, with fixes, from the
tree-explain branch.

FossilOrigin-Name: bcbc7152d49107afa926c8950360c61a6cf3d244
2011-12-10 15:55:01 +00:00
drh
a5eec8c8c3 Merge the latest trunk changes into tree-explain branch.
FossilOrigin-Name: 1a360da0f8314f232c224c71829646bc7558892b
2011-12-10 14:44:31 +00:00
drh
b8475df809 Make no assumptions about the initial state of VDBE registers.
FossilOrigin-Name: 521d72bdf67b4b1972331307345a18c231a6e1d6
2011-12-09 16:21:19 +00:00
dan
1d8cb21fdb Modify the OP_Once opcode so that it works correctly in trigger sub-programs. This is a candidate fix for [7bbfb7d442].
FossilOrigin-Name: 557c69055a300b4082830b5f4803091dca1c3140
2011-12-09 13:24:16 +00:00
drh
04b8342b83 More compact notation for the parse-tree view.
FossilOrigin-Name: 0eb3f8b1e3a196811fb54a5e2645debe6119610a
2011-12-07 15:33:14 +00:00
drh
23b1b37229 Cherrypick the [7e5b56b1c6] fix for the sqlite3SelectDup() routine
into trunk.

FossilOrigin-Name: 7fc535090ca3416706dff4abce10ac2d7f775e02
2011-12-07 01:55:51 +00:00
drh
e7e6a54504 Bug fix in sqlite3SelectDup(). Make sure the pNext pointer is valid.
FossilOrigin-Name: 7e5b56b1c602d4adfd4496a9c877f3b685b2d360
2011-12-07 01:47:27 +00:00
drh
a84203a074 Improvements to the data-structure explain subsystem. Most queries now
give a reasonably detailed graph of their parse tree.

FossilOrigin-Name: 0aa7d3d2346bdddcc4e1e25ee26d13c8594885e5
2011-12-07 01:23:51 +00:00
drh
7e02e5e6b5 Begin adding the data-structure explaining subsystem. All is contained within
FossilOrigin-Name: 79ae51c5b1b20ed0a425a87e65a32a096a80b7e1
2011-12-06 19:44:51 +00:00
drh
cdc6955716 Do not reuse temp registers originally allocated to a subroutine within
the main body of the program logic, since if the subroutine is called
while the reused temp registers are in use, their values will get clobbered.
Candidate fix for ticket [3a77c9714e63330]

FossilOrigin-Name: 092d53315e50be42b51ef7b3069c82c32a129b6a
2011-12-06 13:24:59 +00:00
drh
b07028f71c Add assert() statements and eliminate needless variable assignments in order
to get the clang scan-build utility to report zero problems against the
SQLite core.  Clang's static analysis did find one real problem - but it was
in the command-line shell, not in the SQLite core.

FossilOrigin-Name: 60fee9574b0125705787e33c16f116cf188c8323
2011-10-14 21:49:18 +00:00
drh
6b93c9ae24 Make sure the query optimizer for aggregate queries knows that expressions
(x='a') and (x='A') are different.  Ticket [fa7bf5ec94801e7e]

FossilOrigin-Name: e43da426e66e6b63d5ed9610a6308aba0089313b
2011-10-13 15:35:52 +00:00
drh
dfd2d9f6c9 Fix a problem with SQLITE_OMIT_TRACE that was introduced by the recent
OP_Once change.

FossilOrigin-Name: 96be3f7b59b3ed4703b907e29db629df34b2b56f
2011-09-16 22:10:57 +00:00
drh
48f2d3b10a Add the new OP_Once opcode. Use it to clean up and simplify various
one-time initialization sections in the code, including the fix for
ticket [002caede898ae].

FossilOrigin-Name: 7f00552b739fad79517b042a6ed61abe743a917b
2011-09-16 01:34:43 +00:00
drh
5b6a9ed495 Materialize subqueries using a subroutine and invoke that subroutine
prior to each use of the subqueries manifestation.  Fix for
ticket [002caede898aee4]

FossilOrigin-Name: 4b8357ee3c4ccdbd34e0cd077efd84cca677f496
2011-09-15 23:58:14 +00:00
dan
5134d1357e Instead of a temporary b-tree, use a linked-list and merge-sort to sort records in main memory in vdbesort.c.
FossilOrigin-Name: 7769fb988d9be0f2d8129aaac19620ac88f9b4a6
2011-09-02 10:31:11 +00:00
dan
da79cf0cc9 Fix for [54844eea3f]: Do not create automatic indexes on correlated sub-queries.
FossilOrigin-Name: 9f14fa56ba31afe3de8b0cf26ed09573a2cc2283
2011-07-08 16:10:54 +00:00
drh
04e9eeadc6 Avoid unnecessary duplication of SQL parameter names.
FossilOrigin-Name: e704e8690ae35decc9769a45cf8d519ccad8b79d
2011-06-01 19:16:06 +00:00
drh
124c0b49a1 Refactor the SQL parameter processing so that parameter names for values
that are optimized out of the prepare statement are not forgotten.

FossilOrigin-Name: b3aaf715b60b8a338cc6c92dad1ead4a3f7146a3
2011-06-01 18:15:55 +00:00
drh
8d129422ed Fix the P4_TRANSIENT constant so that it works correct - so that it really
makes a copy of the string for the P4 argument.  Use P4_TRANSIENT wherever
appropriate.  Change P4_STATICs of schema names to P4_TRANSIENT.

FossilOrigin-Name: bf664b206bf6f5c1941da1986dfe2c0d1831d5e4
2011-04-05 12:25:19 +00:00
drh
d50ffc416f Fix additional cases of possible signed integer overflow, especially with
regard to negation.

FossilOrigin-Name: 2d5800bd8cfc7d7f5578a71b1aeaa74b2ec4b372
2011-03-08 02:38:28 +00:00
drh
158b9cb965 Fix all known instances of signed-integer overflow. Within SQL expressions,
integer overflow now forces coercion to floating point.  The shift operators
work with any integer right-hand operand with negative values reversing
the direction of the shift.

FossilOrigin-Name: abf21394124a0af46f072793718964cee2ce55d0
2011-03-05 20:59:46 +00:00
drh
cfd654bf2a Fix an instance of signed arithmetic overflow and an one bit-shift overflow.
Mark six other signed arithmetic overflow locations that need fixing.

FossilOrigin-Name: 04abab71ecd52f6070b9f84781a3df3d6dba7722
2011-03-05 13:54:15 +00:00
drh
cd92e84d07 Remove a no-op code path from sqlite3ExprIsInteger(). Replace it with an
assert() that proves it always does nothing.

FossilOrigin-Name: 7af66d1bd53fd5973281646511e4e1d3b16601a3
2011-02-17 15:58:20 +00:00
drh
84e30ca0ed Prevent a segfault when automatic indices try to use a column with an
unknown collating function.  Ticket [77aa3b1e6592582e38605d36].  This
check-in also removes some stray \r characters unrelated to the problem.

FossilOrigin-Name: f01030a0df4f94f886ab209ee8766b095da28c1e
2011-02-10 17:46:14 +00:00
shaneh
bb201344cf Make sure code *compiles* with each OMIT and ENABLE option. Mostly changes to test modules.
FossilOrigin-Name: 7cc515edc9cade2bc6c74699b3e4153bf2b74ebb
2011-02-09 19:55:20 +00:00
drh
f58ee7f1aa Add the ability to disable constant factoring using sqlite3_test_control().
Add a TCL interface to this new capability and add tests cases to the TCL
test scripts to actually use the new capability.

FossilOrigin-Name: ad8bc68197f2b47435149c3dbc035f4e7210fc76
2010-12-06 21:06:09 +00:00
drh
ef4c059843 Back out part of the previous change that was not really necessary in order
to fix [80ba201079ea60], and which in fact serves no useful purpose.

FossilOrigin-Name: fa9eef865f2f399870305bef82296db25e5b3e90
2010-12-06 18:59:13 +00:00
drh
48b5b041d1 Initialize all constants at the very beginning of a prepared statement.
Do not allow constant initialization to occur once control flow has a chance
to diverge, to avoid the possibility of having uninitialized registers.
Ticket [80ba201079ea60807].

FossilOrigin-Name: c5c53152d68218bb5e7f922271dd7c50da2361c1
2010-12-06 18:50:32 +00:00
dan
4a07e3db27 Further enhancements and fixes for explain query plan.
FossilOrigin-Name: 73c93f5a2a32ee8c5d07c9ba33b2641e72626627
2010-11-09 14:48:59 +00:00
dan
2b359bdbe4 Enforce the MAX_EXPR_DEPTH limit while building expression trees during SQL parsing.
FossilOrigin-Name: 2625eee0cb7f22dba61459b689e33a03ecebb6da
2010-10-28 11:31:23 +00:00
shaneh
5f1d6b616e Changes to remove sqlite3FitsIn64Bits().
FossilOrigin-Name: 43fef1cab6315f837782ea601d5a2aeb9843ab3c
2010-09-30 16:51:25 +00:00
drh
9339da1f22 Rework the text to numeric conversion routines so that they work with either
UTF8 or UTF16 and do not require a NULL terminator.  This allowed text to
numeric conversion without reallocating the string.

FossilOrigin-Name: 14eed3a0e0a45c6f2904a3a134aa27c159916f7b
2010-09-30 00:50:49 +00:00
drh
d81a142bfa Replace some unreachable branch instructions with assert() statements.
FossilOrigin-Name: 88b84bf18a4b27626f8a0a2d313706ddd4f13749
2010-09-28 07:11:24 +00:00
drh
746fd9cc58 Tweaks to help facilitate structural test coverage.
FossilOrigin-Name: ff49a5f00b3aa83bdacc95a32d60527c740a6c09
2010-09-28 06:00:47 +00:00
drh
8b1db07f4e Test case and fix for the specific failure of ticket [b351d95f9cd5ef17e9d9dbae].
FossilOrigin-Name: 57789cfe674dbbd4d5e4663774d1e7c541f7bdc4
2010-09-28 04:14:03 +00:00
drh
ebc16717fa Continuing work toward detecting and fixing shallow-copy misuse.
FossilOrigin-Name: d0342f4bb9d25dd1dba3957778faa993fb9cc81c
2010-09-28 00:25:58 +00:00
drh
7445ffe2da Simplifications to the expression code generator. Remove about 80 lines of
older and obsolete code.

FossilOrigin-Name: 53f5cfe11516d0496c7760378b6305c3088d479f
2010-09-27 18:14:12 +00:00
drh
d4187c716c Provide hints to the btree layer during the creation of transient tables
when it is possible for those tables to use a hash rather than a binary tree.
No use is current made of those hints, though assert() statement verify
their accuracy.

FossilOrigin-Name: 4fead8e714c7e50a9d246467e62bc846ef6180a0
2010-08-30 22:15:45 +00:00
shaneh
1df2db7fd1 Fix some compiler warnings in the MSVC build.
FossilOrigin-Name: 1f5662b7db5d623c8d99c45a8d97a0aa4427593f
2010-08-18 02:28:48 +00:00
dan
c8d735aed3 Return an error when parsing "?NNN" if NNN is so large it cannot be stored as a 32-bit int.
FossilOrigin-Name: fc9014be0f00d046e7ba830a644f9ce93eca5db8
2010-08-17 19:34:13 +00:00
drh
cf4d38aaf0 Do not allow automatic indices for the RHS of IN expressions which are not
correlated subqueries.  Ticket [8011086c85c6c404014c9]

FossilOrigin-Name: 267492d3a7eff7b7b24ed6bd6d6ff55148fe37f3
2010-07-28 02:53:36 +00:00
drh
8342e49f62 Enhance the LIKE/GLOB query optimization so that it works as long as there
is an index with the appropriate collating sequence and even if the default
collating sequence of the column is different.
Ticket [4711020446da7d93d99].

FossilOrigin-Name: 9f932655f9eb9fdab16d7deed98b7cad414e0ca6
2010-07-22 17:49:52 +00:00
drh
a7d2db175b The expression list on the RHS of an IN operator can no longer be empty
because an empty expression list is now optimized out by changes in
check-in [c288ac644d0bf].  Therefore add ALWAYS() macros around tests
for the expression list being non-empty.

FossilOrigin-Name: fd130ae56c0e23f2d5b4a82f1a09e89ed7ae1e85
2010-07-14 20:23:52 +00:00
drh
094430eb71 Make the result of an IN or NOT IN expression with an empty set on the
right-hand side always either false or true, respectively, even if the
left-hand side is NULL.  Ticket [80e031a00f45dc]

FossilOrigin-Name: c288ac644d0bfda2b9bc204dc86df8e74d4f6843
2010-07-14 18:24:06 +00:00
drh
5c092e8a4f Make sure the value of an INTEGER PRIMARY KEY column supplied to triggers
and especially to FK constraints really contains the ROWID and not the
NULL that is stored in the column itself.  Ticket [dd08e5a988d00dec].

FossilOrigin-Name: 636f86095eb1f4bdcfb0c9ed846c4c6b3589c10b
2010-05-14 19:24:02 +00:00
drh
eaf52d883a Remove the OP_Variable optimization of check-in [48b77b04935d894] since it
can lead to malfunctions as described in ticket [26ff0c82d1e90].

FossilOrigin-Name: 7838163d087780a6fb403a17641b96f71baec088
2010-05-12 13:50:23 +00:00