drh
788d55aa77
Begin adding upsert logic. This is an incremental check-in.
...
FossilOrigin-Name: 809696434097e62e8ef486c7478b5eb62c0cf1342522a5584939fade82821410
2018-04-13 01:15:09 +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
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
c8abbc11cd
Avoid writing the sqlite_sequence table when it has not actually changed.
...
FossilOrigin-Name: 3e3849a9d1a06673e6c713a42194f5da339fbf6533fa418c38f63d09bc045867
2018-03-16 18:46:30 +00:00
drh
4d795ef7e4
In the constraint resolution logic, be careful not to cache column values
...
in registers whose initialization might be bypassed by an OP_NoConflict opcode.
Fix for ticket [dc3f932f5a147771] reported by OSSFuzz.
FossilOrigin-Name: 2846458af5d029a8e4fdcc8f50873a44e57897bbfe6aee8a23a01ffc34c5579f
2018-01-02 18:11:11 +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
drh
9d9c41e25e
Remove unnecessary NEVER() and ALWAYS() conditionals.
...
FossilOrigin-Name: 1c80c75d4be2f3d44fb18bb4c07eccac2aba79b688215a741317dfc47dc7c2ce
2017-10-31 03:40:15 +00:00
drh
ce2c482e5a
Remove an unused variable from sqlite3Insert() and fix harmless
...
compiler warnings associated with -DSQLITE_MUTATION_TEST.
FossilOrigin-Name: 7be760e907274131bcd4acfaff9e72c9c59a05e7d411db3d9afe690fe0d64b4b
2017-10-03 17:17:34 +00:00
drh
86b40dfd33
Split the OP_Last opcode into OP_Last and OP_SeekEnd. Use OP_SeekEnd to
...
position a cursor prior to appending. Ticket [cb91bf4290c211d].
FossilOrigin-Name: 3e02474c7bbe16891a7cfc8771cf72f64cd2c0692779037982d7d307512a4f23
2017-08-01 19:53:43 +00:00
drh
8257aa8dbe
Add the new sqlite3.mDbFlags field. Factor out bits of sqlite3.flags that
...
do not interact with PRAGMA statements into sqlite3.mDbFlags.
FossilOrigin-Name: 3808a00f06d372cc531da039d97bd974e4a6576a30cf63bf562f83f186b313b3
2017-07-26 19:59:13 +00:00
drh
6e97f8ec84
Combine the Parse.ckBase and Parse.iSelfTab fields into just Parse.iSelfTab.
...
This fixes a problem with date/time functions in check-constraints. Add
some test cases for date/time functions in index expressions and check
constraints.
FossilOrigin-Name: 22eda0985ecd1f456c073e6ad735a8417f3ff1fb6aaad1640e1cec01e50c51d8
2017-07-20 13:17:08 +00:00
dan
5aa550cf3b
Consider the values bound to SQL variables when determining whether or not a
...
partial index may be used.
FossilOrigin-Name: 7b59c353b805c64689b4ae9df347705acbb5f116346ad77af8ce087da7893747
2017-06-24 18:10:29 +00:00
drh
4c88348729
Initialize a variable to zero to prevent an (incorrect) compiler warning of
...
it potentially being uninitialized.
FossilOrigin-Name: 65182ce041b30cd0193b958eca975b720fe5200a868baba1e633e49433d86813
2017-06-03 20:09:37 +00:00
drh
d5bdd5effb
Remove a completely unnecessary memset() from the INSERT code generator.
...
FossilOrigin-Name: 7d58836b9db1293a3a6581af4358b7c91a588efd5c9b2df384803f3855ff87a8
2017-05-31 13:27:15 +00:00
dan
a77edc69ee
Remove an invalid assert() statement failing when VACUUMing a database that
...
contains an index on a column explicitly declared "COLLATE BINARY".
FossilOrigin-Name: 9f2e04d3c3526b5ff60d941aa6d5446f602cab37cb93972937f39eefabd6868d
2017-03-23 17:03:35 +00:00
drh
44266ec651
Always use the IsVirtual() macro to determine if a Table object is a virtual
...
table. Slightly smaller and faster code.
FossilOrigin-Name: 6affb1c89d87288cad87dde5a533832cdf06b8aa
2017-02-16 14:48:08 +00:00
drh
7e4acf7b44
Enable the SQLITE_ENABLE_NULL_TRIM option for WITHOUT ROWID tables.
...
FossilOrigin-Name: 54836270c9c0bfa5910f7ad74ec238b9d7ddee5f
2017-02-14 20:00:16 +00:00
dan
cb9a364390
Experimental change to invoke the preupdate hook when WITHOUT ROWID tables are
...
written.
FossilOrigin-Name: 856f8604c59c8fdd9bfb7d86fc0e212f091ab49a
2017-01-30 19:44:53 +00:00
drh
d447dced96
Trim NULL values off the end of records when the SQLITE_ENABLE_TRIM_NULLS
...
compile-time option is used. Increase the size of the P5 operand to 16 bits.
Fix a problem with short records in the sessions extension.
FossilOrigin-Name: 4801bd59a01dcc11a3eb9e776e7599b36f162d2a
2017-01-25 20:55:11 +00:00
drh
585ce1923c
Experimental enhancement to automatically trim NULL values from the end of
...
records, for a reduced disk footprint. This change also involves increasing
the P5 operand from 8 to 16 bits.
FossilOrigin-Name: 118ded403b95050b74ae2b03919c43d614094a32
2017-01-25 14:58:27 +00:00
dan
f91c1318f4
Changes to allow some multi-row UPDATE statements to avoid the two-pass
...
approach.
FossilOrigin-Name: 46db23ccd116ce5b9d949f9293be8a2818411b46
2017-01-10 20:04:38 +00:00
drh
e7b554d615
Modify the OP_RowData opcode so that when P3!=0 it is allowed to hold an
...
ephemeral copy of the content. This avoids unnecessary memcpy() operations
in the xfer-optimization and VACUUM.
FossilOrigin-Name: 6e106acd74da3baa5c308a76443d2f0a7c904e5e
2017-01-09 15:44:25 +00:00
drh
68116939eb
Improvements to the iIdxNoSeek optimization of sqlite3GenerateRowDelete()
...
so that it is automatically disabled for BEFORE triggers but works in all
other cases.
FossilOrigin-Name: 3178ec4c27efc4ff84bcd17ddb17ec50a6ac96b3
2017-01-07 14:47:03 +00:00
drh
4cef5b1c81
Critical fix to the previous check-in so that it works when there are
...
BEFORE triggers that move the cursor before the OP_Delete has a chance to
be applied.
FossilOrigin-Name: db2c0960ffb3b396b20e0441d3edb812254c82bc
2017-01-07 14:26:28 +00:00
drh
ad1d9a8707
Avoid an unnecessary btree seek while deleting an index entry due to a conflict
...
on a REPLACE operation.
FossilOrigin-Name: f0495c5133d0dc04d63521136d6b9ca440792cdf
2017-01-07 03:26:50 +00:00
dan
f9a12a106b
Fix some problems with foreign key processing within REPLACE ops on WITHOUT
...
ROWID tables with no triggers or auxiliary indexes.
FossilOrigin-Name: c1220b1af62629d7fc2178512786d613cd7ea711
2017-01-05 06:57:42 +00:00
drh
801f55d837
Improved the comment on the block of code the provides the performance
...
optimization originally added by check-in [925840cfdb]. The original
check-in omitted condition 4, which was the cause of bug [30027b613b].
FossilOrigin-Name: c6506b82aa6583ccde5f673c79526d5f3920b67a
2017-01-04 22:02:56 +00:00
dan
4e1f0efb4d
Possible fix for 30027b61. There may still be problems surrounding foreign key
...
processing.
FossilOrigin-Name: 71ccb1f4c490fdebc7008e884384e7809b849742
2017-01-04 20:13:51 +00:00
drh
2700acaacd
More changes to take advantage of the sqlite3VdbeAppendP4() method.
...
FossilOrigin-Name: 83bc5e40af9b20afeed008bf3e2669b7ac9e2dc8
2016-12-08 01:38:24 +00:00
drh
f14b7fb73b
Add the sqlite3VdbeAppendP4() method for adding P4 content to the most recently
...
coded instruction.
FossilOrigin-Name: 28883e8f3e92a8015fb5f6c8ae8580833931543d
2016-12-07 21:35:55 +00:00
drh
9057fc7c7f
Remove the OP_RowKey opcode. Use OP_RowData in its place.
...
FossilOrigin-Name: 6ac7b07a4aff2e1a9031289e3dafdb9ac0071c24
2016-11-25 19:32:32 +00:00
drh
60ffc80756
Remove unnecessary OP_Close opcodes at the end of INSERT operations, resulting
...
in smaller and faster code.
FossilOrigin-Name: abeddb6d5a4040e1d0a87a4f32ad79794ba0842b
2016-11-21 21:33:46 +00:00
drh
c10b9dac84
Fix harmless compiler warnings.
...
FossilOrigin-Name: b3b7b42d9a4a0e7e2be8b2933328a7bec2f49a81
2016-11-20 17:59:59 +00:00
drh
c9b9deaee2
Make the VACUUM command about 9% faster by avoiding unnecessary calls
...
to sqlite3BtreeMovetoUnpacked() while copying rowid tables.
FossilOrigin-Name: 5ed0bd387699a0f3b477d4f3cfcb460a6a44cb84
2016-11-15 02:46:39 +00:00
drh
2adb878b1f
Avoid unnecessary calls to sqlite3ExprCacheAffinityChange() when generating
...
OP_MakeRecord opcodes that do not change any register affinities.
FossilOrigin-Name: e211c579b2f092e3283edd5fb9add7c5183bac35
2016-11-14 15:28:56 +00:00
drh
d95ef5cb5a
Remove obselete and unused logic in the update code generator.
...
Fix the sqlite3BtreeMovetoUnpacked() routine so that it remembers the
rowid of the row that it landed on.
FossilOrigin-Name: 1a587d72f981cb7064cfd8916a52a83ad9ba6074
2016-11-11 18:19:05 +00:00
drh
c6c9e158c5
When doing a REPLACE on a WITHOUT ROWID table with no secondary indexes,
...
bypass the OP_NoConflict/OP_Delete sequence and directly overwrite any
preexisting row, for a performance increase.
FossilOrigin-Name: f7041cbb63b912f9ecad538804b6f2383efbec4e
2016-11-10 17:01:36 +00:00
drh
bf2f5739c9
Remove C++ style comments. No code changes.
...
FossilOrigin-Name: 42f8aa6231bf4ed74bebdc85aa79d23dc20b3c14
2016-11-10 16:07:43 +00:00
drh
2c4dfc3095
Add the unpacked key fields to OP_IdxInsert for INSERT and UPDATE statements.
...
FossilOrigin-Name: 67602e40f122cbb6354048a64c5d3a72b2855ec7
2016-11-10 14:24:04 +00:00
drh
7405fa745e
Fix a simple comment typo. No changes to code.
...
FossilOrigin-Name: 51d0aed8d63d0710e4aa8925ff18cf3c45dc9e42
2016-11-09 16:03:36 +00:00
drh
9b4eaebc68
Enhance the OP_IdxInsert opcode to optionally accept unpacked key material.
...
FossilOrigin-Name: 89d958abbac45f2ca5954080cd9e74ec9a07ebb2
2016-11-09 00:10:33 +00:00
dan
3b908d41a0
Avoid superfluous cursor seeks in "INSERT OR REPLACE" statements.
...
FossilOrigin-Name: bec5b6d4d083556d111a89186b4f7b35b5e7cebf
2016-11-08 19:22:32 +00:00
drh
1dd518cfcd
Make sure the sqlite_sequence table is updated when an optional xfer
...
optimization is used. Fix for ticket [7b3328086a5c1].
FossilOrigin-Name: 81e4d4f897553f6fee540a38c3e83ceac5ba9b78
2016-10-03 02:59:33 +00:00
drh
a0daa751f8
Fix SQLITE_OMIT_AUTHORIZATION so that it compiles cleanly.
...
FossilOrigin-Name: a3e3b3e1c57178ccd38fc7375ec1de8e8ae45372
2016-09-16 11:53:10 +00:00
dan
61441c3493
Fix a problem in internal function sqlite3OpenTableAndIndices causing an operand of an unrelated VM instruction to be overwritten. Fix for [ef360601].
...
FossilOrigin-Name: 7090147903337864d54ecfb2cd84a3f823973167
2016-08-26 12:00:50 +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
69c338263a
Rename the Db.zName field to Db.zDbSName to make it more descriptive and to
...
distinguish it from all of the other "zName" variables scattered throughout
the code.
FossilOrigin-Name: 92a22f01343a898455fd61c3b8e7d7c954f5b569
2016-08-18 14:33:11 +00:00
drh
2606aca80f
Merge recent enhancements from trunk. Default page size is 4096. Writes
...
to statement journals are avoided.
FossilOrigin-Name: 456df3365e2df60e34762f2024bb551538b3f72b
2016-03-04 16:42:43 +00:00
drh
94fa9c414a
Eliminate the need for the Column.zDflt (using Column.pDflt instead) to reduce
...
the amount of memory needed to hold the schema.
FossilOrigin-Name: d8c94a46dfa94930732c2de2aa79675c5087d36e
2016-02-27 21:16:04 +00:00
drh
d8b7d6e44c
Merge the changes for the 3.11.0 release candidate from trunk.
...
FossilOrigin-Name: 4d7a802e73ef0352f840bc8d74c560afb7666ff7
2016-02-13 14:07:56 +00:00