Commit Graph

22471 Commits

Author SHA1 Message Date
drh
351ae772a3 Ensure that the ALTER TABLE statements return 0 for
sqlite3_column_count().

FossilOrigin-Name: 29c1932a47cd46c2585ebbf937c03544a8a355014776129662789e15db9ed4de
2021-02-15 13:17:19 +00:00
dan
863fd4905c Fix an error in the test case fix in [ecd71203].
FossilOrigin-Name: 5411bfa41ea9a492ca1f567327d8e0a1b3db047292fec1753bfef8a157cf8c1d
2021-02-15 11:14:53 +00:00
drh
329eaaf0b3 Fix incorrect test name labels in the select1.test script.
FossilOrigin-Name: 179c79ea0deb0f5adaa8d369cfcad06d959a9cc18a8a41e01ef013b2d90acd61
2021-02-13 18:14:15 +00:00
drh
8794c68a35 Avoid manifesting a CTE (or other view) multiple times when it is possible to
reuse the first manifestation.

FossilOrigin-Name: 9692f510803c9b9725abb687d7c10fbc0d5ed784479ec6f3fcc55925a87fe16d
2021-02-13 16:39:24 +00:00
dan
e8f1490f55 Fix a problem in the unreleased union-all flattening code.
FossilOrigin-Name: e4f8a79fd8b3be9bf8add5f5e1c66bc2fe78da4e50ea500ab0b8370d30e31ba5
2021-02-13 14:26:25 +00:00
dan
8b7e93adbc Fix a test case to account for the fact that different versions of OpenBSD behave differently when a program tries to read() from a file-descriptor open on a directory.
FossilOrigin-Name: ecd712032f56a20d7df2bcf89b0d3b8d91dc72c552e27f0a4b23980bd49747b0
2021-02-12 21:22:01 +00:00
dan
23ed8109b6 Ensure RBU tests are run as part of release testing.
FossilOrigin-Name: a18dc08bafefd849e640086b18c41e06361d2e09d7dd2e9af4a394dc543e598b
2021-02-12 11:37:13 +00:00
dan
40803caa1d Fix a longstanding problem causing an RBU vacuum to omit releasing some locks before finishing.
FossilOrigin-Name: 66c07a07b21e46529780eec3c82a84c494d586f8b7ed80b78d358e23b80458c7
2021-02-10 20:00:40 +00:00
dan
b9edded0fd Remove an assert() added by the previous commit that is sometimes false.
FossilOrigin-Name: fb36ac4dc60ccc6c5fba3f23e13fcab985f27ebef0527c929806cda5f9d3660c
2021-02-10 19:49:35 +00:00
dan
513c9a1ff3 Fix a longstanding problem causing an RBU vacuum to omit releasing some locks before finishing.
FossilOrigin-Name: cb5bdf82fe0f90922dc34202be9d0aa34d899afff4200456623765da2877ca41
2021-02-10 19:40:47 +00:00
dan
8737d46ea1 In RBU, avoid passing VFS xShmLock calls through to the underlying VFS in cases where xShmMap calls may not be. This fixes a bad interaction with ZipVFS.
FossilOrigin-Name: bd1e9e0a4c0e07901ef59fe3b7e6f7b9cc66ccfcd5192f576e1620820891de99
2021-02-10 17:31:50 +00:00
drh
82ab4f6b1a Correctly detect correlated subqueries when resolving names in RETURNING
clauses.

FossilOrigin-Name: b43cfa04922a401442b9d1708e3e4a88d3cfa2c591f9a6b253d99ba83f4b280a
2021-02-08 15:56:01 +00:00
drh
d510197276 Improved name resolution for references to a table begin modified from
within a subquery in the RETURNING clause.

FossilOrigin-Name: 799d205bfa7945ee4a92dfec5fbf90a00b9a535e3171aab2ec46404f7efb0f78
2021-02-08 13:41:17 +00:00
drh
e1c9a4ebf9 Do not allow RETURNING in the DML statements of a trigger.
FossilOrigin-Name: 7a8fe6463a9728bc4e34465688a059afb74f3c373cde8fdf570d5d148fdde04d
2021-02-07 23:28:20 +00:00
drh
8729642112 Fix harmless compiler warnings.
FossilOrigin-Name: 5f8bf99579e6663fc701cdc94f685584a86398c4687e25e7e241de755398f17d
2021-02-07 12:59:43 +00:00
drh
5f323787bd Remove an ALWAYS() and NEVER() in the authorizer that become reachable
as of [078dbff04a95a001].  Test case for coverage in TH3.

FossilOrigin-Name: b469327e2949352325d3db815bd4782f9734239c378f08afd2f00ffa54bef924
2021-02-06 14:56:30 +00:00
drh
8873aea390 Fix the OSSFuzz-discovered shift problem from two days ago. This patch was
omitted from [078dbff04a95a001] apparently because I made the edit to
"sqlite3.c" rather than "resolve.c" where it belongs.

FossilOrigin-Name: 864772ffec4e91d8d73f9b97e6e1d7bd4e0537de19d11d30aed7eedd5b7d394a
2021-02-06 14:37:36 +00:00
drh
29f6a365cc Remove unreachable code. Fix a shift UB problem introduced yesterday
and discovered by OSSFuzz.

