Commit Graph

22894 Commits

Author SHA1 Message Date
dan
3d691fd9ff Allow aggregate sub-selects within ORDER BY and PARTITION BY clauses of window frame definitions.
FossilOrigin-Name: 3daab94977af5e8a95690acc555540311403d890a3261a9757c633fcaaf428a9
2021-05-19 14:49:51 +00:00
drh
9088186bfb Improved column name and column type determination for the RETURNING clause.
FossilOrigin-Name: 699c33990a9438f28673ecf34f1e521d1af0b01c6ee30a608c0c91d2d593590e
2021-05-19 12:17:03 +00:00
larrybr
99bd552503 Cure some TCL test failures and narrow an object scope.
FossilOrigin-Name: 1155696c700862de1a8b1318bc41cd5cd01dec1af2c7720d8ef1e5c3321c425d
2021-05-19 02:33:42 +00:00
drh
93ffb50fcd In the MULTI-INDEX OR query plan, code for sub-expressions can sometimes be
generated twice.  But for some subqueries, generating code off of the same
tree twice causes problems.  So now MULTI-INDEX OR makes a copy of the
sub-expressions it uses to avoid code-generating them more than once.
dbsqlfuzz 9ebd2140e7206ff724e665f172faea28af801635.

FossilOrigin-Name: 4a55f72542c8bcc80253aa77043314cecb29d73cb4f51aa80f7811e86cc8ef68
2021-05-18 19:10:10 +00:00
drh
e74ca517b4 Improved comments on the generated opcodes.h file.
FossilOrigin-Name: f2a17f1fad08779486e4d50d0d9277c7f87a9558a53af1a68aa5fe2ec30e820e
2021-05-18 12:36:35 +00:00
drh
8ed1da195a Add a CORRUPT_DB term to an assert() added earlier today.
FossilOrigin-Name: 304739d2382446e7b698d67377679168e46f0a19bb0794fdf22d0a0a84a8cbcc
2021-05-18 00:52:06 +00:00
drh
904e48eb89 Fix harmless compiler warnings.
FossilOrigin-Name: ace12a3912a4fdc2f0e741361ec705652a11b6f5e3548d54bd6f273671ba1e09
2021-05-17 17:14:38 +00:00
drh
8546497383 Enhance the integer-comparison optimization on the OP_Eq and similar
opcodes so that it avoids a lot of useless work.

FossilOrigin-Name: 4221f41af9df90da4183d45d0edfae19b4f7095ec35a203c8dfd2712799e3839
2021-05-17 16:54:52 +00:00
dan
be12083bc7 Fix problems with refering to CTEs from within sub-selects in PARTITION BY or ORDER BY clauses of window frame definitions. Also a problem with renaming a column when the schema contains a trigger containing a correlated sub-select within a window frames PARTITION BY or ORDER BY clause.
FossilOrigin-Name: 4c6cd54a8db78e5535912e76856bed4f797261aaca4248c69d2e2452194de297
2021-05-17 16:20:41 +00:00
drh
ba39ca4058 When deleting an SQL function that does not exist, return without doing
anything at all rather than creating a tombstone function.  In this way,
function deletes that happen inside virtual-table destructors that are run
when a database connection is closing do not create new tombstones in the
function table after the function table has already been purged.
[forum:/forumpost/726219164b|forum post 726219164b].

FossilOrigin-Name: 391c73132c80df944fb49a17d8fe78203c54ac48f968ee9dd9dd8c769c0b4b10
2021-05-17 13:11:24 +00:00
drh
9430506df0 Performance improvement in sqlite3TableLock().
FossilOrigin-Name: 0d77e371c47107f67550e9bedfd26808fcfd84c7473f94b6053f75f0e3463c73
2021-05-17 11:19:32 +00:00
drh
2454e4a901 Performance optimization in the memory allocation of allocateCursor.
FossilOrigin-Name: 9d16323d14370b737399eb52b69b70cc614f78fb8a1e93f21a348c34a30dd456
2021-05-15 19:36:36 +00:00
drh
86c779fe42 Performance optimization to the clearCell() routine inside of btree.
FossilOrigin-Name: c4e02619a4dc8b07f658e7c88011991a086eb1e760d920b9024a11437daaabfd
2021-05-15 13:08:44 +00:00
drh
49bb56e9b0 Small performance improvement for sqlite3BtreeInsert().
FossilOrigin-Name: 4ae64484c57740333322cebd713b50b01a5a5838d41c65f67e26d65769770789
2021-05-14 20:01:36 +00:00
drh
6a9595a76b Avoid adding superfluous virtual WHERE clause terms that might arise due
to the constant propagation optimization.

