drh
74273c4369
When it is known when preparing a statement that X cannot be NULL, transform the expression (X IS NULL) to integer value 1 instead of 'true'. This is because under some circumstances, "Y IS TRUE" may not be equivalent to "Y IS 1".
...
FossilOrigin-Name: 0fc7f7c2a90ce9bc3462478441b4e628c90e5adff0d461e6cc3521371b7f1f08
2023-03-03 17:11:15 +00:00
drh
2dd3b645b6
Improved and simplified logic for resolving the various aliases of the schema
...
table.
FossilOrigin-Name: 5c19491c36b9e2128430e4f153bdef48c3f7b6541d44f36044e8fc2921ecc830
2023-02-02 16:30:32 +00:00
drh
6f31eac7d8
Resolve all possible aliases and variations of the schema table names.
...
FossilOrigin-Name: e7a0112b235d97cb68c92b967bf2218b90258c243ec2b638aaac142392873126
2023-02-02 15:28:40 +00:00
drh
475e76d43e
In expression nodes of type REGISTER with sub-type COLUMN, ensure that the
...
iColumn field is set correctly, as otherwise the "IS NULL" operator might
be incorrectly optimized. Fix for the problem described by
[forum:/forumpost/d010a26798915b53|forum post d010a26798915b53].
FossilOrigin-Name: 0819a1869a39d54a405259ea323365506a182962a02affdef16a03446005da64
2023-01-13 19:29:46 +00:00
drh
9553016377
Make use of the sqlite3ExprDeferredDelete() interface in the previous
...
check-in, and in another place where it might be helpful.
FossilOrigin-Name: 22f90e9683d5cd6619ccdb06a02e9dde9f4b7457391c0dbb4c3216c22fc0db47
2022-07-20 20:36:26 +00:00
drh
3245f3be67
Simplify the logic that converts the "1" expression in "ORDER BY 1" into a
...
copy of the expression that defines the first output column.
FossilOrigin-Name: e1f1cfe7f4387b60443bd31742e2f49db1a2d0443200318a898ba0da216619be
2022-07-20 16:42:40 +00:00
mistachkin
07fae32db0
Fix harmless compiler warnings seen with MSVC.
...
FossilOrigin-Name: 61e2094afbbcbd5fdf5c3ec06b96134fafb7b854dc9bfa7d0619bed6d35efbe4
2022-07-06 23:50:01 +00:00
drh
b9294de1e6
Allow a HAVING clause on any aggregate query, even if there is no GROUP BY
...
clause. This brings SQLite into closer agreement with PostgreSQL and fixes
the concern raised by
[forum:/forumpost/1a7fea4651|forum post 1a7fea4651].
FossilOrigin-Name: 9322a7c21f1c22ba00e9b889223e89bc1591db6e561ce05091e905e98c1bf2b3
2022-06-21 13:41:24 +00:00
drh
67a99dbee8
Improved names for flags on the Expr object: EP_FromJoin becames
...
EP_OuterON and EP_InnerJoin becomes EP_InnerON.
FossilOrigin-Name: 1ffea07ff98b894729c698b681cc7433df3bbfccd8a0529a706908602a636937
2022-05-13 14:52:04 +00:00
drh
d88fd53989
Organize the various flag bits of the ExprList_item object into a substructure
...
so that the whole lot can be copied all at once. Faster and smaller code.
FossilOrigin-Name: 5341d4bbe9a943f9cdbbdea829e18f108e98972ebb706396c50fc62fcc6a6328
2022-05-02 20:49:30 +00:00
drh
45e41b7371
Add the ability to access the USING columns of the right or left tables
...
of an OUTER JOIN even if the OUTER JOIN is in parentheses. Prototype code
only.
FossilOrigin-Name: c3a427575fe71de3061495059e253c72c7213e2925ee2873e4f59fc73bfae103
2022-04-22 23:18:21 +00:00
drh
18f8600fe6
Avoid materializing columns of SF_NestedFrom subqueries that are never used.
...
Other code improvements manually imported from the right-join-paren branch.
FossilOrigin-Name: cd8272fc2a34d1b245fd95208b9b601266ee7d2ff0f5ce52d03752f2c4e852a2
2022-04-21 13:11:26 +00:00
drh
910e57b9df
Remove an unnecessary assignment operation.
...
FossilOrigin-Name: ed46527aca170ccbe9ed9ea4ae065db72c82dec17da7b99c928fae4495f05c2b
2022-04-20 16:53:23 +00:00
drh
815b782e99
Improved tracking of nested SELECT objects used to implement
...
parenthensized FROM terms.
FossilOrigin-Name: 0da2232624571f4020c05d775ea518514d748fba8dacd4caba2e2e6ed1ae399f
2022-04-20 15:07:39 +00:00
drh
2627cbd4b5
Add a new comment to the body of lookupName(). No code changes.
...
FossilOrigin-Name: 22fa9b9b450fbbf7578597714eb1094f7d7433ac13497dc7d4a9affc4a2652ad
2022-04-20 12:02:52 +00:00
drh
2e61588931
Remove unnecessary cases for the resolver.
...
FossilOrigin-Name: 5bc9aa68e2f938f6a70dd4b08703fe52416d17efe461ec65d37332b57b827fdd
2022-04-19 09:39:39 +00:00
drh
79a25ee021
Fix to the coalesce() function generation in the resolver.
...
FossilOrigin-Name: 584bd55e20669d09b7efe3429ba847c42c32fb1eb960784c4e0dedcd96899313
2022-04-18 00:57:11 +00:00
drh
a3e2518bb3
Fix to the logic that computes coalesc() functions to resolve USING terms.
...
FossilOrigin-Name: 20388548d868511f8c8437718985d75fe9801835811fec716f1700727b9aa367
2022-04-17 23:46:18 +00:00
drh
fe14699765
Further improvements to USING() processing for RIGHT and FULL JOINs. All
...
currently known issues are now resolved. Performace is improved.
FossilOrigin-Name: 9fd3f22e2228dfba127f6ffe549109f3a4e910fa124adcc9c5483931bd6d5cd7
2022-04-17 18:46:17 +00:00
drh
977eef6cdc
New test cases. One of the new test cases shows a flaw in the base design
...
of RIGHT JOIN.
FossilOrigin-Name: 4c3ce6475a67b1e207a5b63d9e2d38ee5bc45c899ad00ee327f292bf59039b9c
2022-04-16 13:55:48 +00:00
drh
bdbda1eb1f
RIGHT JOIN USING now appears to work the same as PG-14. Legacy tests pass.
...
FossilOrigin-Name: 5bfb862419541de955dae35fc91f6e9fc70e2744bb786d49fa26bede80b9091d
2022-04-16 12:40:52 +00:00
drh
e62d9149a6
Avoid deleting substructure of the Expr node in lookupName() until after
...
the error message is generated.
FossilOrigin-Name: b8e717663957dfd84e580bf21bc8e8881b33fdb94a2cc0c664a230e54d5e5076
2022-04-15 19:49:28 +00:00
drh
bb3c62a758
Progress toward a working USING for FULL JOIN.
...
FossilOrigin-Name: fed2646adecb0a05dd674dc1cd2c0ae205078fe552ba93b8d68891c728c67637
2022-04-15 19:27:02 +00:00
drh
22c4bc8991
The sqlite3ProcessJoin() routine converts a NATURAL JOIN into a JOIN USING so
...
that henceforth the NATURAL keyword can be ignored.
FossilOrigin-Name: 8378e1e0d289627fb294ccd3f5865ef49df3a42b8a5aa211e21be1b42d9da753
2022-04-15 17:08:40 +00:00
drh
a76ac88af8
Preliminary code to support RIGHT JOIN. Everything seems to work, except that
...
the code to compute the unmatched rows for the RIGHT JOIN has not yet been
added, so the result of a RIGHT JOIN is currently the same as an INNER JOIN.
FossilOrigin-Name: 415abd6731b8e8a605adabfa6066c8a852a8531c300df41325d5f7e75cae5a70
2022-04-08 19:20:12 +00:00
drh
d44f8b2385
Improved technique for parsing the ON and USING clauses of a join is faster
...
and uses less memory.
FossilOrigin-Name: 158156a3e3d50042cafc75dea3aaaa68b1f2efb9c3d178518ea6e68e32e0d21c
2022-04-07 01:11:13 +00:00
drh
62fc069eb4
Further improvements to localization of errors in input SQL.
...
FossilOrigin-Name: fa34676042720161ca03f3926814152eb1d144ec12fd2b44e5429408ea4ad5b0
2022-02-06 00:30:04 +00:00
drh
4f77c9208a
Enhance sqlite3_error_offset() to report the position of unresolved
...
identifiers.
FossilOrigin-Name: 5b8d2577907abda10de29884716bacc10bff0df1451228a0ac40342dbea6d589
2022-02-05 23:11:19 +00:00
drh
7f1c111948
Minor typo fix in comment. No code changes.
...
FossilOrigin-Name: f9b763042c5c4446115c5375a8e4731e522e36ad9fc53e9ef775de9bc297ea19
2022-02-03 18:14:22 +00:00
drh
0c7d3d399d
Remove many redundant checks for sqlite3.mallocFailed now that any OOM should
...
cause Parse.nErr to be non-zero.
FossilOrigin-Name: 1f7fa46126ea33ed30e93186aff3df51068aeb4be6f79a102bfe8c4e44941d71
2022-01-24 16:47:12 +00:00
drh
41584df573
Ensure that the affinity of columns is honored in the RETURNING clause.
...
See [forum:/forumpost/e0c7574ab2|forum post e0c7574ab2] for the bug report.
FossilOrigin-Name: 4711fb69547f4f17653ab116030c32fdcc2c836410349d1d025866ffc15704da
2021-12-29 04:31:54 +00:00
drh
ceeb04bf90
Raise an error if a schema name is attached to the table-alias name of a
...
subquery or view. See
[forum:/forumpost/021a33600b|forum post 021a33600b] for the bug report.
FossilOrigin-Name: 8af8c153f8c3fe16db1c2280571e005838c4ea3c48929ad7660a1686e49ed255
2021-12-24 13:30:22 +00:00
drh
90cf38be63
Refactor the code that figures out which SELECT in a cascade of nested queries
...
a particular aggregate function belongs to. This fixes the problem
reported by [forum:/forumpost/c7cc2aa3546e39c1|forum post c7cc2aa3546e39c1].
New test cases in dbsqlfuzz and th3.
FossilOrigin-Name: 74aec5dd1df95b5635f4da1f13753f113ea1d61de3dc3a1523ba51089c1900e4
2021-11-08 23:24:00 +00:00
drh
477572b9f1
Protect access to the Expr.y union using nearby assert()s and branches.
...
FossilOrigin-Name: 87e2f5eb436fc448427b0e24fb70f29688796b513b8c7b12f1a21540dae1e56d
2021-10-07 20:46:29 +00:00
drh
a4eeccdfdf
Protect all accesses to the Expr.x union using nearby assert()s and branches.
...
FossilOrigin-Name: 8eaa1d4a98b24adf245bbd2fe9212aa6a924a0f09c445906d7f87574f36a7423
2021-10-07 17:43:30 +00:00
drh
f975107437
Protect all accesses to the FuncDef.u and Expr.u unions using nearby
...
assert()s or branches.
FossilOrigin-Name: 9af863f065e0bef491c2ab7525194505f9516f4e6dfc789d2e3a9d2c2438533a
2021-10-07 13:40:29 +00:00
drh
84d90319e5
Dbsqlfuzz (a097eaad43c3c845b236126df92fb49b25449b0c) found a way to reach the
...
assert() that was added to sqlite3_declare_vtab() by [eb94f4a8174436b1].
This check-in fixes the problem.
FossilOrigin-Name: 857d26a68cf439e9cba4f8a3b326c69366fc486a876b76835538709ee39b8713
2021-09-24 19:57:32 +00:00
drh
cf9d36d1b3
Refactor field names in the Column object, zCnName and zCnColl, to make them
...
unique and thus easier to find amid all the other code.
FossilOrigin-Name: 8b781dcaf68e0cf12a844708c82eee00193e340195cbca915d077e4846983bf3
2021-08-02 18:03:43 +00:00
drh
348e002ec9
One of the optimizations of check-in [de9c86c9e4cdb34f] does not work for
...
terms originating in the ON/USING clause, as demonstrated by
[forum:/forumpost/6cf3bb457c3f4685|forum post 6cf3bb457c3f4685]. This
check-in disables that optimization for ON/USING terms. Also improve the
TreeView display for the resulting "true"/"false" nodes to show that they
originate from the ON/USING clause. Add a testcase() to the other optimization
to show that it can still be used for ON/USING terms.
FossilOrigin-Name: 1f6796044008e6f3a61bcf390c0c7eb31947e971f0edada74e7a3a211f8ae76a
2021-07-22 16:07:01 +00:00
drh
ee612e2a5d
Minor comment improvements.
...
FossilOrigin-Name: 6854b5919beefa43da21ba739e82d583183c8cdfe5dd63e27a810ac1ffe2330b
2021-07-16 20:16:19 +00:00
drh
bb30123178
Attempt to omit ORDER BY clauses from FROM-clause subqueries if those ORDER BY
...
clauses do not affect the output. See
[forum:/forumpost/2d76f2bcf65d256a|forum thread 2d76f2bcf65d256a] for
discussion. This can help the query flattener in
some cases, resulting in faster query plans. The current implemention does
not always work.
FossilOrigin-Name: ef97c3e7c3ea2cf1a4db6591328fe7ce3f1d189afc2d578159135824ec89e620
2021-07-15 19:29:43 +00:00
drh
dd51365408
Put ALWAYS() on a branch that is always true due to [d4097364c511709b].
...
Fix a testcase precondition associated with the same check-in.
FossilOrigin-Name: 55e2fbebb0a2c9991feef46f31e79b82a24de272aae836bf4d3c06ee06ef1a70
2021-07-02 12:25:30 +00:00
drh
4d466698a2
Fix a harmless assertion fault discovered by
...
[https://oss-fuzz.com/testcase-detail/5517690440646656 |OSSFuzz]. The
assertion fault is harmless because the assert() checks a condition that
that is harmless if false and the assert() is disabled in production
builds.
FossilOrigin-Name: 79443aabe1db8cc2ff9537fde0dac0e858eae3f3848ee9cc1b8fba47b824bf08
2021-07-02 12:08:12 +00:00
dan
b9248ef5c7
Allow unqualified "rowid" references to be used in join queries, provided that only one of the source objects has a rowid.
...
FossilOrigin-Name: d4097364c511709b1874881a0c036640777d1f724165416adf6f53a41f8c6e40
2021-07-01 18:19:17 +00:00
dan
b56a09079e
Fix a problem with running ALTER TABLE against schemas that contain compound SELECT statements with ORDER BY clauses containing one or more references to the second or subsequent component SELECT statements.
...
FossilOrigin-Name: 587a3044468a40707c714d013cb766d8a4d9eb13bb20871846a0e8c34bea8cf4
2021-06-01 15:37:14 +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
feef447271
Add ALWAYS() to branches that are no longer reachable due to recent
...
enhancements.
FossilOrigin-Name: 63c50fbdeed831ba450d1dce67e968a7daa2b69ac1270eb271fb1e1873d4a07e
2021-04-26 21:00:51 +00:00
drh
3c6edc8a11
More aggressive detection of OOM errors in resolveAlias().
...
dbsqlfuzz 7f96832c2ef7ee472022ed805b064e55e41094b2
FossilOrigin-Name: e99faf4f82746761c389e24db1b00ee94b9f849e7bcb29517fa0ca10290afc41
2021-04-26 15:28:06 +00:00
drh
de0e1b150c
Performance optimizations in the code generator, especially in name
...
resolution.
FossilOrigin-Name: ab83a99899ceae931b43e0c4b3f8f8b83bc832f1568de5692c0d038c968f8a87
2021-04-16 22:53:57 +00:00
drh
9920bf975b
Add an assert() to show that the SF_Resolved flag does not get set if
...
errors are being suppressed.
FossilOrigin-Name: f455c5b0bda3d303f9269db37efaa8ff0b356622b2df0a7544f83bb334118180
2021-04-12 17:34:03 +00:00