FossilOrigin-Name: 078dbff04a95a001bbd8690ab08038fbb5506899df8290991b53fd1122a4c30c
2021-02-05 17:34:47 +00:00
drh
70bd2124ed Change the RETURNING algorithm so that outputs accumulate in an ephemeral
table until all modifications have been completed, and only then do results
start being returned.  This should help prevent problems with interleaved
sqlite3_step() calls on two separate DML statements.  It also seems to be
closer to how PostgreSQL works, which might prevent compatibility problems.

FossilOrigin-Name: c4615eb28c3dd2d473daf104f32e60d02799f3158d9d275a899c39129cc71401
2021-02-04 23:20:13 +00:00
drh
7dec804d42 Remove dead code. Fix RETURNING for INSERT into a virtual table.
FossilOrigin-Name: dbfa38699c87ab4bf390666e411dda8d375c7b53b9b4fb131adacbf575867a72
2021-02-04 22:59:19 +00:00
drh
e1db9343d5 Fix an issue with RETURNING from UPSERT.
FossilOrigin-Name: 757b74ba0fd64634a365bd73955181191767ad8816a33a362e32ece250299a51
2021-02-04 21:17:12 +00:00
drh
552562c48f Snapshot. New design appears to work on a simple test case.
FossilOrigin-Name: 8a65fbeecf3597e30853c5f0ccd9b8b46c508854fa521e58e0db279deebca7d4
2021-02-04 20:52:20 +00:00
drh
381bdacc8f Preliminary changes for a new implementation of RETURNING that captures all
results in a buffer and plays them all back after the DML statement
completes.  This avoids problems with interleaved DML statements.
This particular check-in is a non-functional work in progress.

FossilOrigin-Name: 04b77d63216ce11b4e797946953bcde504fc005807c7a5ac757fbf47d78698dc
2021-02-04 17:29:04 +00:00
drh
8ab79d6135 Add NEVER() to a branch that check-in [5d54d9fd40638138] apparently made
unreachable.

FossilOrigin-Name: 5c8e6296aa9f69a092364524b716ba894f113f7f1e6024b9a2eaa01c239e65c1
2021-02-04 13:52:34 +00:00
drh
02c4aa39e7 Performance optimization in sqlite3FinishCoding().
FossilOrigin-Name: 0f34f241d37cc4f31dc657a6fc33815fa5e24298487121cb27c29118524b8ee7
2021-02-04 13:44:42 +00:00
mistachkin
8c333cfc0d Corrections to the 'filepath_normalize' test suite helper procedure.
FossilOrigin-Name: 32f4d04470bf953b08eea285543f16e03de13d5448c1ebccbba1578ca3b5363e
2021-02-03 19:38:40 +00:00
drh
17b74817c0 Change the name of Vdbe.magic to Vdbe.iVdbeMagic to disambiguate with
sqlite3.magic.

FossilOrigin-Name: 6b29e549bb34933bfd0758e31085e65dcc0f75446c478fc775d96cf01c22cf43
2021-02-03 18:32:25 +00:00
dan
7937f63220 Avoid doing any foreign-key constraint related processing for an UPDATE statement that does not modify any columns that are part of FK constraints, even if the table has a self-referencing FK.
FossilOrigin-Name: 7f3b036e730153ac22933b03a52d4ec3978c9ecab1399d8cc79fe533893321e3
2021-02-03 14:20:56 +00:00
drh
c5eb176a09 Fix a harmless compiler warning.
FossilOrigin-Name: 1eb69c64ed4a11601698000573c507684bc4b0366336ba0748ebd661644d0902
2021-02-03 13:20:12 +00:00
drh
cd39cda00c Add support for the RETURNING clause following PostgreSQL syntax.
FossilOrigin-Name: 416c898bfb8ff9639ffbaefcfb47fce3782763af1fc67969fa91c5f01a336676
2021-02-03 13:08:09 +00:00
drh
78197e0f8b Fix an assert() that might be off-by-one in the case of a prior
errors in the parse.

FossilOrigin-Name: 06b15b17be38c804dd2641d8616a2a7bd396d2eb9901a0fbf94edd8bd508cf9c
2021-02-03 12:35:51 +00:00
drh
2aa41c82da Modify the SQLITE_DBCONFIG_ENABLE_TRIGGER setting so that it only disables
main-schema triggers and allows TEMP trigger to continue operating.  This is
safe, since only the application (not an attacker) can add TEMP triggers.
It will also all us to disengage SQLITE_DBCONFIG_ENABLE_TRIGGER on Fossil
databases since Fossil has no main-schema triggers but does use TEMP triggers.

FossilOrigin-Name: a10c5a2503ff2998f6ee40f721aab8c9579052e535dc141bd57d10551eaea387
2021-02-03 00:55:34 +00:00
drh
47600083f1 Load enhancements from trunk into the returning branch.
FossilOrigin-Name: b84c7f60c2e1e7debf9f50622087f87d60c6870061d61e14e59cc1ba0775ee92
2021-02-03 00:05:57 +00:00
drh
cb83dc9e95 Do not allow aggregates in a RETURNING clause. Fix a memory leak that
occurs when window functions are used in a RETURNING clause.

