Commit Graph

27973 Commits

Author SHA1 Message Date
dan
28cd72ac52 Fix asan problems in sqlite3rbu.c. Enable RBU for sanitizer release tests.
FossilOrigin-Name: ad2ae7717e7a10cf42aeabd3c544e7884fa082295c2babf0fdb19a684d2aba1e
2024-03-18 21:08:33 +00:00
dan
365b6e9769 Avoid spurious SQLITE_IOERR_DATA errors when reading partial pages from a cksumvfs database using a SQLITE_DIRECT_OVERFLOW_READ build.
FossilOrigin-Name: 0f485dbece9146eabe5a5c0998a9e35c685a170c3fe6d4509e92aa8dae18a2c0
2024-03-18 20:52:45 +00:00
drh
fc2d862318 Remove unnecessary blank lines from build commands in the default Makefile.in.
FossilOrigin-Name: 76fb3a908f45230b956cb659c754e47603e80aa72a2aad50d479437a9c013f61
2024-03-18 18:03:17 +00:00
drh
43a511927d Add the "VALUES-as-coroutine" optimization. Large VALUES clauses on an
INSERT, for example, prepare and run in about half the time and with half
the memory.  This check-in also includes enhancements to the internal
sqlite3ExprIsConstant() routine to recognize pure SQL functions as constant
if they have constant arguments.

FossilOrigin-Name: a120c9235f125e05be494038c16a9dd326fd79837698bef17e7879cd0cd75831
2024-03-18 18:00:17 +00:00
drh
2ad2584581 Fix harmless compiler (scan-build) warnings.
FossilOrigin-Name: c86f9f2a15ffc726b7f0d9bba5a8c4dfdaeea6a297e0b591c554fff3d1fe6e1c
2024-03-18 17:13:52 +00:00
drh
c195e2374b Allow the VALUES-as-coroutine optimization to be applied to later rows of
a VALUES clause even if earlier rows do not qualify.

FossilOrigin-Name: 9a47ea7f0f675f7bf4710901487ce34c7689e618cd1d8b9f94f0ff7ebc3f2841
2024-03-18 16:30:00 +00:00
drh
b03805b70b Change a test case to use a window function rather than random() to disable
the VALUES clause optimization.

FossilOrigin-Name: c589149a138fa0a6be3153986fc0f315e052e13ebc0e7006b6529ca02bae413b
2024-03-18 15:10:00 +00:00
drh
ac7c6f5854 Add assert() statements to validate access to the SrcItem.u1.nRow union member.
FossilOrigin-Name: 21f616d9b948efca441f8d45d0a95f4c052ce8b6daec7fa582ad9a00b82ca570
2024-03-18 13:31:24 +00:00
drh
871786b792 Fix the patch at [10ee6fcba08ab128] so that it works on reduced-size Expr
nodes.

FossilOrigin-Name: 260bd764c3f2d6d067adb9cd0045b7c24d5e00b02ab2735b1cba455a6143ff4c
2024-03-18 13:10:54 +00:00
drh
27a5ee855d Improvements to EXPLAIN QUERY PLAN output for multi-row VALUES claues.
FossilOrigin-Name: ac6f095e13e43d66c06552c8b01f6bec3407c9d41a34c4cdb0be57b0b828ad0d
2024-03-18 12:49:30 +00:00
dan
75924d3ae2 Ensure the database schema has been loaded and the database encoding gleaned before beginning to code a multi-row VALUES clause.
FossilOrigin-Name: 2ff476eb3d1f4a2146f4a48b57895a00a3ff5beb29afa679ae53ea58cac07c76
2024-03-18 11:12:22 +00:00
dan
2f4a8cc2d8 Fix a problem caused by a non-aggregate function with an OVER clause in a multi-row VALUES clause.
FossilOrigin-Name: 10ee6fcba08ab1281235197602148fe062560e1d5034a477b8e7b574dd3e2907
2024-03-18 10:54:48 +00:00
drh
54bf109e80 Omit the "noop(X)" test SQL function. Accomplish the same thing using
the idiom:  "coalesce(X,random())".

FossilOrigin-Name: 0eb2fbb8910e7a372c50db3ae44238d7b161f0e45858b74061b5228aec5fcc7e
2024-03-17 16:01:23 +00:00
drh
e4a1b4da4f Add an ALWAYS on an unreachable branch.
FossilOrigin-Name: 0dce6211690210e802545cbca9b3375e07075e117fad3f8c921879da7671d981
2024-03-17 00:13:12 +00:00
drh
1c5257dafc Recognize when an SQL function is constant and can occur inside an
optimized VALUES clause.

FossilOrigin-Name: c0e5ceb87d3cf28f22d381f863b8f91043804fd7901f23f3afb02fe698e6a12a
2024-03-16 21:12:51 +00:00
drh
ec00a4d111 A formerly impossible case has now become possible because of the new
ExprIsConstant enhancements.  So deal with that.

