drh
5e3a6ebf34
Fix the table name aliasing on INSERT so that it occurs before the column list
...
rather than afterwards, just as it does for PostgreSQL. Add table name
aliasing to UPDATE and DELETE.
FossilOrigin-Name: 861a2e2a4895f96a5d8e1730e744983b2ac4311d0c2cf201c0e59f409030d5d7
2018-04-19 11:45:16 +00:00
drh
54514c9813
Remove unreachable branches. 100% MC/DC in TH3 now.
...
FossilOrigin-Name: 558865d5c3c297155e1be5ea73effb46a995ea146bd745b23330c94782c6c45b
2018-04-17 21:59:34 +00:00
drh
0a6259f539
Remove the MySQL upsert syntax. As an optional alias to the insert table
...
name in order to finish out PostgreSQL upsert syntax emulation.
FossilOrigin-Name: 810d9f63be46c1452718b05e51c519fb64e9fabf2f1813b5e07b1041dbb71880
2018-04-16 13:26:53 +00:00
drh
eac9fabbc9
Add support for the "excluded.*" names in the UPDATE clause of an upsert.
...
FossilOrigin-Name: 0203f34faae07fbea0bff2d23b81fb37df8854cded4cdadac5a034132a096b6d
2018-04-16 13:00:50 +00:00
drh
e9c2e772f1
Back off of the extended upsert syntax that allows multiple ON CONFLICT
...
clauses. The syntax now is exactly as in PostgreSQL and MySQL. Add support
for WHERE clauses on the conflict-target phrase, for partial indexes.
FossilOrigin-Name: 2c1b1987d8de1efa8ed7e1f199710e32ff20edf8ceec570514fc63bb1ef264e0
2018-04-13 13:06:45 +00:00
drh
788d55aa77
Begin adding upsert logic. This is an incremental check-in.
...
FossilOrigin-Name: 809696434097e62e8ef486c7478b5eb62c0cf1342522a5584939fade82821410
2018-04-13 01:15:09 +00:00
drh
dab0eb58d7
Extend the upsert syntax to allow a WHERE clause on the UPDATE.
...
FossilOrigin-Name: e4396c540a22fbc087a01050a32bfad514259d700c2381d7ac912580d7dca00f
2018-04-12 17:28:06 +00:00
drh
6cd7d489db
Update the upsert parsing so that it accepts conflict-target labels using
...
the PostgreSQL syntax, and also accepts the MySQL "ON DUPLICATE KEY"
syntax.
FossilOrigin-Name: c48f64d8ae2625a19267b02e4a173a07766934235ad3052cd9d38f5ecbcbfbc3
2018-04-12 15:43:05 +00:00
drh
46d2e5c35a
Add the Upsert object for holding upsert clause information.
...
FossilOrigin-Name: d83eaed539b274c2abd650d07522f491865d4917acbb64d05d01b3ba5c3cd446
2018-04-12 13:15:43 +00:00
drh
35e86bf15d
Merge changes from trunk.
...
FossilOrigin-Name: 9f6f11805eb7cc02f7eb3044250f3981d46d2dbf0c421bd73e7f8b437390db25
2018-04-12 12:25:45 +00:00
drh
2424aa723b
Help the parser run faster by avoiding the "explain ::= ." production.
...
FossilOrigin-Name: d7ec7b5970df9e542401f8299e098a5039d1875e2e3383dad06a0ec998589b6e
2018-04-11 17:10:54 +00:00
drh
a5746e0317
Minor changes to the input grammar resulting in a faster and slightly smaller
...
parser.
FossilOrigin-Name: a2c443c0ee9a0e0b2d10298b8a74ff00a1a66e3f96f4093348f0fef977587204
2018-04-09 20:36:09 +00:00
drh
2c2e844a36
More complete parsing of UPSERT, including UPSERT within a trigger.
...
The sqlite3Insert() logic to actually perform the UPSERT is not yet
implemented, however.
FossilOrigin-Name: 5cc2a5a315a2f26b392811de45b3dc352873a173c2c6c65f37ce2e5f88a71cd2
2018-04-07 15:04:05 +00:00
drh
26cf56f80b
Demonstration of how the parser can be augmented to recognize a
...
PostgreSQL-style UPSERT. This check-in implements parsing only.
FossilOrigin-Name: 9b22905b15791170998a5d1bcf42c7b60b5064f6848fff827bd55e864bf724aa
2018-04-06 19:36:49 +00:00
drh
cfd74700da
Minor improvements to ".selecttrace". No changes to non-debug code.
...
FossilOrigin-Name: 03e541f606ead1a13e1084db88e168278c82a2ba72b18c89baafeab3141367b4
2018-03-19 22:28:34 +00:00
drh
d7fd899eeb
Fix a potential NULL pointer deref following OOM in the new IS TRUE
...
logic.
FossilOrigin-Name: 48775ec693c21927ff26448acc614dd67d56240fa263499da2a9fe405c546c32
2018-02-28 04:30:55 +00:00
drh
96acafbea7
Clean up comments and variable names prior to merge.
...
FossilOrigin-Name: 6445519e91c4f98b4a9a45d5091d733c31497ebf0eb23a76edce3091f626035d
2018-02-27 14:49:25 +00:00
drh
43c4ac8bfe
Code simplifications. New test cases.
...
FossilOrigin-Name: 57508518ef9d003d259ba98dcc32e5104aca26731a7161808741fe10bc0830d0
2018-02-26 21:26:27 +00:00
drh
171d16bb21
Get the "DEFAULT true" and "DEFAULT false" phrases working correctly in
...
CREATE TABLE.
FossilOrigin-Name: 8002f87d96b3f885cd208e7d204907a33ba60c4057ce2338b71e2de41215b0e5
2018-02-26 20:15:54 +00:00
drh
6116ee4eee
Compute the correct column name even if the column identifier is the
...
very last token in the SQL statement. This fixes a problem introduced
by check-in [0fdf97efe5df745510c6b] and reported by the community during
beta-testing.
FossilOrigin-Name: 36b89d728ff13d395fe0e1db8e7c01263f73dccb278b3ece27f6ef78e909b492
2018-01-10 00:40:06 +00:00
drh
f259df5fc8
Show the text of individual statements within a trigger, as they
...
execute, as comments in the output from sqlite3_trace() and sqlite3_trace_v2().
FossilOrigin-Name: fe3d2b97d8945e6a9636472f77bcdc92cc5dda8b3e6e3a4fcbdd0a212ea5b9aa
2017-12-27 20:38:35 +00:00
drh
d3f5d6110b
Grammar changes: the sclp non-terminal should always be followed by a scanpt.
...
FossilOrigin-Name: 74a0181fc016fb0b7934188cfcc2ec26c689f0d33cc42453875f4392b7240d3a
2017-12-24 17:01:54 +00:00
drh
1be266ba08
Remove the ExprSpan object. Instead, keep track of the test of subphrases in
...
the parse using the "scanpt" non-terminal.
FossilOrigin-Name: 3eab7bdc44e0878b83dc86f27058a40c2ffafeacadc566f03693f6dc7e40a504
2017-12-24 00:18:47 +00:00
drh
8c0833fb21
In the parse tree, combine LIMIT and OFFSET into a single expression rooted
...
on a TK_LIMIT node, for a small code size reduction and performance increase,
and a reduction in code complexity.
FossilOrigin-Name: 3925facd942c9df663f9b29b1e6f94f6be14af8c2b99eb691bfc836b4c220826
2017-11-14 23:48:23 +00:00
dan
3b61ebb8de
Omit some extra code from non-SQLITE_ENABLE_UPDATE_DELETE_LIMIT builds.
...
FossilOrigin-Name: 72be33f9c84de3ec4afc40549482417456ca82c1d16b473dc034b144055271e5
2017-11-10 20:13:14 +00:00
dan
26caf5bef1
Fix a problem with (DELETE...LIMIT) statements against WITHOUT ROWID tables
...
with a single column PK.
FossilOrigin-Name: 35477a3dcceadf5dade8e036d5a2ce91b9ca83c4b85d309db233bdbcf538b1cc
2017-11-10 15:42:21 +00:00
dan
b3c16b899b
Add SQLITE_ENABLE_UPDATE_DELETE_LIMIT for views and WITHOUT ROWID tables.
...
FossilOrigin-Name: 584b88aaf89ab30cb51185396b7b50c6ecba286add023a26ab41d865b9c605ce
2017-11-09 19:53:06 +00:00
drh
6a8700b97b
Rearrange integer token values in the parser and logic in the
...
resolveP2Values() routine for a small size reduction and performance increase.
FossilOrigin-Name: 1cad2926ad88b83becab1326bd189d7bac8ba6d470b36ba5d29af5c9fb016014
2017-08-02 11:04:00 +00:00
drh
980a89e630
Remove unnecessary EP_Leaf settings on the Expr object.
...
FossilOrigin-Name: f951c8b71b2369da62a329c792af5e3d3087bbe020f38c68ca1d0a594b904c08
2017-07-12 17:26:44 +00:00
drh
971ecd7eaa
The EP_Resolved flag on the Expr object is not required for correctness nor
...
performance, so remove it.
FossilOrigin-Name: 54f55d3b7973e326541a81bfb2e752a2f6618e4fec9a3631b95f28e12e9c6e34
2017-07-12 17:08:24 +00:00
drh
07a3b11a50
Slightly more compact implementation of the byte-code generator for
...
the COMMIT and ROLLBACK commands.
FossilOrigin-Name: 4da663d9863004d8cef58259a043fdcf4f466f80d3714cf58321a52485be8766
2017-07-06 01:28:02 +00:00
drh
6559e2cec7
Minor tweak to the SQL grammar to make the parser tables a few bytes smaller.
...
FossilOrigin-Name: cc4810b23e683e8c359f7c1a562338ec8501e43cac3475b2be002568fca5e6a4
2017-06-28 14:26:37 +00:00
drh
31d6fd5507
Add the TK_IF_NULL_ROW opcode to deal with non-NULL result columns in the
...
result set of a view or subquery on the RHS of a LEFT JOIN that gets flattened.
FossilOrigin-Name: 3a5860d86fadcf924316707918bf283d26c53b1473e5e67f5cff59d18c2a7742
2017-04-14 19:03:10 +00:00
drh
3cf48e3e89
Small size reduction and performance increase in the name resolver routine
...
for expressions.
FossilOrigin-Name: 1a3554e1d71b666325ff377fae5329d79ce5c05f
2017-03-07 03:25:52 +00:00
drh
7e84b377a9
Small grammar simplification.
...
FossilOrigin-Name: 0d8a868acd74fb1d076f23fda58b841bb7e6900b
2017-02-20 14:30:17 +00:00
drh
d26cc54183
In the amalgamation, allocate the parser engine object from stack rather than
...
from heap, for improved performance. This only happens in the amalgamation,
since otherwise the sqlite3RunParser() routine does not know the object size.
FossilOrigin-Name: 4fe879d4b5da6ae0688a7a99004683a234966597
2017-01-28 20:46:37 +00:00
drh
abfd35ea03
Performance improvement and size reduction in the Expr node allocator
...
function sqlite3PExpr().
FossilOrigin-Name: 2a81763e68cdf9b8c46389b1e1a87bc2084b53e7
2016-12-06 22:47:23 +00:00
drh
de25a88c50
Avoid unnecessary strlen() calls in sqlite3ExprAssignVarNumber() by passing in
...
the token length from the parser.
FossilOrigin-Name: d15ae2e530cffea60263f203ac5f89b6790f4bd5
2016-10-03 15:28:24 +00:00
drh
0cd874bd57
Inline the relevent parts of sqlite3ExprAlloc() into spanExpr(), for a
...
performance improvement.
FossilOrigin-Name: fe89225eab777c2c9cb1cbc31092b9e39f516842
2016-09-26 12:38:22 +00:00
drh
410c301fea
Omit the LikeOp object from the parser. Change more sqlite3PExpr() calls into
...
sqlite3ExprAlloc() calls.
FossilOrigin-Name: 795454a3fa5f9ccc486593b5e16e8fad38c934fb
2016-09-24 17:42:43 +00:00
drh
209bc522b0
Add the EP_Leaf flag bit to the Expr.flags field to indicate Expr
...
nodes that do not have substructure. Use that bit to avoid unnecessary
recursion.
FossilOrigin-Name: 8a6ea455cd1bf42ae0a7f1f1789baf88d782db13
2016-09-23 21:36:24 +00:00
drh
e1c03b6233
Use sqlite3ExprAlloc() instead of sqlite3PExpr() for leaf nodes in the
...
expression tree, where appropriate. This is both smaller and faster.
FossilOrigin-Name: afac0709cec577a7851e3711730712cf12eeb6af
2016-09-23 20:59:31 +00:00
drh
8bd0d58e1c
Fixes for problems following OOM errors.
...
FossilOrigin-Name: 9041ee4a6f0e8389297f887f1431ab5cfe783390
2016-08-20 18:06:14 +00:00
drh
a1251bc40d
Add support for vector assignments in the SET clause of an UPDATE statement.
...
FossilOrigin-Name: f320d47d6b7b08d9552c8444004bc256348bda90
2016-08-20 00:51:37 +00:00
drh
b684fd5c4a
Merge recent enhancements from trunk.
...
FossilOrigin-Name: b17872363b60edab05a5d382a44038aad91e4d9f
2016-08-19 15:41:24 +00:00
drh
9ef5e7708a
Add the capability to VACUUM an attached database by specifying the schema
...
name as an argument to the VACUUM command. Since version 2.0, VACUUM has
accepted an argument which was silently ignored. Now it has meaning.
FossilOrigin-Name: 29d63059b4d2bb612523ac55ebfef040d054a64f
2016-08-19 14:20:56 +00:00
drh
c8d0b0b9d4
Since the TK_VECTOR token is not actually used by the parser, make it an
...
extra token code added by the tool/addopcodes.tcl script during parser build.
FossilOrigin-Name: b40b202c1f82808d2240e87b22f1e78b2208cb26
2016-08-18 15:36:03 +00:00
dan
d9ed09d47b
Merge latest trunk changes into this branch.
...
FossilOrigin-Name: d4f3d52c5a11fc7ad7e8cad76361edbcef13a12f
2016-07-26 18:15:35 +00:00
drh
a522473c65
Add a new %ifdef to parse.y so that the build works with SQLITE_OMIT_SUBQUERY.
...
FossilOrigin-Name: 38a48cfb9a8212970c4a4f8458643c22ed067e8b
2016-07-25 14:40:43 +00:00
dan
71c57db099
Add some support for using row value constructors in certain parts of SQL expressions. There are many bugs on this branch.
...
FossilOrigin-Name: b2204215b231202aef7a218411cc2ddaecf28f35
2016-07-09 20:23:55 +00:00