1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-16 23:02:26 +03:00

19158 Commits

Author SHA1 Message Date
dan
d03d3a9b74 Fix a crash in new ALTER TABLE code that could follow an OOM.
FossilOrigin-Name: 6f1f2a0a9cd75ca43b81cc325296b843ccefe6f8040da8f2e873f49928423f10
2021-06-11 12:14:58 +00:00
dan
6065686d9c Remove an unreachable branch added by the previous commit.
FossilOrigin-Name: 852ee0e91ceae090157c4ab2805530f5d7985a490ce77f54d7b148f56e466f79
2021-06-11 12:02:00 +00:00
dan
26d61e5adf Fix problems with ALTER TABLE and schemas that contain views with some recursive CTEs, or CTEs that reference other CTEs.
FossilOrigin-Name: 8b1f9a51e962cd9a5593a1ecf4da6c86e34c4f9ff96ffcea0fb421880c8836cb
2021-06-11 11:14:24 +00:00
drh
75016050f3 Improved robustness following OOM in the constant propagation optimization.
dbsqlfuzz 001a20255c0df7495c21df62a20ea5b51e22c390.

FossilOrigin-Name: 8658a64d414db6900b55281f5e67180ea74b82627199b927634a727ed28030c2
2021-06-10 14:36:23 +00:00
drh
d622855e34 Set the database connection error code for an oversize argument to
sqlite3_bind_blob64() or sqlite3_bind_text64().
[forum:/info/a636276f0d451667|Forum post a636276f0d451667] and
[forum/forumpost/33821c8db543c|33821c8db543c].

FossilOrigin-Name: 56ff58c0b8905aa10c85f1418da8d6089d23fd9a220c5cb17027d46affe05002
2021-06-09 14:45:02 +00:00
drh
9025af1603 Add an assert() to prevent the value of the SQLITE_VTABRISK macros from being
changed in a way that would break logic.

FossilOrigin-Name: 33babdb582ca712cc089165a953972096b57d1cb683954fa830df5e7befaadba
2021-06-08 12:22:24 +00:00
drh
ccf0bb49bb Avoid use of uninitialized memory while running defragmentPage() on a
corrupt database file.
dbsqlfuzz 4c45cecc0b255aaf2ea85453ccd17e814fd0b6b2

FossilOrigin-Name: 35e40d75754ec6fb93fe57c6ecbe731104e77c997d7e17ef1a22984837dfcab2
2021-06-07 13:50:36 +00:00
drh
fe972341a5 Fix an assert() in the OP_ParseSchema opcode that might fail on a corrupt
database file when running with PRAGMA writable_schema=ON.
dbsqlfuzz e7d743ca65f2767e415095f0c5a49166a0f55eea.

FossilOrigin-Name: 10801f65af495a999ef61741322ea82dc20bd92ea8e55e4016c409096f38b0d1
2021-06-07 11:50:23 +00:00
drh
9ae57841d0 Omit the unnecessary highlighting of the security implications of
SQLTIE_DIRECTONLY in the sqlite3_create_function() documentation.
No changes to code.

FossilOrigin-Name: 2aa9368b63b42ac7c700516f109edcc6098c12b850eae591afed4e51a3f41819
2021-06-07 00:41:18 +00:00
drh
06258a4260 A better fix for the problem addressed by [4eb80b0cc61526c1]. This fix
also avoids reading uninitialized variables.

FossilOrigin-Name: 1c71de43dbc68002c4a6229e7efffb019655baff67a51fe922571fe420c95835
2021-06-04 23:26:56 +00:00
drh
946b65793c Improvements to the OP_SeekScan optimization. Added the
SQLITE_TESTCTRL_TUNE test-control.

FossilOrigin-Name: 9a2ab6092d644fc3effc4ab4aca33efb2b4dd4213b2154d518a3e87eec4d3983
2021-06-04 17:47:08 +00:00
drh
abc15f1b9a Fix harmless compiler warnings.
FossilOrigin-Name: 83aca2d8704e51eeed5652b1506c6fc883c0397728cda456f229369788b8608a
2021-06-04 16:11:19 +00:00
drh
2d26cfcc4a Revamp SQLITE_TESTCTRL_TUNE to provide visibility of current turning
parameter values.