FossilOrigin-Name: 9ba3cff9d48fe8fc8a0a51291169599209d464465e44bdfd60058fd1e314a2b1
2024-03-16 21:04:32 +00:00
drh
7dc3e923c4 Further expand the scope of usage for the enhacement to expr-is-constant.
FossilOrigin-Name: d7eadcf7dd089f0f4aa963c58f0df32edd951368c9906375fd62b0a61cd393b8
2024-03-16 20:15:34 +00:00
drh
4713b2d73c Assert that the eCode is always non-zero upon entry into exprNodeIsConstant().
FossilOrigin-Name: f71b28f6713126745bca53e098dfe3444d4235d6a2b87ced5b333a7f0ee79be8
2024-03-16 19:48:51 +00:00
drh
b918a0f821 Activate the enhanced constant-expression for the
[constant propagation optimization](/info/f4229707ac08d66c).

FossilOrigin-Name: 92afea38881a1a4f266c79ddc6e1027cf17c288dcc8f7e7d50466899ac0054c4
2024-03-16 19:36:18 +00:00
drh
bf4105d768 Extend the scope expr-is-constant for function to cover the IN-to-EQ
optimization.

FossilOrigin-Name: dae669245c86021bcd28716aff6e316257cc8075d02081745d4b7de17f8ad553
2024-03-16 17:04:08 +00:00
dan
40514dd1f6 Fix exprNodeIsConstantFunction() so that it returns WRC_Continue, not WRC_Abort, if the function really is constant.
FossilOrigin-Name: d85dd4de2d0989127e0ae6a2eec9d83a577777f8d5ba40700084a0b498016634
2024-03-16 14:27:10 +00:00
drh
f696591dd4 Enhance the sqlite3ExprIsConstant() function so that it recognizes
constant functions.  So far the enhancement only applies to the multi-row
VALUES clause, but it could possibly be applied in many other places.

FossilOrigin-Name: c9e0488c6c0135932b6e76b0f3f3acd69ef65327e0a54daa59777f35da1aef26
2024-03-16 13:18:48 +00:00
drh
d31fc6e9cf New options for testrunner.tcl: --stop-on-error and --stop-on-coredump.
FossilOrigin-Name: 82035b9cfd28ef6b0ecc6f469f03d2b001189aa4925147cdb784b6b1964eb3b2
2024-03-15 17:57:58 +00:00
drh
825596481f Fix (totally harmless) memory leaks in Lemon to avoid warnings during ASAN
builds.

FossilOrigin-Name: ce009205a8edc02b7d45ac01bd0e692c3d2c3ffeadb68e4f1bad20c39075e692
2024-03-15 17:04:55 +00:00
drh
0ebd1c382c Tweaks to the func4.test test module (which tests the rarely used totype.c
extension) so that it works on i586 compiled using gcc-13 with -O0.  Details
at [forum:/forumpost/0a7553b0f734c033|forum post 0a7553b0f734c033].

FossilOrigin-Name: d0fbe779bc2460e120da4f39063a9f4121c700f0b86d85f4311715b1366c3515
2024-03-15 13:16:13 +00:00
drh
932b5f4575 Fix testcase to account for new behaviors with this branch.
FossilOrigin-Name: 823e579362c05bb8accf6c3b158c5162a16eb23cf81d6021c9e3246e32583d1c
2024-03-14 20:39:03 +00:00
dan
26a3ef7557 Fix a problem with ALTER TABLE and correlated multi-row VALUES clauses.
FossilOrigin-Name: d543c829ef74dbd64105bd757ca660e4f02e9ce562be4f1688a701fa535351c4
2024-03-14 19:31:06 +00:00
dan
400992b1c4 Fix a problem handling "INSERT INTO ... SELECT ... UNION VALUES(...), (...)" and similar statements.
FossilOrigin-Name: e8a2a8198a97046ff376bc5d38e4bc0a24fcac79f5a0dadb9d29d953a862a012
2024-03-14 19:01:17 +00:00
dan
f0f4323824 Avoid some OP_SCopy instructions in "INSERT INTO .. VALUES" statements that insert more than one row in cases where the VALUES clause contains a value for all columns of the table.
FossilOrigin-Name: 988f0ea70cd21b3194011e0cd1ddd4990a07669e0fd9c37afa48f69698ab7212
2024-03-14 17:04:18 +00:00
stephan
5a0fd81fce JS: remove an unused function argument and some debug-related comments. No functional changes.
FossilOrigin-Name: f15709430d4ba2fcf5729bc30a45dacb77102927b82cda12de0b67935b526cc0
2024-03-14 13:18:19 +00:00
dan
a06c046e29 Add further tests for VALUES clauses in various contexts.
FossilOrigin-Name: 973d197d9676c066a95cea77a27e36d2d7f5778283919d8cac4424d2ec952f47
2024-03-14 11:45:39 +00:00
dan
56be6f6c08 Change the way parse.y handles multi-row VALUES clauses to save a few cycles.
FossilOrigin-Name: 88d5bc91a52675d2a83748b79ad50de0e9732b2afd23107627bdc604f744d275
2024-03-13 20:04:11 +00:00
dan
aa2e244e14 Remove unreachable code from this branch.
FossilOrigin-Name: 657c7b4f9df53e041a33cfad00ee2f507ac09c97a2ae61164bd189d660d167da
2024-03-13 18:41:05 +00:00
dan
35057fb4bc Fix some OOM handling problems on this branch.
FossilOrigin-Name: 2085c7f12a3916ec883c31795e29f2e2b6641c30ecf748cce9bff7b13b061d1f
2024-03-13 17:33:45 +00:00
drh
81a244c514 Minor change to the "mdevtest" and "sdevtest" in testrunner.tcl, to make it
easier to add configurations in branches.

