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

1063 Commits

Author SHA1 Message Date
drh
5ef09bf918 Further simplifications to the VDBE code generation logic that flow out
of the previous check-in.

FossilOrigin-Name: 6a5dfe85b519b920ce8c842057767a8793d92236
2015-12-09 17:23:12 +00:00
drh
72ea29d7ae Changes to avoid undefined behavior in memset() and memcpy() and in the
comparisons of pointers from different allocations.  All problems are found
by analysis tools - none have been seen in the wild.

FossilOrigin-Name: 901d0b8f3b72e96ffa8e9436993a12980f5ebd51
2015-12-08 16:58:45 +00:00
drh
d797a9b5cb Changes to avoid obscure, theoretical undefined behavior. This is preventative
measures only - no actual problems observed on tested compilers.

FossilOrigin-Name: a9e819082ba19e72db03bba37edfb7702ff489a5
2015-12-07 16:43:44 +00:00
drh
1bb15fc973 Merge recent enhancements from trunk.
FossilOrigin-Name: d1a1278d7f3306536dc9cbd8fb300898f1e373e8
2015-12-02 20:40:26 +00:00
drh
3d4143a38a Do not try to eliminate No-ops at the end of VDBE program as this can cause
problems for some DISTINCT handling algorithms, and does not improve
performance.  This also fixes an assertion fault found by libFuzzer.

FossilOrigin-Name: 19d9f9ce691963310fa73ac5ff728ea8dea9d2b2
2015-11-24 00:49:44 +00:00
drh
c960dcbace Refactor the VdbeCursor object. It is now slightly smaller and faster and is
easier to understand.

FossilOrigin-Name: 9b1d174d862500a627840008ffac4c8419dc97e2
2015-11-20 19:22:01 +00:00
drh
769dc6e2a2 Merge the latest enhancements from trunk.
FossilOrigin-Name: 7d6cfc79e7e5534ebacd980479917bc528a638f7
2015-11-19 19:40:40 +00:00
drh
d797035ac7 Avoid unnecessary function prologues in the sqlite3VdbeAddOp3() routine.
FossilOrigin-Name: 7c6a19ba9b0bdb1cc0b9a9796b7c1c114944d927
2015-11-09 12:33:39 +00:00
drh
98a0e0083f Merge recent enhancements and bug fixes from trunk.
FossilOrigin-Name: 78bc42e664e9fa9ee21ad9762c369f291fcdf5db
2015-11-07 01:33:30 +00:00
drh
3adf8783b0 Avoid an unnecessary key comparison when doing an indexed lookup against an
equality constraint.

FossilOrigin-Name: d741e1ccdce96e6142e294fbdd20a0282296dcea
2015-11-06 20:22:25 +00:00
drh
f83075201f Work around a sign-extension bug in the optimizer on the HP C compiler that
comes with HP/UX.

FossilOrigin-Name: 46c36b1543d7a8156eaa866c67080526153fb10d
2015-11-06 20:13:48 +00:00
drh
c8bb430dfe A proposed patch for working around a bug in the optimizer for the HP compiler
found on HP/UX Itanium.

FossilOrigin-Name: 8a171548e4f665f03d00af6dcb46669a4a78fad5
2015-11-06 17:28:00 +00:00
drh
2ab410aa1e A different approach to handling integer/float comparisons. This seems to
work better on systems where "long double" and "double" are the same type,
but still needs refinement and testing.

FossilOrigin-Name: a3f7614b2095fbc1eca54801b2da88f85f294ec5
2015-11-06 14:59:07 +00:00
drh
8b8446fc21 Increase the precision of integer vs. floating-point comparisons.
Candidate fix for ticket [38a97a87a6e4e8].

FossilOrigin-Name: cfcaa0ff276b1936418abe72c7e0c99d90d37885
2015-11-06 01:04:41 +00:00
drh
70528d7868 The top of an index equality loop normally starts with OP_SeekGE and OP_IdxGT.
This check-in adds a flag to OP_SeekGE such that it fails immediately if
the key is not equal, then jumps over the OP_IdxGT, saving a call to the key
comparison functions.  Consider this check-in a proof-of-concept.  It needs 
improvement before going on trunk.  Some tests fail, but only because they
new use fewer key comparisons than expected (which is a good thing!).

FossilOrigin-Name: 32e31b9bc8664afcd326a1ff3892d86dc5202474
2015-11-05 20:25:09 +00:00
drh
d286b9fb7d Merge all the latest enhancements from trunk.
FossilOrigin-Name: 395a153ff7b3c7a72f3d02b6fe76d72383f4e480
2015-10-30 16:50:00 +00:00
drh
0030aaad67 Merge recent enhancements from trunk. Version now 3.9.1.
FossilOrigin-Name: 26fa091d68e89a0b6af61ba706d23a9f37e8025a
2015-10-16 20:53:57 +00:00
drh
be37c12423 Have the sqlite3VdbeSerialType() function go ahead and compute the serial
length as well, since it is always needed.  This avoids unnecessary calls
to sqlite3VdbeSerialTypeLen().

