1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00
Commit Graph

1161 Commits

Author SHA1 Message Date
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
drh
8c6f666b26 Optimization: Convert an ORDER BY clause into a no-op if the query also
contains a GROUP BY clause that will force the same output order.

FossilOrigin-Name: ca9d86baf70f210d331ce93102177c8005c494cb
2010-04-26 19:17:26 +00:00
dan
b7dca7d733 Modify the vdbe so that the comparison operator opcodes do not modify the data type of operands. Fix for [aa92c76cd4].
FossilOrigin-Name: 8858042fa1449516a2c7dbb991dca3eb6c5794cb
2010-03-05 16:32:12 +00:00
drh
44dbca83c7 Comment out unused code when SQLITE_OMIT_FLOATING_POINT is selected.
Added testcase() macros to boundary conditions in util.c routines.

FossilOrigin-Name: dfc6595d347ea87923a857778b68751103f535d2
2010-01-13 04:22:20 +00:00
drh
13573c71d8 Use #ifdefs to disable unused code when SQLITE_OMIT_FLOATING_POINT is defined.
FossilOrigin-Name: 66bab8561926963a87f15ad559cba36545c9892c
2010-01-12 17:04:07 +00:00
drh
1d9da70ad7 Fix the expression comparison logic to take the COLLATE operator into account.
Ticket [360c6073e197]

FossilOrigin-Name: 44bb1bfe5dedd8054ddd933941ee4112ed8d3b68
2010-01-07 15:17:02 +00:00
drh
f49f352320 Adjustments to column cache handling in order to restore 100% branch
test coverage.

FossilOrigin-Name: cc6b959bc1f968e08eea1afd387201d70a0c1e80
2009-12-30 14:12:38 +00:00
drh
27ee406e2c Remove some code in the column cache that is no longer used. Replace it with
an assert().

FossilOrigin-Name: 1f890efb7863bd743b9f6ef841e0c0c4e67d76e1
2009-12-30 01:13:11 +00:00
drh
c82b7513bf Remove obsolete comment text from expr.c. No functional code changes.
FossilOrigin-Name: 84058be0beb799bc989d73a8d4cd8791ab709395
2009-12-30 00:12:39 +00:00
drh
b6da74ebd5 Immediately purge entries from the column cache when the associated register
undergoes an affinity change.  Ticket [eb5548a849].  Enhance the
SQLITE_TESTCTRL_OPTIMIZATIONS setting of sqlite3_test_control so that it
can disable the column cache for testing purposes, in an effort to prevent
future problems of a similar nature to this one.

FossilOrigin-Name: ea4e57e1c1b6663ceb12872e31a8503f6c14e3d8
2009-12-24 16:00:28 +00:00
dan
f6963f99dd Change so that deleting an Expr structure requires only one frame per level in the expression tree, not two.
FossilOrigin-Name: a4380ab326e4b0de29271c824d041193e86b7139
2009-11-23 14:39:14 +00:00
drh
88376ca791 Remove an unreachable branch from the OP_Affinity suppression logic.
FossilOrigin-Name: 598727e6dae87f133c658fa125684f6ad978be60
2009-11-19 15:44:53 +00:00
drh
cd7f457e6d Fix a bug introduced with recent optimizations: The unary minus operator
is TK_UMINUS, not TK_MINUS.

FossilOrigin-Name: 4bd43307090258f8652c995b056101c51b81274a
2009-11-19 14:48:40 +00:00
drh
2f2855b638 Suppress more instances of unnecessary OP_IsNull and OP_Affinity opcodes.
FossilOrigin-Name: bf6c0bd1c5568c6292ea0a64c8a5071e1bd3079a
2009-11-18 01:25:26 +00:00
drh
039fc32e84 Code generator tries to avoid pointless OP_IsNull and OP_Affinity opcodes.
FossilOrigin-Name: ebb0c8a3e977dc741704e733b5a5d931d9b27028
2009-11-17 18:31:47 +00:00
drh
5c03f30a9a Changes to test_intarray.c so that it build with SQLITE_OMIT_VIRTUALTABLE.
Added testcase() macros to expr.c.

FossilOrigin-Name: f0599d28fabe9e67a7150a91c266cb7655a2002e
2009-11-13 15:03:59 +00:00
drh
8cff69df11 Enhance the OP_Found and OP_NotFound opcodes so that they can accept an
array of registers as an unpacked record in addition to a record built
using OP_MakeRecord.  Use this to avoid OP_MakeRecord calls during IN
expression processing.

FossilOrigin-Name: b9eab885cd2ca1a1633329e7036c125e8dba62c5
2009-11-12 19:59:44 +00:00
drh
e3365e6c37 Factor out the IN operator code generation into a subroutine. Use this
subroutine to implement both logic and branching versions of the IN operator.

FossilOrigin-Name: fcff5b7e2d059ffb8d21df57d0c9648bd876e813
2009-11-12 17:52:24 +00:00
drh
36c563a293 Factor out the code generator for BETWEEN into a subroutine.
FossilOrigin-Name: 5735f60b23460e7677b9c982a26bc13b0f4ed02b
2009-11-12 13:32:22 +00:00
drh
ae6bb9570b Generate VDBE code for the built-in COALESCE() and IFNULL() functions. This
allows unused arguments to never be evaluated, which is a performance win when
the unused argument is a subquery.

FossilOrigin-Name: 30055b257c3c65f8123cad5ac6c62c4c6ca2c900
2009-11-11 00:24:31 +00:00
drh
8677d30812 Create a new datatype "ynVar" to hold "nVar" (number of variable) values.
This is normally 16-bits can can be 32-bits if SQLITE_MAX_VARIABLE_NUMBER
is large enough.

FossilOrigin-Name: 24a4d520d540d92b611abc4eb57dc6da9be4eac6
2009-11-04 13:17:14 +00:00
shane
f639c40f77 Fix compiler warnings on MSVC build.
FossilOrigin-Name: 01c4b5b84ec7ce589e20ea66e80011f092ab32f0
2009-11-03 19:42:30 +00:00
drh
1450bc6e52 Avoid storing the result register for EXISTS and SELECT in any field of
the Expr object - simply return the register number as the return value
of the function that codes those expressions.

FossilOrigin-Name: 7253f8fad1efe6b88666f0f8740d247ff07a7640
2009-10-30 13:25:56 +00:00
drh
e05c929b78 Reduce the memory required by prepared statements that use the IN operator
with a list on the right and an INTEGER PRIMARY KEY on the left.

FossilOrigin-Name: e7984ad2f7e4be30e7198ebd6609a7f6177513e2
2009-10-29 13:48:10 +00:00
dan
937d0dea4f Add the experimental sqlite3_reoptimize() API.
FossilOrigin-Name: 9bd6f3d8864d422fe42074688b191915b27ad8ea
2009-10-15 18:35:38 +00:00
drh
6d4486ae9f Change the version number to 3.6.19. Fix a couple of incorrect testcase()
macros associated with the new IS and IS NOT operators in expr.c.

FossilOrigin-Name: e3b73394bf9c0391e997079b160eace3589415ab
2009-09-23 14:45:05 +00:00