drh
788ade3487
Allow arbitrary expressions as the second argument to RAISE().
...
FossilOrigin-Name: 003e1c8c27824cb917b3869bdf9000f32ff0b6887a2aff8516712cfe865cf34d
2024-05-08 17:42:13 +00:00
drh
07305e3a3a
Omit redundant unary + operators from the AST.
...
FossilOrigin-Name: f81cc149e5e308785502b36e83eaaf3d31c72520793e0596d5496abd70f9cda8
2024-05-06 20:18:30 +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
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
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
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
1ffaa03adc
Allow "_" characters to appear between any two digits in an integer, real or hexadecimal SQL literal.
...
FossilOrigin-Name: 0e6700f43f133510c8049b2c5a2610cb3be29da7ed4d39b1fa65dc22c4cf529b
2024-02-27 10:52:41 +00:00
drh
48e899a86e
Use an alternative memory allocator for parser stack space that includes
...
a call to sqlite3FaultSim() to facilitate testing.
FossilOrigin-Name: 7c36d560ff4e8e1b3f8fad972ec7f07837e4fa4e6861fafde970ffccfda5a2f1
2024-01-27 12:25:07 +00:00
drh
3467698000
Omit the "parser stack overflow" error message, since it no longer occurs.
...
Replace it with an ordinary "out of memory".
FossilOrigin-Name: 33f17ec24880937892d47a5a321c43785ca18e03dde28a9a0d50ae86edb29679
2024-01-27 01:35:07 +00:00
drh
82bf13796a
Experimental changes that prevent parser stack overflows by growing the
...
parser stack with heap memory when it reaches its limit.
FossilOrigin-Name: 3fd062905fc20507b7cfc97fa976ac5b57c5b68926bf9136bd5ea4265d2d6528
2024-01-26 20:34:48 +00:00
dan
406eb5a146
Add extra checks for the validity of a numeric literal to sqlite3DequoteNumber().
...
FossilOrigin-Name: d57407ef59baf699b72c8c4859abfaa7977dd41f6f16eb8fe1d53a68806eb966
2024-01-23 11:20:58 +00:00
dan
3eae6664a0
Allow "_" characters to appear following any digit in an integer or real SQL literal.
...
FossilOrigin-Name: 401650aaccbc99246bd4e1ff37a28b78f528178aee2f294d87b9f7fecd7432bb
2024-01-20 16:18:04 +00:00
drh
f8202f1ff3
Enhance the parser so that it can accept an ORDER BY clause on a function
...
invocation. For this incremental check-in, the ORDER BY clause is currently
ignored.
FossilOrigin-Name: 3a98ff24bf468ed42d410a9a12d9f9b2ca154c7babe99fd6bc6f7b0565e0d132
2023-10-18 13:18:52 +00:00
drh
e393f6eff0
Add the experimental sqlite3_stmt_explain(S,E) interface.
...
FossilOrigin-Name: 5683743ddf0bb051f2fe5d137cc18407e000e77e9faa9010a22e3134b575638b
2023-07-15 16:48:14 +00:00
drh
56a410741b
Address various harmless compiler warnings from
...
[forum:/forumpost/d526da8ee4|forum post d526da8ee4].
FossilOrigin-Name: 365caf2f97e8f15842f52536e8d05d359e9d6e863182e020ce14a9a9f27ee057
2023-06-16 14:39:21 +00:00
drh
e30ecbfb84
Improved sqlite3_error_offset() values for bare column errors on '*' and
...
'table.*' expressions in SELECT statements.
FossilOrigin-Name: 118fe600876686273f85d0a080a21267e83c11826365f3220336b1bd39562518
2023-06-13 18:10:52 +00:00
larrybr
55be21647e
Fix straggler misspellings and tidy the custom dictionary. Also include pickups from [forum:/info/c61fb09afd|forum post c61fb09afd].
...
FossilOrigin-Name: 8c291d99946eb32b20b743921202f9c7cfb716268ff526817b27adbb7942e40b
2023-06-07 17:03:22 +00:00
drh
d9eb39e625
Early out from sqlite3Prepare() following an OOM to avoid possible
...
problems further along in the parse. Fix for the NULL pointer dereference
reported by [forum:/info/2e5131839365682a|forum post 2e5131839365682a].
FossilOrigin-Name: f35ce7c122017009496b777f33e641d0be086abee6ea8e25aab4c3e0fb45731a
2023-04-22 11:29:36 +00:00
drh
e61aa230ce
Attempt to suppress harmless compiler warnings reported by
...
[forum:/forumpost/fc98845c06|forum post fc98845c06].
FossilOrigin-Name: f6e6c5f94cef83645288568a344a0ff64e4ef17b10fab28996567a94db0a002a
2023-04-19 12:08:46 +00:00
drh
7802389398
Allow functions named using keywords "CROSS", "FULL", "INNER", "LEFT",
...
"NATURAL", "OUTER", and "RIGHT".
FossilOrigin-Name: eeac3d5ec93e9cf8613d764b700b6e39a3ffb39b3953ce1e6a2f84dd986f9e86
2023-03-11 12:27:12 +00:00
drh
d6ba4252b2
Ignore extra parentheses around a subquery on the RHS of an IN operator,
...
because that is what PostgreSQL does.
FossilOrigin-Name: ecdeef43b27412b0b0b09e09a62ad3a03836a3fc80f2070268090e7ca8f02712
2023-02-13 19:32:40 +00:00
drh
1943005f62
Apply the UPDATE-FROM file from check-in [98b3816bbaf539ea] to
...
update-delete-limit builds.
FossilOrigin-Name: 7e87892c249f023ee9ed1d5f75a9ad8db10fb38f14dd9e6954b12b9b28400b07
2022-05-28 14:03:23 +00:00
drh
fb98dac04f
An attempt to get UPDATE FROM working when the FROM clause contains a
...
RIGHT or FULL JOIN.
FossilOrigin-Name: a124e4f96f883d8682ba7a253d33a9565ed0fc3580525225b95733bd3782a806
2022-05-25 02:32:11 +00:00
dan
5348fbe332
Avoid treating constant expressions like "? IN ()" or "? NOT IN ()" as integers if they appear in a GROUP BY or ORDER BY clause.
...
FossilOrigin-Name: d8b249e8cdf0babe1427d0587dbdc27a52ec06a5ef3a20dfb05a0ea4adb85858
2022-05-17 15:01:01 +00:00
drh
902e2602c2
Add IS NOT DISTINCT FROM and IS DISTINCT FROM binary operators which are
...
equivalent to IS and IS NOT, respectively, for compatability with PostgreSQL
and hence standard SQL.
FossilOrigin-Name: db27611e172102483eaede3981d473e3d5bf93d98bc68f480398b1573876349d
2022-05-12 11:45:20 +00:00
drh
825a6bffc4
Ensure correct fg.isNestedFrom values even on crazy parses.
...
FossilOrigin-Name: e611e8e62c948d28cd3f28452d3096bab06998a685ed9434061cc2054f5cac32
2022-04-21 14:08:29 +00:00
drh
fdc621aece
Since the query planner is unable to cope with a LEFT JOIN on the left-hand side
...
of a RIGHT JOIN, detect that situation early and raise a parsing error.
This is a temporary measure that needs to be fixed.
FossilOrigin-Name: 6d5d6e0403241c99ab4a47d7b6eedcd8ebc615a8ca8d66d7e81171f901b170d7
2022-04-16 19:13:16 +00:00
drh
9c949b1c46
Omit an unnecessary initialization in tokenExpr().
...
FossilOrigin-Name: 8f6ae686019c61a03fe70eb78d2b529b1cf126215b45513a97cfdf7086f82f54
2022-04-07 12:10:00 +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
200adc9e75
Faster parsing of the FROM clause in joins for the common case where there
...
is no INDEXED BY clause.
FossilOrigin-Name: 848b7a0ea99ddc52091b78313f018c07d00a0e28aa6da8c1cae709c1d03468fe
2022-04-06 19:46:20 +00:00
dan
02ede43da2
Fix a possible user-after-free in ALTER TABLE found by asan.
...
FossilOrigin-Name: 9252619d410293ddefd108f5cf81b6fb4932bd3f2ceaaa92abb7542e34f66111
2022-02-12 16:02:37 +00:00
drh
17a93ae1b8
Record the error offset on INTEGER tokens.
...
FossilOrigin-Name: 38e057a580613be176552e230e40b4434a9ed57a82d407e92a23c7b8e62c0b0e
2022-02-06 11:26:51 +00:00
drh
796588ae07
Record the position of many identifiers in the parse using the new
...
Expr.w.iOfst field. This is done with the idea of providing offset
results for sqlite3_error_offset() for a more kinds of errors, though that
part is not yet implemented.
FossilOrigin-Name: 32a3a53b62ab09ac2212905e7f42fe6f1b09d891e015203e5caf4cb16262f18e
2022-02-05 21:49:47 +00:00
drh
d5326c333f
Add new binary operators "->" and "->>" to the parser that evaluate to
...
2-argument SQL functions by the same name. Add new "->" and "->>" functions
to the JSON extension that are aliases for json_extract().
FossilOrigin-Name: c4e4e3a3fc5da0381ccb7930706e57d7831d87f9c63bafe49ae64117701e1cfe
2022-01-07 14:58:47 +00:00
drh
daebb0f9a0
Move the TK_IS token so that it is adjacent to the TK_IN token, as this
...
allows the C compiler to optimize better, resulting in a slightly smaller
and faster executable.
FossilOrigin-Name: 8832fa9088414a8d285a457a4effad0b7d610a87ca73cfb5c5812e784649761e
2021-12-02 14:28:36 +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
dan
37f3ac8faa
Change things so that SQLITE_OMIT_VIRTUALTABLE implies SQLITE_OMIT_ALTER_TABLE.
...
FossilOrigin-Name: 2f7c946c5f25a858167f5193ca06e53310394c8cff15426ab8a1327a1ec835fd
2021-10-01 20:39:50 +00:00
drh
44183f83d0
What would it be like if you could add the keyword "STRICT" after a CREATE
...
TABLE statement to cause the table to (1) allow only a few well-defined
datatypes, (2) rigidly enforce those types, (3) require NOT NULL on PK
columns, (4) always enforce foreign key constraint, and so forth? This
branch seeks to explore that question.
FossilOrigin-Name: 78732b9f98936693ae29c85a692c35a84c7d065aec79903af34b08d18f10a5e6
2021-08-18 13:13:58 +00:00
drh
77441faff5
Avoid clownfeet in the names columns when the column names are quoted
...
in the original CREATE TABLE statement.
FossilOrigin-Name: 980f7292afd45a8e73272e2139b55b99ab86167febec9fd0bf0356e8167b2ee9
2021-07-30 18:39:59 +00:00
drh
7098859031
Fix a harmless compiler warning - duplicate local variable named "pRHS".
...
FossilOrigin-Name: 5bc05faf279e0c98be83cb6d56f669a60ff515c8244fca6280991ed0dc5e7ae7
2021-07-07 19:40:18 +00:00
dan
74777f994d
Improve the error message in cases where there is a row-value on the LHS of an IN() operator, the RHS is a list (not a sub-select) and at least one element of the list is not a row-value with the correct number of elements.
...
FossilOrigin-Name: 6b22f4e71dbc14c887ebbda67095b5faaa8079cac87cd4ab5a2ae90c71cd9633
2021-07-07 13:53:55 +00:00
dan
9289f5103d
Handle "<vector> IN (<vector>, <vector> ...)" in the same way as "<vector> IN (VALUES(<vector>, <vector>, ...)".
...
FossilOrigin-Name: 981d230ece98ce89502dab02aa44f73699a9d0e4fce3e9e9dfd47444a5a9990f
2021-07-06 20:44:32 +00:00
drh
0542812726
Additional defenses (above and beyond [b986600520696b0c]) to prevent an
...
invalid subquery from causing problems downstream. If an error is found
while analyzing a subquery expression, change the expression to TK_ERROR
so inhibit further processing on that expression.
dbsqlfuzz cf624b8c0484c66e0f552bf6475e3e3f2c22b24e.
FossilOrigin-Name: 0be6b6c9f7c562e764792a4a5eb53ed11b230174b19361f7cd7778c743314bbd
2021-05-24 00:17:04 +00:00
drh
c645871123
Ignore the TEMP or TEMPORARY keyword on CREATE statements which parsing
...
the schema out of an existing database file. Those keywords should never be
there. This change simply adds robustness in case a legacy or damaged database
is seen.
FossilOrigin-Name: 65ec39f0f092fe29e1d4e9e96cf07a73d2ef7ce2c41b6f1cd3ab23546ada0e67
2021-04-28 17:37:26 +00:00
drh
d4f7ec7663
Hardden the filter_over grammar rule against OOM faults.
...
dbsqlfuzz e47c54502a9c36778a5ed553199d5870e2ebd9f2
FossilOrigin-Name: f375f541efee520042be83548ad96dfa889e2c349eda5db7612ac2336dd4e4f9
2021-04-08 14:15:26 +00:00
drh
aae0f74e64
Earlier detection of a misplaced ORDER BY or LIMIT clause in a compound
...
SELECT. This prevents problems in recursive CTEs with multiple recursive
terms in which there is an ORDER BY or LIMIT clause on the last non-recursive
term.
FossilOrigin-Name: e893f88750ea64d45922429e022c585748974016404f2a2b7952f5a227865246
2021-03-04 16:03:32 +00:00
drh
745912efac
Add the AS MATERIALIZED and AS NOT MATERIALIZED syntax that works like it
...
does in PostgreSQL.
FossilOrigin-Name: a6bb272ec0c758ab069bfc07443624e0ea7910b1f23224ee078d050fa3ccf068
2021-02-22 03:04:25 +00:00
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
f824b41e64
Break out the Cte object from the With object. This will make it simpler
...
to add new kinds of Cte objects (ex: DML statements) and/or MATERIALIZED
keywords in the future. It brings trunk into closer alignment with the
experimental as-materialize branch.
FossilOrigin-Name: f03efe905d7b40fb25f9f78b874bb56c6d6ccacb60f86b3b199d430d5eade8d2
2021-02-20 14:57:16 +00:00
drh
329cb9eb88
The COLUMN keyword in ALTER TABLE DROP COLUMN is optional.
...
FossilOrigin-Name: a22f87fb6c43dd6217691c8dd1cdcd7880068024fb779ca8a5def068d72c3e6b
2021-02-19 09:36:50 +00:00