FossilOrigin-Name: 677e645e69e1f06487c26da6671fc03f0fb89a0f8e0d35712e6bdcf7279bdfc4
2021-06-04 13:40:26 +00:00
drh
f3c1256a4d Add support for SQLITE_TESTCTRL_TUNE and the ".testctrl tune ID VALUE" command
in the CLI.

FossilOrigin-Name: f1199d58b9cfdcddb83bc35544ce38299ac4ed50d7ab90d33463f6ccce526feb
2021-06-04 13:16:46 +00:00
drh
2540a7482a Merge recent trunk enchancements into the seekscan-improvements branch.
FossilOrigin-Name: d9e85fe80cdd3d798a583a5f99148235d0c3f39adfabbc661615893c387e6e45
2021-06-04 12:29:22 +00:00
dan
19e4eefbca Fix a case where combining row-value UPDATE FROM syntax with window functions over aggregates can cause an error.
FossilOrigin-Name: 4a587c3492faa99490fd67ca1de9fceafcdc12d220f42817791923be258b73f1
2021-06-03 18:56:42 +00:00
drh
a6df0e693f Fix the truncate optimization so that PRAGMA count_changes and changes()
return correct values even for a WITHOUT ROWID table.
[forum:/forumpost/07dedbf9a1|Forum post 07dedbf9a1].

FossilOrigin-Name: 820ae3b117c2d8c117c0c5a4e440a7d06886772516c7fc0a84606388f91be195
2021-06-03 18:51:51 +00:00
drh
6468990e7b Add the regexp() and regexpi() extension functions to the CLI.
FossilOrigin-Name: 5d4535bfb603d7c8229ef60f99666459f2997e02e186bc1e52b7ec1320251d67
2021-06-03 13:51:31 +00:00
drh
3074faabed Add an optimization control bit to disable the OP_SeekScan optimization.
FossilOrigin-Name: f674c41e5cbbb08ffc3cc00ab449229b672054c872e209337f12e7eacb531fe5
2021-06-02 19:28:07 +00:00
drh
9966439879 Fix an ALWAYS which can be false.
FossilOrigin-Name: a87f8ecd6db11ea40a15314b875fc78289c19ab2dec6f738b4bf37f4aafa7bbd
2021-06-02 18:50:39 +00:00
drh
e847164f55 Tighten assert() restrictions on the OP_SeekScan opcode.
FossilOrigin-Name: dbc33d3ae30de5427a4351824a11026145f778fad95bd0b825bd0a4b63059677
2021-06-02 17:32:51 +00:00
drh
eda790d28b Never use WHERE_IN_SEEKSCAN for the 2nd or subsequent IN operator.
FossilOrigin-Name: d0b98619082038ed451912bcdf56568835a8577989a25cacf25591f2366d4f52
2021-06-02 17:14:50 +00:00
drh
b034a24140 This is an attempt to address the OP_SeekScan performance issue identified by
[forum:/forumpost/b4fcb8a598|forum post b4fcb8a598].

FossilOrigin-Name: d58efb3f21a4150b8136197e43837c7b646c42d492a7c24ddc7591dba415a2c8
2021-06-02 12:44:26 +00:00
dan
b56a09079e Fix a problem with running ALTER TABLE against schemas that contain compound SELECT statements with ORDER BY clauses containing one or more references to the second or subsequent component SELECT statements.
FossilOrigin-Name: 587a3044468a40707c714d013cb766d8a4d9eb13bb20871846a0e8c34bea8cf4
2021-06-01 15:37:14 +00:00
drh
d65b7e36ec Do not confuse the ">" operator with IS NOT NULL when checking to see if
a partial index is usable.
[forum:/forumpost/d813704d7c|Forum post d813704d7c].

FossilOrigin-Name: 8cc23931d61b7d78521acce93fc2603649c5813c7a0869cb2c1bde2c8c4e51b4
2021-05-29 23:07:59 +00:00
drh
d36bcec9ad Fix a subtle error in an assert().
dbsqlfuzz eefbd0215c0c1b4bcc32b8141b48b35f7b431300