FossilOrigin-Name: cf63abbe559d04f993f99a37d41ba4a97c0261094f1d4cc05cfa23b1e11731f5
2021-05-14 15:37:00 +00:00
drh
b775c97682 Attempt the [/info/f4229707ac08d66c|constant propagation optimization] on any
WHERE clause that has a top-level AND operator, even if the query is not
a join.  This is an attempt to partially address the concern raised in
[forum:/forumpost/830d37b928|forum post 830d37b928].

FossilOrigin-Name: e994c9f29f7a561dd5f30573865b0f793fb1388af09a2afb9b1a5b037ea52f89
2021-05-14 14:26:57 +00:00
drh
11c87895e0 Fix an over-length source code comment in whereexpr.c. No logic changes.
FossilOrigin-Name: af5eb902e7b13f50a8890098b85ae64a9d2ff4f122f3ab46ddb2c048b5c846a0
2021-05-14 13:32:07 +00:00
drh
31da7be9f2 Modify the sqlite3_stmt_readonly() interface so that it returns false for
CREATE TABLE IF NOT EXISTS statements even if the table already exists and
the statement is really a read-only no-op.  Likewise for DROP TABLE, 
CREATE INDEX, and DROP INDEX.  Update the documentation for
sqlite3_stmt_readonly() to reflect this new behavior.

FossilOrigin-Name: cf8eb465974e596a13df56f3efbc98e098e7b74de9af4fde9ad58312db9750e4
2021-05-13 18:24:22 +00:00
drh
756748ea86 The content columns of the index-btree that implements a WITHOUT ROWID
table are not ordered and so the query planner should not assume they
are ordered.  Fix for the issue identified by
[forum:/forumpost/6c8960f545|forum post 6c8960f545].

FossilOrigin-Name: c21bc5a2353e660f2acf5ed916921a4ee416910d0b3f2deb512a05c54138d1c0
2021-05-13 13:43:40 +00:00
drh
7ffb16b495 Further simplification of the reverse-order scan logic of the previous
check-in.

FossilOrigin-Name: b2b0e23ba885f22c88b03492e42c3cd1cbd59289e452263951bb757a871699f0
2021-05-12 22:15:44 +00:00
drh
0564cc2601 Fix the query plan for an indexed lookup on a WITHOUT ROWID table with
a DESC primary key when the primary key is constrained by an inequality.
See [forum:/forumpost/8988341615|forum post 8988341615]. Test cases in TH3.

FossilOrigin-Name: f65c929bf189cf5ca5f1cacdbbb8eec014c9960f767b135023bd2323cd26f279
2021-05-12 22:02:14 +00:00
drh
52d1407891 Fix a race condition that can lead to deadlock in the memdb VFS if one
thread is trying to open an existing database at the same moment that
another thread that is the only prior user of that database is trying to
close it.

FossilOrigin-Name: b635375dbe22bd31c437ca574eb0c014c0b045de6cc0816c32d2ceceff9191fb
2021-05-12 15:39:02 +00:00
drh
85ffcae177 Add the new threadtest5 test program for stressing multiple database
connections in the same process hammering on a single database.
Primarily designed to test memdb, but works on any database.

FossilOrigin-Name: 8db1c06958b8e1691440d4fd392648b74a1940b721852dabd315005efad520fc
2021-05-12 14:17:20 +00:00
drh
277ae64103 Enhance the memdb VFS so that it is able to share databases among multiple
database connections in the same process, as long as the database filename
begins with "/".  This provides a way for threads to share an in-memory
database without the use of shared-cache mode.

