drh
7601294ad3
Rename the "struct SrcList_item" object to the more succinct "SrcItem".
...
This is a symbolic change only. The logic is unmodified.
FossilOrigin-Name: bfd5bf2c73110fcb36db9ba2a949ff516131fbd3e89325f88fe9f5c2b4ed87b2
2021-02-21 21:04:54 +00:00
drh
5abe1d3d53
Simplified resolution of CTE names. Slightly faster and about 100 bytes
...
of code smaller.
FossilOrigin-Name: 0d2c992f3622a6272ca4a3caff6b21f619fe976b8df8b34eff066086f8df2202
2021-02-21 01:19:42 +00:00
drh
1862271f7c
Performance improvement in resolving the INDEXED BY index name for the common
...
case where there is no INDEXED BY clause.
FossilOrigin-Name: 554b286ac208168bde91c6c6034cc7087410def76fce650b519661b2ee2c61b7
2021-02-20 21:20:54 +00:00
drh
a7da40f377
Merge changes from trunk into the alter-table-drop-column branch.
...
FossilOrigin-Name: 9ea640073f8809dfe2612ae1ea384a938b433f884c54d9e5aa3712de79397ac1
2021-02-18 22:47:34 +00:00
drh
6f6e60ddb1
Improvement to the INSERT optimization of check-in [16ac213c57196361] so
...
that it works with SQLITE_ENABLE_HIDDEN_COLUMN but is also easier to maintain
and a little faster as well.
FossilOrigin-Name: f985a78ecc0c6d9ff671c730a109d97dc781b06e47a0ab03f441cea5d021a4c3
2021-02-18 15:45:34 +00:00
drh
c54246ffdf
Use the sqlite3ParserAddCleanup() mechanism to ensure that the AggInfo
...
structure associated with an aggregate query is deallocated, for a performance
increase and size reduction.
FossilOrigin-Name: 7a1399671fa10c64d5358cc4d364d24c643fe9dd8da923356462267ee7962f61
2021-02-17 21:13:14 +00:00
dan
c16592cd1b
Merge trunk changes into this branch.
...
FossilOrigin-Name: 0cd5e2f9ce181f2c940ffca6fe69fda84f452613e66463d0d7c7413fc11b9772
2021-02-17 20:19:13 +00:00
dan
6e6d9833cc
Add experimental implementation of ALTER TABLE DROP COLUMN. Only some cases work so far.
...
FossilOrigin-Name: f0217937d7306fb595727e61e871e8b03d8c881d339a0865bfd0117d90d42e4e
2021-02-16 20:43:36 +00:00
drh
13162ef975
New SELECTTRACE macros more clearly deliniate when the query planner is
...
invoked in the middle of PRAGMA vdbe_addoptrace output.
FossilOrigin-Name: 7c03ce49b74f72b63dd75c3a02625e671bfd771f71b24e808994322b00d97677
2021-02-16 20:01:08 +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
drh
af7b76534b
Expand the number of optimization-disable bits from 16 to 32. Use one of
...
the new bits to disable the min/max optimization, so that we can more easily
verify that we get the same answer both with and within that optimization.
FossilOrigin-Name: fd0c9a123b58b7b134ed67f26dbb4196b61e56227f078422cc7e9a3497054c2d
2021-01-13 19:28:17 +00:00
drh
d193057ad1
Further enhancements to the min/max optimization of
...
[/info/b8ba2f17f938c035|check-in b8ba2f17f938c035] to fix the performance
regression identified by
[forum:/forumpost/623f571482|forum post 623f571482].
FossilOrigin-Name: 188772a1dbaf066fbddd39c718fdd87478b19a920622f4640bcb79d4ef065331
2021-01-13 15:23:17 +00:00
drh
b9366f8e32
In the .selecttrace output, show the ORDER BY clause added by the Min/Max
...
optimization.
FossilOrigin-Name: db0ecfe66433f8915b6eb16d3735a4a0d0f8e0bbc395bc9c1364387506fc4657
2021-01-13 11:44:51 +00:00
drh
21d4f5b53a
Fix a potential use-after-free following an OOM in sqlite3ParserAddCleanup()
...
and add a mechanism to detect situations where this might occur in the
future.
FossilOrigin-Name: 38ef8ab9830e12acd2c710e113939b1f8dced02612c6933c37a3c948a4030d0a
2021-01-12 15:30:01 +00:00
drh
cf3c078f93
Add a linked list of ParseCleanup objects to the end of a Parse object and
...
use that list as a place to put other sub-objects that need to be deallocated.
Have a single such list for infrequently used sub-objects is more efficient
than doing an a separate check for each kind of sub-object.
FossilOrigin-Name: affa2b7b316941b8a6c4d0d1ff212c81a593faf1d05d129e14d2b70d73a25c59
2021-01-11 20:37:02 +00:00
dan
f39168e468
Fix a problem handling sub-queries with both a correlated WHERE clause and a "HAVING 0" clause where the parent query is itself an aggregate.
...
FossilOrigin-Name: f62f983b56623f0ec34f9a54ce1c21b013a20399162f5ee6ee43b23f10c2ecd5
2020-12-22 16:23:29 +00:00
drh
06ddb08f3f
Simplification to the aggregate-function analysis error detection logic at
...
the end of sqlite3Select().
FossilOrigin-Name: 82884438e30ad8241f8249927fe92e0856d78b64d7ade38f3d5bb1c931d958d0
2020-12-22 14:54:20 +00:00
dan
961a72601b
Fix problems with joining UNION ALL sub-queries against other sub-queries that contain LEFT JOIN.
...
FossilOrigin-Name: d554f710a5abbe64022f47a14ef67227c861a8f0991d85d240434e9a709cf8b8
2020-12-21 19:50:10 +00:00
dan
d131b51cbd
Fix for the previous fix in the case where a UNION ALL sub-query is joined against some other compound query.
...
FossilOrigin-Name: 63c5cfb9ae8f4598a523bed2a60c0e69172179952961a573113fcf756c06551d
2020-12-18 18:04:44 +00:00
dan
964fa26e0c
When flattening UNION ALL subqueries into a join query, ensure that separate cursor numbers are used for each segment of the newly flattened query.
...
FossilOrigin-Name: c510377b0b052e400f2ee4f20220b61cdf74ee44b9bb9e6490787c88dd4c55aa
2020-12-18 16:13:39 +00:00
dan
9353beaff1
Fix a part of the header comment for flattenSubquery().
...
FossilOrigin-Name: dc0937ce9d5569e3409b2b036a9f15b896125f4eb2eec30e3f0bbe4a92bcd0ad
2020-12-17 17:17:12 +00:00
dan
8daf5ae2ed
Add test cases and minor fixes to this branch.
...
FossilOrigin-Name: 5d6dc29d5f81738b07e4fee652fb2343fc409c2545f2f4667e8ee82d1a75f721
2020-12-17 16:48:04 +00:00
dan
de9ed6293d
Allow sub-queries that use UNION ALL to be flattened, even if the parent query is a join. Still some problems on this branch.
...
FossilOrigin-Name: 00e4bf74d3dfb87666a2266905f7d1a2afc6eb088d22cfd4f38f048733d6b936
2020-12-16 20:00:46 +00:00
drh
c0622a4d03
Alternative implementation of ".selecttrace" and ".wheretrace" that uses
...
a test-control rather than global variables.
FossilOrigin-Name: d36d6f2923a2393c751c0ac7634433453be20df7567fd914e57cbb1ae15f68b2
2020-12-04 01:17:57 +00:00
drh
235667a858
Use NEVER and ALWAYS macros to confirm that the return value from
...
sqlite3ExprSkipCollateAndLikely() is never NULL in some of its use cases.
FossilOrigin-Name: 76d2eb86e109fc3cbdba2e8175c22ed7660b59bb9315f6c55c565587f33ad43b
2020-11-08 20:44:30 +00:00
drh
6d5ab2a1d6
Fix an another OSS-Fuzz discovered assertion fault due to ALTER TABLE and
...
strange triggers.
FossilOrigin-Name: 6646d7898ca1d2f71ec906d9613fbfc5c59c6cf05f053529e6e32ab826d1cb78
2020-11-02 00:40:05 +00:00
drh
94d6f3f836
Fix an incorrect table ref-count in the new recursive CTE logic that might
...
result in a reference to freed memory following a syntax error.
FossilOrigin-Name: 75a0288871ccb2a69a636cbb328fe19045a0d0ef96a193ecd118b9a196784d2d
2020-10-19 20:49:54 +00:00
drh
340558540e
Allow multiple recursive terms in the compound SELECT of a recursive CTE.
...
This facilitates writing a query to find find the connected components of
an undirected graph.
FossilOrigin-Name: 5481fa8c79c34f434e99ab633ff3d0942a309a74fb0cf38e3d3617b51d5d21dd
2020-10-19 01:23:48 +00:00
drh
af3711536b
In the query flattener when substituting expression Y in place of expression X,
...
if X is marked has having come from an ON or USING clause of a LEFT JOIN, then
be sure that all subexpressions of Y, not just the root node of Y, are
similarly marked. Otherwise, if Y is an AND operator, it will be split up
during WHERE clause analysis and the subexpressions will not get the special
treatment needed by LEFT JOIN ON/USING clauses.
Fix for ticket [66e4b0e271c47145].
FossilOrigin-Name: 69f9eb7343a416c5ab426c8e1b9f0ae576544b4ccc5d87f5481c8ff884f696e1
2020-09-30 15:36:03 +00:00
drh
f1ea425560
DISTINCT may not be ignored inside a UNION ALL common table expression.
...
Fix for ticket [c51489c3b8f919c5]
FossilOrigin-Name: 7d2b590d3abd66a7e6ae9046198eb669e0fd2f223f7691281e9ad795a12b8903
2020-09-17 00:46:09 +00:00
drh
46fe138d98
Do not skip over TK_IF_NULL_ROW operators when bypassing TK_COLLATE operators.
...
Fix to check-in [ac31edd3eeafcef4] which was itself a fix for ticket
[45f4bf4eb4ffd788].
FossilOrigin-Name: 871f2ddcfbb9196dbd851a350e3471ee6d242d86bbd755201f7e2406fce3ac55
2020-08-19 23:32:06 +00:00
dan
a6c13b22b2
Change the name of sqlite3SelectTrace to sqlite3_unsupported_selecttrace.
...
FossilOrigin-Name: 5ecd03a27b81637ec92af654451a8fff46f1768ddb7c7a443d2a4a933b4475c1
2020-08-08 17:02:39 +00:00
drh
013e7bb749
Fix compiler warnings in MSVC.
...
FossilOrigin-Name: 96e3dba2ed3ab0c5b2ecf65a3408633e0767c884d48c270e9ef10ab9fa3ec051
2020-07-30 17:37:49 +00:00
drh
a92eae9751
Merge fixes from trunk.
...
FossilOrigin-Name: dd39418ee47529cc3ffbe01eccf31f1304a266a196bf81a2a2cb2e650c195b97
2020-07-23 14:27:51 +00:00
drh
2add24c0d4
An ORDER BY clause can slip into an SRT_Upfrom query via the query
...
flattener, even without the SQLITE_ENABLE_UPDATE_DELETE_LIMIT compile-time
option. So always enable the code to deal with that case.
FossilOrigin-Name: 6a3111cd0693bb51191d55a32ecd436341638d54ecb2df0778de681b4969241b
2020-07-23 14:12:47 +00:00
drh
abc3815860
Continuing work toward supporting unsigned 32-bit page numbers.
...
FossilOrigin-Name: 9ce1710aad43cebe5ad50859c7685fb83e40cdd4a60913bd2b7e659bc59942fd
2020-07-22 13:38:04 +00:00
drh
09cf569292
Fix a corner-case error in the new UPDATE FROM logic helpfully discovered
...
by OSSFuzz.
FossilOrigin-Name: 5cc200939d3a33566ddb858fc74c878acc72cfe5cf4c9b1d08e7b13e4d5ff566
2020-07-20 18:07:35 +00:00
drh
a192807c13
Faster column name lookup in the columnIndex() routine using hashing.
...
FossilOrigin-Name: de2a90812498e504c9b8eeb83bfc48a948b45e87bdfa242c0aa9f0377d90740f
2020-07-20 13:11:19 +00:00
drh
4c0086d7f0
Use #ifdef to omit code that is only reachable when the
...
SQLITE_ENABLE_UPDATE_DELETE_LIMIT compile-time option is used.
FossilOrigin-Name: 587ded6035a3ce91db81a29fe34ed30d0e59022cba6f107f25b04d034ef37ba9
2020-07-17 18:07:36 +00:00
dan
07ca7d610b
Make it an error to repeat the target object/alias of an UPDATE statement in its FROM clause.
...
FossilOrigin-Name: d90a37e930c66afe95165955ae47efde08f52c8ce16c4fb239da0233335db050
2020-07-17 16:31:37 +00:00
dan
42d7a77b61
Update this branch with changes from trunk.
...
FossilOrigin-Name: 53b8b507a10364f5d580655d89c950a5f14c2a8114625fd8749d77f289413b22
2020-07-15 11:00:29 +00:00
drh
19543b9b7b
Now appears to work. All legacy tests pass. Need to add new tests, however.
...
FossilOrigin-Name: 81e6450980ee745686aee5e2b84672d3c8404a041c82c658aa562013294b8628
2020-07-14 22:20:26 +00:00
drh
9d575e46f3
Merge latest changes from trunk. This branch still does not work.
...
FossilOrigin-Name: 6144387238c03b8b33ae98d624f7ffa44a7829d3e0d4a0a01b5528e71ab4f08b
2020-07-14 01:03:05 +00:00
dan
a7f82d9f47
Merge latest trunk changes with this branch.
...
FossilOrigin-Name: 5ee3c27e20d12a126fb773b428bb864102b949a5b26a8d5c523753dcedf4be10
2020-07-13 18:04:27 +00:00
drh
6af305de1e
Remove unnecessary code from the window functions implementation.
...
FossilOrigin-Name: 1e87da9c93309d1d69b1e0ab65c615b9ff9c1c6813ad0c7b90d2495be4ba0adc
2020-07-10 21:43:53 +00:00
drh
413b94af89
An attempt to get the Min/Max optimization working with IN constraints.
...
Not currently working.
FossilOrigin-Name: 4a64c16fb7a07431e534fb9bbcf778646be8a1c718d5d10873fbccb0c867aac7
2020-07-10 19:09:40 +00:00
dan
fa4b0d4453
Fix a problem with VM code generated for some aggregate SELECT statements that feature min()/max() aggregates both with and without FILTER clauses.
...
FossilOrigin-Name: 2094da753feb847254473b148d11e535c44dbae9b17454f1a4f8f7e90aefba3f
2020-07-01 14:07:45 +00:00
drh
64185e31fc
Do not run resetAccumulator() after a malloc failure.
...
FossilOrigin-Name: 1b426603f05033bcee0331c6f664cd5ed2ebf8f5d4cde8c6673c7a699ff53bb1
2020-06-29 16:30:10 +00:00
drh
067b92ba00
Extend the refactoring into extensions. Clean up stray newlines.
...
FossilOrigin-Name: 7a876209a678a34c198b54ceef9e3c041f128a14dc73357f6a57cadadaa6cf7b
2020-06-19 15:24:12 +00:00