FossilOrigin-Name: a5ec81eb49e55fc03591666f336c09e5469785c8680f253ec3cc5366ac2fa45a
2021-05-29 21:50:05 +00:00
drh
e9de65201c Make a deep copy of the result of a subquery in case the subquery is
reused.  Fix for the problem reported by
[forum:/forumpost/28216b36ac|forum post 28216b36ac] and introduced by
check-in [f30fb19ff763a7cb].  Further changes to try to optimize the new
OP_Copy opcode back into either OP_SCopy or OP_Move will be attempted
separately.  A test case will be in TH3.

FossilOrigin-Name: c9f0b9cb0aef107265435e22c164dd3c974eadfd00abf7cfd4fc7ec95c0dd7d0
2021-05-28 12:48:31 +00:00
drh
342cb33b23 Improved comment on the prpagateConstants() routine. No changes to executable
code.

FossilOrigin-Name: d61a875df48d8baab3ada0174c8e0312a9268bbd11bf104b4385eff9e2744266
2021-05-27 14:09:01 +00:00
drh
48f4f27cfb Remove a NEVER that is reachable following OOM in writable_schema=ON mode
with a corrupt schema.

FossilOrigin-Name: 4eb80b0cc61526c1ff7478b1b855b29fa4326daee61facd1d85e4297bb32ac9d
2021-05-27 10:23:16 +00:00
drh
7d11e647ad Improvements to the constant-propagation optimization in order to better
deal with unusual affinities.  See
[forum:/forumpost/6a06202608|forum post 6a06202608] for more detail.

FossilOrigin-Name: 9be208a6d70582c6808abe6e016ab9cd8d10f0deefb8c7a8c0543372cca15b12
2021-05-26 23:10:19 +00:00
drh
a8ed515400 Minor optimization to opcode comparison logic in the fixes to
the constant-propagation optimization on this branch.

FossilOrigin-Name: f17dec40a0ccc044bd32e035fc10797552329af242408a45f36125ed8d2ef088
2021-05-26 19:52:21 +00:00
dan
40b82f9dc6 Avoid assuming that an expression like "x=10" in a WHERE clause implies that CASE(x AS TEXT)=='10'.
FossilOrigin-Name: 389ec669f416c74d651e25572f6e007c2a62ddd4027524f553107b06db5c55eb
2021-05-26 18:51:57 +00:00
drh
14c4d42874 Take care that the code is not generated for the same Select object more
than once, as transformations that apply during the first pass might
cause problems for the second pass.
dbsqlfuzz 836b625cd8a41809ef80fc7ebaa6554357bcb463.

FossilOrigin-Name: f30fb19ff763a7cbe768ea49954704e14d6400f69bb4257c9c890e1564e14835
2021-05-26 18:46:51 +00:00
dan
151446e793 Update an assert() in wherecode.c that might fail following an unrelated SQL error.
FossilOrigin-Name: 3e2c36a8272ab3c1777638c0ed8222e7ff04657fe1c40f74a63b99a5a90258cc
2021-05-26 14:32:33 +00:00
dan
78a9d7551c Enhance the shell tool ".dump PATTERN" command so that it dumps the contents of shadow tables when a virtual table is identified by the PATTERN.
FossilOrigin-Name: b0bc5ab9ceec496ac260ccfd53b51a2b53a81576fbe04c97b99f6705b063c59f
2021-05-25 11:39:14 +00:00
dan
c00727ab58 Fix a problem in the in-memory journal code that could occasionally lead to a segfault when a sub-transaction that modified zero pages was committed.
FossilOrigin-Name: 17960165f5840cab45b7a8bb02779ebfb321c68f33ec6da9ab14063ccd134fa4
2021-05-24 14:35:19 +00:00
drh
bf7f3a005e Fix the TreeView module so that it works with the TK_ERROR exprssion.
Also fix an assert() that was failing due to the recent TK_ERROR addition.

FossilOrigin-Name: dd56fbe0cfb0f7848190ce097b378321dd25ae509c7edf93682b091014824fc6
2021-05-24 11:35:16 +00:00
drh
0542812726 Additional defenses (above and beyond [b986600520696b0c]) to prevent an
invalid subquery from causing problems downstream.  If an error is found
while analyzing a subquery expression, change the expression to TK_ERROR
so inhibit further processing on that expression.
dbsqlfuzz cf624b8c0484c66e0f552bf6475e3e3f2c22b24e.