FossilOrigin-Name: 533fffc4a39b01c3aba75bd3271fd6ccd9516d9681ed04adbe19bd7de03f4c16
2021-05-12 11:55:59 +00:00
drh
2d344f944e Respond correctly to OOM during mutex allocation.
FossilOrigin-Name: 98dae595d861941bb0bcd12126ee02492587c466e6da579a58b5dc4a4d655917
2021-05-12 02:52:20 +00:00
drh
483051c9b6 Mark an unreachable branch as NEVER().
FossilOrigin-Name: 6c20d9d4b7c7986e8404142974a91dce7514ca574ee52ed5d036367aad396689
2021-05-12 02:09:01 +00:00
drh
f71d6fa9db Fix a NEVER() that can sometimes be true.
FossilOrigin-Name: 8f9f1cbc4468d07d693b418be4d89771fd240ee4af34395d7da5b7709fe88f37
2021-05-11 11:40:22 +00:00
drh
ccb897c70a Fix a NEVER() that can sometimes be true.
dbsqlfuzz 9a86fb3830977e216fde061bfbe1c1e5c2e9bfc4

FossilOrigin-Name: f39666e64d6d32420170c54f874d8314eb8c6f91df625f7b28f9ccffb9474dc0
2021-05-11 10:47:41 +00:00
drh
2f4d0ec392 Enhance the memdb VFS to provide the ability to share a single database
among multiple database connections.

FossilOrigin-Name: 0617c66ac213d406a9a21580227a57542d7f21c8750c854f549ab818d7a936bc
2021-05-10 23:48:46 +00:00
drh
8d889afc0d Enable the sqlite3_serialize() and sqlite3_deserialize() interfaces by
default.  Omit the SQLITE_ENABLE_DESERIALIZE option and replace it with
the SQLITE_OMIT_DESERIALIZE option.

FossilOrigin-Name: 6df3b03e00b1143be8fed3a39a58ce81063020275aa1ac13d87c84f1ceda6e27
2021-05-08 17:18:23 +00:00
drh
d10c3ca3f7 Fix help-text typo in the CLI.
FossilOrigin-Name: 560753148a16a0032477e379af6f62d9357f69847f351cc9db6021ce1b5594ea
2021-05-08 11:57:35 +00:00
drh
4752bbd872 Detect misuse of aggregate functions in the ORDER BY clause of a query
even if the query also contains window functions.

FossilOrigin-Name: 0d11d777c8d368f0b6e9faf3afccf7da1b041d303a68782e43aebd713aaecf51
2021-05-07 15:46:36 +00:00
dan
01ec691979 Fixes for cksmvfs and rbu so that they work together.
FossilOrigin-Name: f35f6972cdcf16915cc37908b65a3780742a1f75f65e974714b16e86f0c9e3f0
2021-05-06 20:47:49 +00:00
drh
e31cba5675 Remove an assert() in FTS5 that can (rarely) be false in the event of an
OOM while processing a corrupt database file.

FossilOrigin-Name: 5f12f89154843e83b1d69ea1652e881d583aa329df732af72dd59029cd7eb577
2021-05-06 13:45:37 +00:00
drh
c3c23f346c Improved detection of oversized cells in balance_nonroot(), especially in
index b-trees when a cell is being moved from a child page into the parent
page in order to become a new divider cell.

FossilOrigin-Name: 9080d3d5f5aaddbb3410158bcc446649651b7dce3940eb3491620ec9208914b4
2021-05-06 11:02:55 +00:00
drh
59df3e92db Provide the sqlite3PrintMem() routine on SQLITE_DEBUG builds, which can be
invoked from a debugger to get a summary of the status of an sqlite3_value
or Mem object.

FossilOrigin-Name: 5ac24179f5ef16dccc1b65248e33376c9748767b14c75c1056f3b0d08b7a89a7
2021-05-05 19:46:50 +00:00
dan
4fd82a2a78 Fix an undefined-integer-overflow problem in fts3.c.
FossilOrigin-Name: a0bf931bd712037e44e8d7cac3c00a6715c1b451f222bad3184d3ecab1a4c7f4
2021-05-05 11:47:34 +00:00
drh
67656ac78a When applying the optimization that disables WHERE clause terms that drive
indexes, make sure not to do so if the term being disabled is a transitive
constraint.  Fix for the problem identified by
[forum:forumpost/eb8613976a|forum post eb8613976a].