FossilOrigin-Name: 2e9bd94b9ad37c7e4123b7324f2fe42d3609a65af449eb8a0064057647709a73
2021-02-02 20:46:11 +00:00
dan
e0d2096afa Modify the sessions extension to use more efficient SQL when applying a changeset or patchset.
FossilOrigin-Name: e4ccfac09b6fe8cc3aec29d10f4e4c83097964f29882343db52ed91f6f0dde1c
2021-02-02 20:41:13 +00:00
drh
709dd13927 Report an error if RETURNING is used for DELETE or UPDATE of a virtual table.
FossilOrigin-Name: bd5dee8425327fde0429043ce325b910f1b7951988d9a448a8eeeb713a46bc81
2021-02-02 12:01:22 +00:00
drh
c9be863098 Allow the RETURNING trigger to exist for virtual tables.
FossilOrigin-Name: 2f244ab4a2ba2bdb608cf44ef02e00738ad58c10a76d9e4222dc843a17103d92
2021-02-02 00:16:15 +00:00
drh
d33d3a2ba7 Add a few test cases for RETURNING together with UPDATE/DELETE LIMIT.
FossilOrigin-Name: 7611c77d6baa84086ff18cbd045127fd682c6d5c434af5404e34fbe631fedfe1
2021-02-01 21:26:09 +00:00
drh
9e673ace5b Improved corrupt database detection in balance_nonroot().
FossilOrigin-Name: 5d54d9fd406381383afdf10612bfd590afc4142215d9bca09e227e3aa5baa102
2021-02-01 12:39:50 +00:00
drh
7baf3d411b Modify RETURNING so that it does not return changes implemented by
cascading foreign keys or by triggers.

FossilOrigin-Name: 6e62470a737cbde7f3fdcd027b98eb0b3dd11d063c63501d3c18448e93f5959f
2021-02-01 01:57:55 +00:00
drh
9407b6ef29 Mark an unreachable branch as ALWAYS().
FossilOrigin-Name: cb8b797a64f65fca01c5faaeb30cbe4a53b56b81e696d1b62a90362d7ef8f924
2021-01-31 16:45:10 +00:00
drh
18e5607211 New opcode OP_ChngCntRow used to output the result of PRAGMA change_count.
Only this new opcode, and not OP_ResultRow, checks for foreign key errors.
Faster performance, and now also works with RETURNING.

FossilOrigin-Name: 154fc2b15465c7c92a1af0a93851421aec42a81bab54840a9701f2c78068e14e
2021-01-31 15:50:36 +00:00
drh
662fe79647 When setting the number of result columns in a RETURNING trigger, be sure
to set that value in the top-level bytecode program, not in the immediate
caller of the trigger.

FossilOrigin-Name: 1f1ce7ceb9807d22efea496f33908040ee196a31cd192f27ec0fb3e23afb729c
2021-01-31 12:41:20 +00:00
drh
28828c550f Improved comments on the new code.
FossilOrigin-Name: a38f0c1d7c1d7635732ac370d8fbc7e6a2005378e4621da7bc4f51a2f99912d1
2021-01-30 21:55:38 +00:00
drh
1832f2921d Add an ALWAYS() to an unreachable branch.
FossilOrigin-Name: 6bb6de42b62acd35ade6c95a11bb4c9b35e7e9a24620731ae36364c4d5c3bc31
2021-01-30 16:16:42 +00:00
drh
a8a64a078f Chagne the OP_ResultRow opcode so that it does not cancel
pending statement transactions.

FossilOrigin-Name: fea91e3a511b14dafcc4da92c59188f927ec60ed91441335183da6b4e7866c1b
2021-01-30 14:17:18 +00:00
drh
0166df0bda Fix a obsolete assert() in the bytecode engine. Improved OOM detection
in sqlite3AddReturning().

FossilOrigin-Name: 138b10d54a83e1e7d5b3cdbe593a5073b05e632d1823e1b74d85835435b9ee3d
2021-01-30 12:07:32 +00:00
drh
cf4108bbc6 Fix handling of an OOM condition in sqlite3AddReturning().
FossilOrigin-Name: 52204cd768f115d13249ff0e3a252b716620f7ad16a6962e1192a09137a78596
2021-01-30 03:06:19 +00:00
drh
658f0a3679 Fix a memory deallocation problem that comes up when doing a RETURNING query
on a corrupt database.  I think I fixed this before, but it got unfixed with
stale editor content.

FossilOrigin-Name: 02b1415efb7d9849499afe4e9dbf7e470484bf144d6ca3d28fdc38fc0ac10afa
2021-01-30 02:43:26 +00:00
drh
343256b9b0 Another attempt to get trigger selection correct for RETURNING triggers.
FossilOrigin-Name: 1b8ed52275a54800df90682d694b482f55f26c6c4a420659f9a3b7bfc61e8abe
2021-01-30 02:34:47 +00:00