FossilOrigin-Name: 0be6b6c9f7c562e764792a4a5eb53ed11b230174b19361f7cd7778c743314bbd
2021-05-24 00:17:04 +00:00
drh
7cc73b399e Do not push a WITH clause onto the processing stack if prior errors have
occurred.  dbsqlfuzz 6b7a144674e215f06ddfeb9042c873d9ee956ac0.

FossilOrigin-Name: c2066dde53b9872dbb991e27419dd031791c942fe23826556f52efbd66c51662
2021-05-23 17:47:04 +00:00
drh
5e1a7ded4d Do not invoke sqlite3ExprAffinity() after a syntax error that might have
left the tree in an inconsistent state.  See also [e8a1515b44380cc5] and
[forum:/forumpost/7e484e225c|forum post 7e484e225c].

FossilOrigin-Name: b986600520696b0c91c4ccc6aff1b698391b4bcaf8a3ea436be1967883faa2fe
2021-05-22 11:23:20 +00:00
drh
93c8139c1a If there are errors in a nested CTE, be sure to abandon processing. Do not
continue since the parse tree may have been left in a goofy state which could
cause use-after-free and segfaults.
See [forum:/forumpost/aa4a7a3980|forum post aa4a7a3980] for an example.

FossilOrigin-Name: 94225d693932eb0b5d7799d40513afbd31ed40e1e156675eb92ad7216f1ff20f
2021-05-21 21:49:07 +00:00
dan
acef1abda2 Fix a problem with SQLITE_MAX_MEMORY in malloc.c.
FossilOrigin-Name: c18dbe2f389f4ba7b219b7995d4f7009d1bc249ef8f93a30b262c6d2c008319d
2021-05-21 16:41:22 +00:00
drh
ec2f689b21 Fix a faulty assert() statement in sqlite3ExprListDup(). This is a continuation
of the fix at [59812e7ef705226c].

FossilOrigin-Name: 240f7494bfa3e0806ae2f971e78039c62a419de647cb9e807309f90e1d2a536d
2021-05-20 23:25:28 +00:00
dan
90bc36fb30 Ensure that objects within view definitions are not incorrectly resolved to CTEs that are part of the statement using the view.
FossilOrigin-Name: f7dcc4b5197c6413be31384b390bb98a737d3f9edb7964433448c3b90b35a436
2021-05-20 17:15:06 +00:00
dan
a8f249f1e7 Ensure the required b-tree mutexes are held for "CREATE TABLE IF NOT EXISTS" and "DROP TABLE IF EXISTS" statements on attached databases.
FossilOrigin-Name: 67bde01614edd944b769ab28488bac1dbbf17d88beee62ca7f1e45681aa3d402
2021-05-20 11:42:51 +00:00
drh
cd1499f47b Replace [0f0959c6f95046e8] with a new and better solution that also fixes the
CTE name resolution problem described in
[forum:/forumpost/8590e3f6dc|forum post 8590e3f6dc].
Test cases for both problems added.

FossilOrigin-Name: 5614279daff5007d6e047c5c1b3cc82ba80a5c91c529525b0fe68b79ee82dd2c
2021-05-20 00:44:04 +00:00
drh
5da5b71435 Fixes and improvements to PRAGMA compile_options.
FossilOrigin-Name: 34579549a3bc1c2cfbf47a4770c1d7abc97869ba57bcd3ab1515765ca505ea05
2021-05-20 00:10:24 +00:00
drh
1168f81092 When constructing the synthensized SELECT statement that is used to choose
the rows in an UPDATE FROM, make sure the first table is really the table
being updated, and not some common-table expression that happens to have the
same name.  [forum:/forumpost/a274248080|forum post a274248080].  More
changes associated with CTE name resolution are pending.

FossilOrigin-Name: 0f0959c6f95046e8e7887716e0a7de95da18d1e926ab1f919527083a56541db5
2021-05-19 21:55:56 +00:00
larrybr
14e250ac16 Incorporate ..._DESERIALIZE revision.
FossilOrigin-Name: b70587cca9e4f0116621e27362186e9329bcea8016c6565cd3ec5a9bf4a99d46
2021-05-19 20:01:53 +00:00
larrybr
4f878f33a9 merge from trunk
FossilOrigin-Name: 19ffe3cfe278a4046f32df56f75080c2377e4c44ad40a02d39db8e7701526204
2021-05-19 19:55:10 +00:00