FossilOrigin-Name: 2ad72be12477b0e8e33e56a9a17e29abbd283ec1
2015-10-16 14:54:17 +00:00
drh
faf3727904 Use a lookup table to compute the content length for serial types less
than 128, for a 1.2% performance improvement.

FossilOrigin-Name: 3395724814099d28829ef6875ca1ba77d6fe7ffa
2015-10-16 14:23:42 +00:00
drh
6b86881788 Merge recent trunk enhancements.
FossilOrigin-Name: 6a513c05850949900f396c7a61accb97cc6d2af5
2015-09-03 14:48:25 +00:00
drh
163c29c5f3 Merge enhancements from trunk.
FossilOrigin-Name: 25ee3000e94d60d8c1d7b980f416dcc33eb11105
2015-09-03 14:39:33 +00:00
drh
076e85f59c Add the sqlite3VdbeLoadString() and sqlite3VdbeMultiLoad() routines to help
with code generation, especially on PRAGMAs.  Rename sqlite3VdbeAddGoto()
to just sqlite3VdbeGoto().

FossilOrigin-Name: 847387ec8e6fef283899578fb232b2c23b00ee5b
2015-09-03 13:46:12 +00:00
drh
7cc023c7fa Factor out and simplify code in pragma.c for pragmas that return a single
row with a single column that is an integer or text value.

FossilOrigin-Name: d7f4bdf594e93c848f46901637861c8eed4c34df
2015-09-03 04:28:25 +00:00
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
89a10b2d53 Merge recent trunk enhancements, include table-valued functions.
FossilOrigin-Name: e9196d566690de0e9815f8cd85be7844322b5a79
2015-08-20 23:54:25 +00:00
drh
c1bd84124b Merge recent enhancements from trunk, including table-valued expressions.
FossilOrigin-Name: b9927c876c1d4e146cb6a603d82cd2489594084d
2015-08-20 23:45:59 +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
a67a31624d Change the display of the P4 operand of CursorHint in EXPLAIN output to
function notation.

FossilOrigin-Name: bee73d429cb0e99b43fb191ac15e298d0353b135
2015-08-15 00:51:23 +00:00
drh
2f2b02785a Fix the cursor hint mechanism so that it does the right thing for indexed
lookups.

FossilOrigin-Name: 581e3d4988e98975fea5daaeb9f854c54a4976b7
2015-08-14 18:50:04 +00:00
drh
fe66352d17 Fix the CursorHint so that it includes the scan boundary constraints.
On the expression text for the CursorHint opcode, show rowid correctly.

FossilOrigin-Name: f0d428d13a787251c2ca7685fec2a91b550eefba
2015-08-14 01:03:21 +00:00
drh
f7e369070e Convert the hint expression of the CursorHint opcode into a string for
display by EXPLAIN.

FossilOrigin-Name: 206884718782331a7aaacc2c811e4e9d2effae91
2015-08-13 21:32:41 +00:00
drh
bec2476afc Merge in all the trunk changes from the previous year. This breaks the
cursor-hint mechanism, but provides a baseline for trouble-shooting.

FossilOrigin-Name: 82a7a61bc0883b1e7432548e4890791717aa1bb3
2015-08-13 20:07:13 +00:00
drh
38151adfe2 Merge trunk changes, including the addition of FTS5 and pcache1 performance
enhancements.

FossilOrigin-Name: db4cbefb8674c6cfff27c1e918741de1885c845c
2015-07-14 15:39:22 +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
59b4bd4840 Merge all the latest enhancements from trunk. This merge include FTS5
and a number of notable performance enhancements.

FossilOrigin-Name: 39936b33b0668aad81aa574d4d74c92b0ddd218a
2015-06-30 16:29:59 +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
5600329bc0 Merge all recent enhancements and fixes from trunk.
FossilOrigin-Name: 199bfb67fdf642cca6cd5d460fa4dc602b94837a
2015-06-17 18:18:51 +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
drh
ad2c1dd782 Import recent enhancements from trunk.
FossilOrigin-Name: 54bec164ebeaf62d783352b3c4d0de8845394091
2015-05-29 19:04:58 +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
adf3bf5811 Merge recent trunk changes, include the R-Tree enhancement that allows
8-byte BLOB arguments to geometry functions, and the fix for the TEXT affinity
problem that could cause corrupt indexes.

FossilOrigin-Name: 0a0de8b72ca24f287f9c84766a14e12ea4564b59
2015-05-19 22:42:23 +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
850b0d031d Merge all recent trunk enhancements and fixes into the sessions branch.
FossilOrigin-Name: b8ef1cdee307441e8d97b4bfc21f8547692eea9f
2015-04-20 01:32:53 +00:00