FossilOrigin-Name: 9349d94e05dcf266b02afcd89f1e433cdc45f23e8536b2f3f9aa242d5d89c307
2024-03-13 16:32:05 +00:00
dan
693d3867ea Merge trunk into this branch.
FossilOrigin-Name: 38635651f08d42110c01d6b24f6e362e340511846294f8696af4afc795dae80d
2024-03-13 15:47:52 +00:00
dan
e116fa153f Ensure that if a multi-row VALUES cannot be coded while being parsed, the SF_MultiValue flag is correctly set.
FossilOrigin-Name: 94791824a6f04782aac6bc16c182685e2d6ebf5c688dc9f8d59e479c6fd5a40e
2024-03-13 15:44:31 +00:00
dan
609aba00d9 Avoid creating a co-routine incrementally for a VALUES clause that has affinities other than NONE.
FossilOrigin-Name: 4229b12b327b05561dcf49b8585a66467d17d4e998b14eff65eb886f2434b53c
2024-03-13 15:34:44 +00:00
drh
6bb6a9c941 If the NJOB environment variable is a positive integer, it causes
testrunner.tcl to run that many jobs.

FossilOrigin-Name: 924281b94d8e6ba674d6fe2f7f01da890351355a854e9e6fe623fad1180f7392
2024-03-13 13:43:21 +00:00
drh
4565c8417b Document the testrunner.tcl --explain option in doc/testrunner.md.
FossilOrigin-Name: 5a7b5fc99a9d5c7693a5707c2050a8c59a8f97732e4763a56982579f8d5959ec
2024-03-13 13:27:16 +00:00
drh
4659ec34c1 Add the --explain option to testrunner.tcl.
FossilOrigin-Name: f0c9eb0326f189fe5ebbee83532ac2c413e91c6a8e9d5b93aa6170cba66fdd22
2024-03-13 13:09:58 +00:00
drh
9b6e535609 Improve one of the error messages from testrunner.tcl.
FossilOrigin-Name: 233155c174575fa99b34030c1936bc2b04489417f4d5223f18cdb3c8fc274a56
2024-03-13 11:46:23 +00:00
drh
c2764dbb33 Minor tweaks to the testrunner documentation.
FossilOrigin-Name: 3128b98d2656c7f23f6071c173f96329c7bdc49cd641050fbb7b105b810ba7c7
2024-03-13 11:29:04 +00:00
drh
484193fe7f Improvements to the "help" message generated by testrunner.tcl. Add the
special "list" permutation that does nothing but list all allowed
values for the PERMUTATION argument to testrunner.tcl.

FossilOrigin-Name: 1f5bfc6a9030f9905d258c5b665b9ff27efc7da71556c912ab3dce0f8f5aa8da
2024-03-13 10:55:47 +00:00
dan
1769640c8b Add pointer to documentation to testrunner.tcl help message.
FossilOrigin-Name: eff855102f9c0b4e9d876d1cff9d06c07de427b4880c2fa326d4d6e3e1dd13c8
2024-03-13 10:54:04 +00:00
dan
3de08a6ee0 Have testrunner.tcl set SQLITE_TMPDIR on windows as well.
FossilOrigin-Name: 64f4dad1f928716b8688c650d043f18afcc72ec78d990145c580e2b98905b919
2024-03-13 10:47:54 +00:00
drh
eea6bdce84 On testrunner.tcl: (1) Add the "help" command. (2) Add the "script" command
to the help message.  (3) Improve the error message generated by "script" when
an incorrect CONFIG option is provided.

FossilOrigin-Name: 1b7f0be44036fb90d763eabae84b95734e766f8010b39122f8787189308a7fc1
2024-03-13 00:37:37 +00:00
dan
5badd048d2 Correctly initialize the SrcItem.iCursor field to -1 when creating a co-routine from a multi-values VALUES clause.
FossilOrigin-Name: c32953ff6d72910815eaff29ab1b790c412e1a741d02c03c5911dda0c08e5130
2024-03-12 20:10:46 +00:00
dan
f99ab38bdb Have testrunner.tcl have each test store its temp files in its working directory. To avoid unlikely, but possible, collisions.
FossilOrigin-Name: 18842d0d72048561312c2c83035c01253150e1fe1ff37160f266d24d41a01df3
2024-03-12 18:33:57 +00:00
dan
3ac5c08180 Have testrunner.tcl have each test store its temp files in its working directory. To avoid unlikely, but possible, collisions.
FossilOrigin-Name: 775a10d10b9bf2227071e778718ba4054d4b2b4238751eb147338d687b4e0d58
2024-03-12 18:04:40 +00:00