FossilOrigin-Name: f1f9b5de3c59489b94963685660b3ddc45eece5535b02fec399b6ece0e38563d
2021-05-04 23:21:35 +00:00
drh
23634898c5 Also for the 0x20000 bit of ".wheretrace", show when WHERE clause terms are
disabled.

FossilOrigin-Name: 625fb253eecd6c10fce5d0127d516361df0c1d1661502b396fc418dcdb4ae999
2021-05-04 18:24:56 +00:00
drh
6068b6b451 Additional debugging output for whereScanNext() showing equivalence classes
when the ".wheretrace" setting contains the 0x20000 bit.

FossilOrigin-Name: 9280e3d994656344d4feb346156df8a278da80181f6efe0ff8e0340b6f0f91cb
2021-05-04 16:51:52 +00:00
drh
433a3e935d Back out the EXISTS-to-IN optimization. It slows things down rather than
speeds them up depending on the query.  And (see
[forum:/forumpost/8692d94725|forum post 8692d94725]) it sometimes results in
an incorrect answer.  We may come back and revisit this optimization later,
but for now it seems best just to disable it.

FossilOrigin-Name: 16252d73fa73569fd7506676f6ffbbcd43addfb105384fb74449d30ca720904a
2021-05-04 12:07:16 +00:00
drh
f83d501c6d Fix minor coverity warnings in the CLI.
FossilOrigin-Name: 204086a94202fc631371b75c7a8286df2f66116399628ac27ef54533641b8f20
2021-05-03 13:35:00 +00:00
drh
e103a8de2d Fix a potential memory leak following OOM in the decimal extension.
FossilOrigin-Name: 5127f7376776e6220eb8f83a30aa6b823c23ae0ac76e7ae41b33ca4e03ce236a
2021-05-03 13:24:30 +00:00
drh
736d11ed21 Back out the NEVER() inserted by [c7309ed3c7588c7e] because it is reachable
after all.  dbsqlfuzz bc17a306a09329bba0ecc61547077f6178bcf321

FossilOrigin-Name: 20a4f3f12cdd8823d53d91025fa41e284c9f629b1d049eb486ff8dc4a1736e1f
2021-05-01 12:09:36 +00:00
drh
76baad95f4 Guard against a NULL-pointer dereference following OOM in the JSON extension.
FossilOrigin-Name: ea221f3c8e243a5dc4952e510cbe396614a24876bacdc04fb1ebd4127c7ef0d9
2021-04-30 16:12:40 +00:00
drh
0449f6561f Fix a harmless "unused variable" warning when compiling with
-DSQLITE_COVERAGE_TEST.

FossilOrigin-Name: 0bef3fb11fb95d7ede82b59aea26e99e2e23b3bce48009181e691ea17ae78a61
2021-04-30 12:30:35 +00:00
larrybr
5f5719bd07 Reduce API lifetime requirement for objects passed to sqlite3_bind_...() with SQLITE_STATIC.
Also fix broken session doc links (by zapping refs.)

FossilOrigin-Name: 327eb4792f9b98f6220fd35ba744002d36ed53f43a016924117b3cea32343947
2021-04-29 19:30:35 +00:00
drh
5960724789 Fix the operation of the "-" argument to --load-dbsql in the fuzzcheck program.
FossilOrigin-Name: 1f18b3cbee7e1342fdd66e45ef744fea3db2ba4513943c0582ff8ef98974865e
2021-04-29 18:03:42 +00:00
drh
81f5ef05a9 Fix the IN-early-out optimization so that it works even for the corner case
where the NULL bypass fires before the affinity of the LHS operator has been
set.  Fix for the problem described in
[forum:/forumpost/6a3ec138e9|forum post 6a3ec138e9].

FossilOrigin-Name: eb40248ce606b792a02e4e0b7dd826a82891c5f4c9793f3ca5d332e593109525
2021-04-29 15:49:34 +00:00
drh
7bfccfe73c Enhanced "PRAGMA vdbe_trace=on" output associated with the seekHit flag.
FossilOrigin-Name: 683950009300657b0321d7d3f77f2585a28696ff93cedef399d1cd4aa484b2d4
2021-04-29 13:58:28 +00:00