drh
bfb7f77a8c
Add two NEVER() conditions.
...
FossilOrigin-Name: 4f358ad20dc8a45e7aaa1a1996b40abd39caf34be6556ed54e1e0c80572b7ac0
2024-11-28 00:58:37 +00:00
drh
60ad526639
Enhancements to sqlite3ExprImpliesExpr() so that it realizes that
...
"iif(A,B)" implies "A".
FossilOrigin-Name: d96ecbee59b50eca25447456dfff2c168e8eade7a68e542932d5829f97debb31
2024-11-28 00:34:20 +00:00
drh
7998b889e8
Add an ALWAYS() on a branch in the new indexed-subtype logic.
...
FossilOrigin-Name: f150c3c5b898975b1f83d61fa589753449a48f8a0007e8e167dbd702528197c5
2024-10-08 00:15:22 +00:00
drh
ddc764b274
Add a NEVER() to an unreachable branch in the new indexed-subtype logic.
...
Mark the pi() function as deterministic.
FossilOrigin-Name: 50be8f5091b2202b67a80f826feee2c378f001745ad5acb7c4374423bbf6ff22
2024-10-07 21:04:57 +00:00
dan
d564bdb050
Allow expressions with subtypes to be read from indexes unless they are being used as direct or indirect parameters to SQLITE_SUBTYPE functions.
...
FossilOrigin-Name: aa440e78e9004c7ca3e03beaf264f54d0070ad7298a3c96ca097d8b35c872e5f
2024-10-05 18:10:02 +00:00
dan
c857b9eb5d
Experimental change to allow expressions with subtypes to be read from indexes in situations where they are not used as function parameters.
...
FossilOrigin-Name: ac63f98ad85a4dd1e49cc64b41f0ca0044153972c15d71c669f4bc3ec590e268
2024-10-05 17:37:19 +00:00
drh
1521ca4c20
Refactor the SrcItem object so that information about subqueries is stored
...
in a separately allocated Subquery object. This reduces the memory requirements
for SrcItem and makes the code run faster. It also provides an expansion path
for subquery processing that does not burden simple queries. The current
checking mostly works, but there are still issues that need to be tracked
down and fixed.
FossilOrigin-Name: 8ff5dda8448d7e1a533d7f27db2573ce68fa9956b9d9847ced45e83c1f06bab0
2024-08-19 22:48:30 +00:00
drh
b204b6aa7b
Give unique names to fields in the SrcItem object, to facilitate analysis of
...
how those fields are used using "grep".
FossilOrigin-Name: 9f5aeef3cbc2c95267c8f7bf60d5c66971a76789669fb0e8f853273ff6f616f2
2024-08-17 23:23:23 +00:00
drh
8797bd695f
Reduce the size of the SrcItem object by combining fields into a union.
...
FossilOrigin-Name: a4c59ac3c6ec979c25b544d29e47b8e39f6439c098eed8f84b3bd506c9adf047
2024-08-17 19:46:49 +00:00
dan
aecfb0a3b3
Fix an oversized allocation in sqlite3ExprCodeIN().
...
FossilOrigin-Name: d7be326a80e7b3aa8fd6e5e059c04e6ad3feaffcb20b1e3c251d7195ddc1be8b
2024-07-20 16:11:12 +00:00
dan
68d700cac6
Fix a use-after-free that could occur following an OOM introduced by [d8cedbe0].
...
FossilOrigin-Name: 4fabfacfcf38e129949d3e4e2c3ffde3da3cd40d9d12c97ca29bc7c3604db6ed
2024-07-08 17:39:52 +00:00
drh
42123a294d
Use a mini Bloom filter to help reduce the number of pointless searches for
...
prior SubrtnSig objects when generating code for IN operators with subqueries
as their right operand.
FossilOrigin-Name: d8cedbe055b40a0ea4e5d47845b535162e9fcb0d0f88c03211797ab64d2d56fb
2024-07-05 13:55:59 +00:00
drh
615fc1f083
Small performance optimizations.
...
FossilOrigin-Name: 99fd34b58a9b09af20f1f1a3c37137ae55159310c8af97806550eeee6adc4fc5
2024-07-05 01:05:34 +00:00
drh
42305fc126
Disable the reuse of IN-clause subqueries if the subquery is an explicit
...
"SELECT ALL". The ALL keyword is almost never used in actual practice (most
developers don't even know it can be used) so this should not interfere with
the optimization, but it does give us a convenient way to turn it off for
testing purposes.
FossilOrigin-Name: a81299be2ce203dcc28e7d0ba24791cbfba80e1ee3e1564469a226cac8adb17d
2024-07-04 18:26:41 +00:00
drh
0cf237c5b0
Be more aggressive about reusing subqueries that appear on the RHS of IN
...
operators that have been replicated due to the predicate push-down optimization.
FossilOrigin-Name: 2accf32b6e45a396503c29eecc14a103bcc7b4c313cde921b26b489704060177
2024-07-04 16:57:11 +00:00
drh
6172e4355f
Use a Bloom filter to improve performance of IN operators when the RHS of
...
the IN operator is a subquery.
FossilOrigin-Name: 1933496539c19cbf429a39d6b0b1c6b1b2af50733a3c4aea4920990ced652f6a
2024-07-03 17:51:48 +00:00
drh
6adbdac676
Add a NEVER() around a branch in sqlite3ExprAffinity() that is designed to
...
prevent an infinite loop, but which can now never be reached due to recent
changes.
FossilOrigin-Name: da0b794852f8ccba5bd30395892044ec71b148075608406867785395e1f50b31
2024-06-29 12:22:32 +00:00
drh
f13e2d22fe
Additional steps to make sure calls to sqlite3ExprToRegister() are sane.
...
FossilOrigin-Name: 1c42d7176b228791f99bc9971d92a9ab67b1e2956ca4f8d934bd1a3e596d6c80
2024-06-28 18:07:10 +00:00
drh
4703b7d092
Better optimize queries that use parameters in the LIMIT clause.
...
FossilOrigin-Name: e58cb304d1e0ec6e30260a165aaccc2cf096ce6c999efb06683c4ef600ee12ef
2024-06-06 15:03:16 +00:00
dan
89b04f3786
Ensure that queries like "SELECT indeterministic(a) FROM tbl GROUP BY 1" invoke the indeterministic function only once for each row of tbl.
...
FossilOrigin-Name: 4555d66547e28cb110e1012b145bcf3aafb5d4bde05e9d27bcb4ca33837b28f5
2024-05-24 18:31:39 +00:00
dan
c83386cbe5
Merge branches "fix-onerow-opt", "faster-openread", "fts5-delay-tokenizer" and "enhanced-raise", each containing minor enhancements prepared for 3.47, into this branch.
...
FossilOrigin-Name: 6dc6472175bccbed15ebf6811c209d1a0b5fad60158fb32040210f2cdae916a6
2024-05-17 14:26:32 +00:00
drh
325420616f
The sqlite3FaultSim(300) error from [1e8863909ac369e5] must be treated as
...
an OOM, since it simulates an OOM. Also fix deferred deletion of Expr objects
from [a53bdd311c4154fd] so that it does not corrupt the AST if an OOM occurs.
FossilOrigin-Name: c623d9a51e0ae6b4a8e1186714d14e7aa3df55246e123323481f07f07749dea5
2024-05-10 18:10:34 +00:00
drh
788ade3487
Allow arbitrary expressions as the second argument to RAISE().
...
FossilOrigin-Name: 003e1c8c27824cb917b3869bdf9000f32ff0b6887a2aff8516712cfe865cf34d
2024-05-08 17:42:13 +00:00
drh
ebf9702b34
Avoid unnecessary recursion in sqlite3ExprDeleteNN(). This complicates the
...
code, but it is needed to prevent nuisance "stack overflow" reports from
OSSFuzz while it is running the latest ASAN.
FossilOrigin-Name: 70abc144ca90a58ea25dc2d90683545246c084d961215c20ec070b0abe640371
2024-05-06 19:04:46 +00:00
dan
5b27ecafbc
Avoid slowdown when exprNodeIsConstant() is called on deeply nested SQL functions.
...
FossilOrigin-Name: 1c0b0345451853846076467831884f951c92ec79476be40ce7f7b766fd2d8fc1
2024-04-24 11:40:47 +00:00
drh
660322f96f
Merge trunk enhancements into the pushdown-subquery branch.
...
FossilOrigin-Name: 27865e316f8dfbf4c20290cf1be3024d7518fec46655e34f3fc435e15346c63e
2024-04-07 10:30:29 +00:00
drh
05c6d13027
Add comments to note the name abiguity between the MySQL push-down
...
optimization and the WHERE-clause push-down optimization.
FossilOrigin-Name: 3d5fb1ec7a0440072d6e3b957903c85d0f32b8b07207a1ef22d1a69cf5e664d1
2024-04-07 10:27:18 +00:00
drh
6951c49779
Do not allow changes to sqlite3ExprIsTableConstant() that support pushdown of
...
subqueries interfere with the hash-join logic.
FossilOrigin-Name: 8682931f9c6b40e1b09139c10bbe932c38330b5eb0c5c84f2432ad19a6793e37
2024-04-06 18:30:09 +00:00
drh
de6a4be9b5
Generalize pushdown to allow any uncorrelated subquery to be pushed down.
...
FossilOrigin-Name: 87c45fb0d5f5ca5d6d1ad27bef83f294231d17d94299e1997364a7975b423e38
2024-04-06 12:19:50 +00:00
drh
743ae4c68b
Experimental enhancement in which expressions of the form "expr IN table"
...
can be pushed down into subexpressions.
FossilOrigin-Name: 2cbd7838fd6ffdf210f34671cd2e3e749a076a3a6f155bbe5f910a67db31c5b1
2024-04-05 20:01:28 +00:00
drh
a509a90958
The RAISE() operator is not a constant expression and cannot participate in
...
the VALUE-as-coroutine optimization.
dbsqlfuzz 74cf7c9904360322a6c917e4934b127543d1cd51
FossilOrigin-Name: 6a06dc73847716c88d65651d1bf0e002002303881df1389beac884d0032eae08
2024-03-25 20:35:14 +00:00
drh
a631eb378d
Do not automatically assume that ROWID is NOT NULL when compiled with
...
SQLITE_ALLOW_ROWID_IN_VIEW.
dbsqlfuzz 31b38eeb63a4e1562de665078f52b7b47a7543cf
FossilOrigin-Name: 80c4223098c1827ff3a564f1f9a4203164a943e9a83eef99df68378fa3c4764b
2024-03-24 16:33:31 +00:00
drh
27ea83f66e
Make sure the new u1.nRow value is copied when making a copy of a SrcItem
...
object. This fixes a problem in [ac6f095e13e43d66] from yesterady.
FossilOrigin-Name: 262f8f9d80d37160e4126634b99aa48fce2073e61f6365e8bdbe1cc4fa560a96
2024-03-19 19:42:56 +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
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
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
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
dan
815e055bff
Attempt to reduce the memory used by VALUES clauses in as many statements as possible, not just INSERT. This branch still has problems.
...
FossilOrigin-Name: 17d1f7cfabc7593d0725051b0c7c9619a23a482265f30f15ab9493fef5caeeb0
2024-03-11 17:27:19 +00:00
dan
7ab40cda7b
Remove code that added a P4 parameter to the OP_Variable opcode. This is no longer required.
...
FossilOrigin-Name: dd5977c9a8a418be3fbd646d74933996381099a9263a02eb4a990f0084463dc1
2024-03-05 18:41:03 +00:00
drh
8597eee119
Always convert 32-bit integer literals into EP_IntValue notation, even if
...
they contain "_" separators.
FossilOrigin-Name: 2dfc427f676255cbe189a26bfec2405d41d31ccc4512c55b31e6e633261d7a23
2024-02-28 01:12:21 +00:00
drh
71a32aede3
Remove an ALWAYS() added in [c50e6c2ace49d092] because it is sometimes false.
...
dbsqlfuzz c393a4f783d42efd9552772110aff7e5d937f15e.
FossilOrigin-Name: b9daf37e57cde12c4de271a2b1995e8e91b6411f8c2e8882e536241929609b3a
2023-12-24 12:02:36 +00:00
drh
c52aebb443
Remove redundant conditional from sqlite3ExprCanBeNull().
...
FossilOrigin-Name: 257f96a2d22c605885fa66220c28cf7dc5941c330bccee3f132b9e7b70d89d30
2023-12-19 15:51:14 +00:00
drh
09259aff6c
Add ALWAYS() and NEVER() on branches made unreachable by recent changes.
...
FossilOrigin-Name: c50e6c2ace49d0928b05cbfd877c621e9a0f77dc4e056ccb1dbe5cf118a00d00
2023-12-19 14:53:39 +00:00
drh
3e2ec83e0b
Ignore COLLATE operators when determining whether the result of a subexpression
...
should be shallow-copied or deep-copied.
FossilOrigin-Name: 34ae36a45e814bed7c8340412c7ef3fc849b82357656d0eb5f0f805e59d846d0
2023-12-19 13:45:05 +00:00
drh
a3569fb2ca
Extra ALWAYS() macros to verify state in the sqlite3ExprCanBeNull() routine.
...
FossilOrigin-Name: be19b84c9f3fe127165809908add148dbe9a827a55608b0490de7e69b7f7f191
2023-12-19 11:57:29 +00:00
drh
07117f8118
Pass subtype information through the aggregate ORDER BY sorter for
...
aggregate functions that use subtype information.
FossilOrigin-Name: 3536f4030eab6d650b7ed729d2f71eb6cc3b5fbe16b4e96b99008d66522aaccb
2023-12-14 13:58:50 +00:00
drh
f86a07b0c4
Add ALWAYS() on branches added in [ec0ae4030968c782] that are always true.
...
FossilOrigin-Name: 451cef8609e96dd9244818adc5c6f240544694bcb4ae620e88f90e403e59d70f
2023-12-07 13:14:34 +00:00