]>
git.ipfire.org Git - thirdparty/sqlite.git/log
dan [Thu, 26 Apr 2018 16:13:47 +0000 (16:13 +0000)]
When processing an "ORDER BY ... LIMIT" that does not use an index, check
whether or not a record may appear in the final result set before adding it to
the sorter.
FossilOrigin-Name:
71bf91c218334381b1b4bdba6a093e623b62e17f3e8550e154a11f0cb0b404f3
drh [Thu, 26 Apr 2018 15:04:18 +0000 (15:04 +0000)]
Clarification of the behavior of a BEFORE UPDATE trigger when the trigger
changes the values of some of the columns used to compute new columns in
the UPDATE.
FossilOrigin-Name:
7bb23c2a3d37f0d5e5515b917860818906819d54a0066e1ba8e9792a82f7d279
drh [Thu, 26 Apr 2018 12:27:03 +0000 (12:27 +0000)]
Improved VDBE comment on the OP_Param opcode. No substantial changes.
FossilOrigin-Name:
368c14da868a843767344f6cc17c499fddd83244c0510337ed9a918e64ee2413
dan [Thu, 26 Apr 2018 08:56:40 +0000 (08:56 +0000)]
Update the "fuzz_malloc.test" script to print SQL statements in which OOM
handling problems are found to stdout.
FossilOrigin-Name:
a956363cf6881be590120c7718976b54b12c4bd0d9228d8142b45e0fe1826f7e
drh [Wed, 25 Apr 2018 19:02:48 +0000 (19:02 +0000)]
Add new interfaces for accessing the list of SQL keywords:
sqlite3_keyword_count(), sqlite3_keyword_name(), sqlite3_keyword_check().
FossilOrigin-Name:
7dd34e3776fed90a49344d54a1b68bb59f7957b5a8a1a367087b7cafb63111c1
drh [Wed, 25 Apr 2018 17:10:30 +0000 (17:10 +0000)]
Add the new DO and NOTHING keywords to the keyword lists maintained
by various extensions and auxiliary programs.
FossilOrigin-Name:
77a98a0781cd8450e2100111e70526db6a51d7e58e3c505ea87f685388099e82
drh [Wed, 25 Apr 2018 13:27:07 +0000 (13:27 +0000)]
Add the new SQLITE_SHELL_INIT_PROC compile-time entry point to the CLI. This
is needed to work around the tighter sqlite3_config() constraints now in the
CLI.
FossilOrigin-Name:
3bcdbccf530e2a5aab7b91f4b9e5535cced91f242c49ff69b05a75d643b8b4a3
drh [Wed, 25 Apr 2018 12:01:45 +0000 (12:01 +0000)]
Avoid many unnecessary calls to sqlite3ReadSchema() and sqlite3Init() when
the schema is known to be valid already.
FossilOrigin-Name:
58cf812fd81329e82b3fdd61b7ad2040c9b90d2d80f592b9231e0e1902c8d577
drh [Wed, 25 Apr 2018 10:30:46 +0000 (10:30 +0000)]
Add an assert() to ensure that schema mutexes are held prior to accessing
the DB_SchemaLoaded flag inside of sqlite3Init().
FossilOrigin-Name:
d8b46290bb75c695dac523cf9a50d1b43e773802e3b95fd722feca16162ab7c5
dan [Tue, 24 Apr 2018 18:59:18 +0000 (18:59 +0000)]
Remove a recently added NEVER() macro from a branch that can be taken in
obscure circumstances.
FossilOrigin-Name:
2aa210030ae414782adab9291cc43a149a780f39bd3d306dc2892a8c20422a51
dan [Tue, 24 Apr 2018 18:53:24 +0000 (18:53 +0000)]
Fix a problem with processing "LEFT JOIN tbl ON tbl.a = ? AND (tbl.b=? OR
tbl.c=?)" in cases where there are indexes on both tbl(a, b) and tbl(a, c).
FossilOrigin-Name:
ce35e39c5cc2b00dd6b4a9ffaa9d5eb7d9b862759e87d5f053729de7643eee9c
drh [Tue, 24 Apr 2018 17:34:03 +0000 (17:34 +0000)]
Do not attempt to use terms from the WHERE clause to drive indexes on the
right table of a LEFT JOIN. Fix for ticket [
4ba5abf65c5b0f9a96a7a40cd18b ]
FossilOrigin-Name:
aeb694e3f787f1f8b55650c17f90c197eee3f7f9b890a88f458c33e43009a082
drh [Tue, 24 Apr 2018 16:51:38 +0000 (16:51 +0000)]
Update the expert extension test cases to account for the fact that
EXPLAIN QUERY PLAN now shows the start of each trigger in its output.
FossilOrigin-Name:
8acb42f48929d908fe67a8536e240ca252a9ab780dce79eaa85b8fba35d52250
drh [Tue, 24 Apr 2018 16:41:37 +0000 (16:41 +0000)]
All the OR optimization to proceed even if the OR is also converted into
an IN operator.
FossilOrigin-Name:
e252c6540db266b93beeb47a8f7dbf3b275f8c782cd2d36ba4c00648c382f63f
drh [Tue, 24 Apr 2018 14:18:49 +0000 (14:18 +0000)]
Add a hyperlink to the ticket on the code comment for the fix to
ticket [
7fa8049685b50b5aeb0c2 ].
FossilOrigin-Name:
45247c7f291bc0cc42600a4aa4ff7cdcd0a703fdfadcb0e12174c5250e70d503
dan [Tue, 24 Apr 2018 14:05:14 +0000 (14:05 +0000)]
Do not attempt to read values from indexes-on-expressions if the index is on
the RHS of a LEFT JOIN. This won't work if the index cursor points at a
null-row. Fix for [
7fa80496 ].
FossilOrigin-Name:
b8ef967ab1bebf2846c06c4f7200d6fa1c60e52e55711ea171c25ef1331f8a24
drh [Tue, 24 Apr 2018 13:07:40 +0000 (13:07 +0000)]
Enhance the CLI to render EXPLAIN QUERY PLAN using an ASCII-art graph.
This works with ".eqp" modes and when the query begins with exactly
"EXPLAIN QUERY PLAN". To see the original output format, add extra space
characters in between words of the initial "EXPLAIN QUERY PLAN".
FossilOrigin-Name:
f53716ee2ab5a6d47a5551529aae526bb39058f4a8e11e6243b32c1ddc25a19e
drh [Tue, 24 Apr 2018 10:57:10 +0000 (10:57 +0000)]
Fix a memory leak following failure to open an external CSV file in the
csv.c extension.
FossilOrigin-Name:
526ee07d19dbc8fd1af3a02a8da12b337020a4be40e045da9a19d0a7c2b6ab54
drh [Tue, 24 Apr 2018 01:10:12 +0000 (01:10 +0000)]
In EXPLAIN QUERY PLAN output, do not show an EXECUTE LIST SUBQUERY line for
IN operators where the RHS is a list and not a subquery, since in that case
there is no SUBQUERY to execute.
FossilOrigin-Name:
8bc0207abdeeb3ffac003703e78826759f07994698f6cdf40c89c3443ba22a47
drh [Tue, 24 Apr 2018 00:08:09 +0000 (00:08 +0000)]
Fix to check-in [
ca34c2dd20ee071e ] - avoid a NULL pointer dereference
following an OOM.
FossilOrigin-Name:
c7e6e848fa91f61bc980a031a17d4cd4784f93a1c9ffee35665efa1a59f2982a
drh [Mon, 23 Apr 2018 20:38:40 +0000 (20:38 +0000)]
Fix a problem in sqlite3ExprCompare() associated with UPSERT.
FossilOrigin-Name:
67d0b2c15299dd20bca7254ecb33e71b5eee6024e2709bfdc36f877bf2a5679f
drh [Mon, 23 Apr 2018 20:04:38 +0000 (20:04 +0000)]
Fix a formatting issue in the TreeView output for bare expression lists.
FossilOrigin-Name:
a6356817815fe986c4d89475194e0537ebd46582d6df1034482bf08521182bdf
drh [Mon, 23 Apr 2018 18:38:48 +0000 (18:38 +0000)]
Add the ".imposter off" variant of the ".imposter" dot-command in the CLI.
FossilOrigin-Name:
d3dad06ff1b163040c54dd215f30d6669cc2bc339001a362605f26f06eddf98c
drh [Mon, 23 Apr 2018 17:43:35 +0000 (17:43 +0000)]
The ".selecttrace 0x2000" command causes just the top-level parse tree to
be displayed, after all transformations, and showing the EQP iSelectId at
each level.
FossilOrigin-Name:
ca34c2dd20ee071e6f8d60f91dbf474515a688ba57949143483da1641246cb25
drh [Mon, 23 Apr 2018 17:18:03 +0000 (17:18 +0000)]
The ".selecttrace 4" command now shows only a single parse tree after
name resolution.
FossilOrigin-Name:
5682146e8a4ebb4edc1e1b53fbf3daf77f8cb9cd9bc2aa32acb34fa5824bd518
drh [Mon, 23 Apr 2018 17:09:58 +0000 (17:09 +0000)]
Do not restore the iSelectId value until after the last SELECTTRACE when
debugging Select processing.
FossilOrigin-Name:
8088d8cac317adb96e357a8f4a196d7c1e0115af9c2335f167b4d7e7154299b0
drh [Mon, 23 Apr 2018 17:02:14 +0000 (17:02 +0000)]
In the ".selecttrace" output, include the EXPLAIN QUERY PLAN iSelectId as
part of each Select identifier.
FossilOrigin-Name:
5c6339f955eaa550c7d112488d7830e67ceacba4fbba12e1c5ce2970980159e0
drh [Mon, 23 Apr 2018 13:28:55 +0000 (13:28 +0000)]
Ensure that there are no bind-parameters or incorrect schema references in
the UPSERT portions of an INSERT within a TRIGGER.
FossilOrigin-Name:
d47a6bdda0ce967a7b70bc6eb56278c8b79525622381ff4adcf04525eafc1461
drh [Mon, 23 Apr 2018 00:25:31 +0000 (00:25 +0000)]
Fix an unreachable branch associated with stack overflow in the
LEMON-generated parser.
FossilOrigin-Name:
e3064ba3b68ca2a1c54561756e8c898866a19ef6e785d315171cd47827a50c85
drh [Sat, 21 Apr 2018 22:40:08 +0000 (22:40 +0000)]
Performance improvements on the main loop of the LEMON-generated parser.
FossilOrigin-Name:
fec1ebadeb9d6b55b19a1c159c543fd7ae67b3307c4caee4d2541bd783630e23
drh [Sat, 21 Apr 2018 20:24:19 +0000 (20:24 +0000)]
Enhance LEMON to track which symbols actually carry semantic content.
Output the list of symbols that do not carry content at the end of the
report, but do not (yet) do anything else with the information.
FossilOrigin-Name:
dcf2bafc159179859b91ffea3a4ebd70b5ca6de9e1d515eaf9afde8cfff26c6c
dan [Sat, 21 Apr 2018 14:11:18 +0000 (14:11 +0000)]
drh [Sat, 21 Apr 2018 13:51:42 +0000 (13:51 +0000)]
Add the %extra_context directive to lemon, as an alternative to %extra_argument.
Use this to improve the performance of the parser.
FossilOrigin-Name:
be47a6f5262a43f477700579512fe7112a0872faedcbbe5c3383d13a08af6440
drh [Sat, 21 Apr 2018 03:06:29 +0000 (03:06 +0000)]
Fix UPSERT so that it plays nicely with AUTOINCREMENT.
FossilOrigin-Name:
359725ab36339b443b7745e84f6d27991038ceb063c653805dde17f3eb5a03c5
drh [Fri, 20 Apr 2018 20:47:49 +0000 (20:47 +0000)]
Add the -dDIRECTORY command-line option to LEMON.
FossilOrigin-Name:
9cd20475ff3b2ca1a58e441194c921780d25bdb9b9c744a6b4541b888194efb8
dan [Fri, 20 Apr 2018 20:37:25 +0000 (20:37 +0000)]
Enhance the "rbu" command line utility a bit.
FossilOrigin-Name:
61eb516f83d1a7fe44f72bebe2a2745ab904a02e06e38fb6d932348c49607976
drh [Fri, 20 Apr 2018 20:09:22 +0000 (20:09 +0000)]
drh [Fri, 20 Apr 2018 19:46:52 +0000 (19:46 +0000)]
Avoid the use of statement journals on DELETEs of a single row without
triggers or foreign keys.
FossilOrigin-Name:
20bf5800808ea02b2aa4bf01a380926784c0e7514a2c73ca303cac1f5c732ae0
drh [Fri, 20 Apr 2018 19:32:35 +0000 (19:32 +0000)]
Avoid opening a statement journal on single-row UPDATEs without triggers or
FK constraints.
FossilOrigin-Name:
2772404b8c570caf3c31d2b0530cf347a24f6f60e220e726c086537b38ebfa85
drh [Fri, 20 Apr 2018 18:01:31 +0000 (18:01 +0000)]
Fix a VDBE comment on upsert. Provide an error message when upsert detects
index corruption.
FossilOrigin-Name:
279c48f6061f766f5437edd6964c0dd1e10399314eb17b6e5ee34df925a776ed
dan [Fri, 20 Apr 2018 17:50:49 +0000 (17:50 +0000)]
Add tests for name resolution in ON CONFLICT clauses.
FossilOrigin-Name:
cf253584ecf7aed04406b4bae78b536818fadfb3fb96c05f2c99954b841db85f
drh [Fri, 20 Apr 2018 17:02:16 +0000 (17:02 +0000)]
Avoid unnecessary cursor seeking when performing an UPSERT.
FossilOrigin-Name:
693a3dcbdd8fb2d516c0f46fdbb478838cde675afc1026740e942705aac3c07f
drh [Fri, 20 Apr 2018 16:49:51 +0000 (16:49 +0000)]
drh [Fri, 20 Apr 2018 16:27:57 +0000 (16:27 +0000)]
Minor simplification of the previous checkin.
FossilOrigin-Name:
d1906689abdb685f78aa97bca4bf301204d12846016d27bc86dcc9ce2b024d24
drh [Fri, 20 Apr 2018 15:56:24 +0000 (15:56 +0000)]
Avoid unnecessary cursor seeks during upsert processing.
FossilOrigin-Name:
7c4b6d5475092a3e205f01a6972366e27a404568e8e7ba327f2feefac2ce2c7c
dan [Fri, 20 Apr 2018 15:34:08 +0000 (15:34 +0000)]
Add test cases for UPSERT. And a fix for a "REPLACE INTO ... ON CONFLICT"
statement where the new row conflicts with both the IPK and the ON CONFLICT
indexes.
FossilOrigin-Name:
d8eb9f8d9b61400c7e12f01ef5c233257b03532221f7c7a8386f7ac2db439626
drh [Fri, 20 Apr 2018 13:18:51 +0000 (13:18 +0000)]
Enhance UPSERT so that the UPDATE uses the same set of cursors as the INSERT.
FossilOrigin-Name:
c37f39d18d41ae5ba6c4561d87cbbf71f3b6896b86cc5cff9cdf046b02dc521a
drh [Fri, 20 Apr 2018 00:40:19 +0000 (00:40 +0000)]
Minor simplification of the cursor allocation logic for update.
FossilOrigin-Name:
fdf71be65835e7e8915d16dd64114de35c4754ef5b94a2af6cac88a94817fb75
drh [Thu, 19 Apr 2018 23:52:39 +0000 (23:52 +0000)]
Fix the handling of "PRAGMA count_changes=ON" with UPSERT. Also improved
the implementation of count_changes in other places, without changing the
behavior.
FossilOrigin-Name:
c6f71115eb933c2aee295bc31e5139112463c28e15a3b3ea242fd9bac168aed9
drh [Thu, 19 Apr 2018 21:29:52 +0000 (21:29 +0000)]
dan [Thu, 19 Apr 2018 20:06:10 +0000 (20:06 +0000)]
Modify a test case in zipfile2.test to take into account that with some
platform/file-system combinations it is possible to fopen() and fread() (but
not fwrite()) a directory.
FossilOrigin-Name:
893e6089c875e947ddadb23f031a81bc36da8b060d2212363098992ddb90378b
drh [Thu, 19 Apr 2018 16:52:37 +0000 (16:52 +0000)]
Add the --upsert option to the wordcount test program.
FossilOrigin-Name:
ee1e750baaf4c66b4e1f103d8b80362f57e711ac601e57f99ed6a33913f443d2
drh [Thu, 19 Apr 2018 16:14:59 +0000 (16:14 +0000)]
Add the ext/misc/tmeplatevtab.c template for virtual tables. This is a
work-in-progress as it still needs improvements to the comments in order to
be useful as a template.
FossilOrigin-Name:
22358fb5495c727a4dde129128fe409a7b929a5ffa143b1e2879f84d7680ec3c
drh [Thu, 19 Apr 2018 13:52:39 +0000 (13:52 +0000)]
Fix a problem in the new upsert implemention, discovered by OSSFuzz.
FossilOrigin-Name:
b6d5ea59fe83716f464e408b7eef0310c6d30b3493e3f966362db2e30b36e821
drh [Thu, 19 Apr 2018 11:45:16 +0000 (11:45 +0000)]
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
dan [Wed, 18 Apr 2018 19:56:14 +0000 (19:56 +0000)]
Add the "sorter-reference" optimization, allowing SQLite to be configured so
that some required values may be loaded from the database after external
sorting occurs for SELECT statements with ORDER BY clauses that are not
satisfied by database indexes.
FossilOrigin-Name:
ef74090a40ceaef2fd93a7613ec99a191ce986811c852e96f4a19719f18af4f0
dan [Wed, 18 Apr 2018 19:45:14 +0000 (19:45 +0000)]
drh [Wed, 18 Apr 2018 19:08:44 +0000 (19:08 +0000)]
drh [Wed, 18 Apr 2018 18:19:25 +0000 (18:19 +0000)]
drh [Wed, 18 Apr 2018 18:18:12 +0000 (18:18 +0000)]
Improved matching of COLLATE clauses within the ON CONFLICT conflict-target.
FossilOrigin-Name:
8f4376e52b6124986937a3837ad83a18863c3144ef3b438a0d5e9231bf6c8980
dan [Wed, 18 Apr 2018 17:56:37 +0000 (17:56 +0000)]
drh [Wed, 18 Apr 2018 17:52:28 +0000 (17:52 +0000)]
Fix a problem in the sqlite3ExprCompare() function that caused two
dissimilar expressions to match if they have the same "COLLATE name" at
the outer layer.
FossilOrigin-Name:
fb16348a5bd52752098c9aeacc3281c4e1e8eb5a868d131ea6c3271dc4226b40
drh [Wed, 18 Apr 2018 16:03:36 +0000 (16:03 +0000)]
Add support for PostgreSQL UPSERT syntax and functionality.
FossilOrigin-Name:
fba24aec235dd6f124c1ece66cdac485c9d96e0578c4fbacd8f49d7b767a5b4a
drh [Wed, 18 Apr 2018 15:33:21 +0000 (15:33 +0000)]
drh [Wed, 18 Apr 2018 15:21:13 +0000 (15:21 +0000)]
drh [Wed, 18 Apr 2018 14:48:08 +0000 (14:48 +0000)]
Omit some code not used without SQLITE_ENABLE_SORTER_REFERENCES. Improvements
to comments used for documentation.
FossilOrigin-Name:
f3596ab9eb1168dc75202e6f79e12c67d518b3a0659a0a629c707f43990fa7cf
drh [Wed, 18 Apr 2018 14:04:19 +0000 (14:04 +0000)]
drh [Wed, 18 Apr 2018 11:35:35 +0000 (11:35 +0000)]
Enhance ALTER TABLE ADD COLUMN to support "DEFAULT true" and "DEFAULT false".
FossilOrigin-Name:
594ebc69557095c9262db39129dd50a3dbf038556a3d2a3ea69b82ed4c61e2b9
drh [Wed, 18 Apr 2018 10:44:58 +0000 (10:44 +0000)]
Add checks to the CLI that issue a warning if SQLite gets initialized prior
to the last sqlite3_config() call.
FossilOrigin-Name:
40b117347763ef67f6621d3665ca7f287eebfd7435e3178055a8c624eb06b2c5
dan [Wed, 18 Apr 2018 09:16:11 +0000 (09:16 +0000)]
Fix a problem in the shell preventing it from working with
SQLITE_OMIT_AUTOINIT builds.
FossilOrigin-Name:
89209000a205c685bb6bd941376ef16e507919d192d606c1be110ccf2921d9bd
drh [Wed, 18 Apr 2018 01:34:39 +0000 (01:34 +0000)]
Add new testcase() macros and fix a bug that was revealed when trying to
cover all the new test cases.
FossilOrigin-Name:
266a99f7c068aadbd08157d1d495a428109ad7a32d872f8026e8db0f89c40f91
drh [Tue, 17 Apr 2018 21:59:34 +0000 (21:59 +0000)]
Remove unreachable branches. 100% MC/DC in TH3 now.
FossilOrigin-Name:
558865d5c3c297155e1be5ea73effb46a995ea146bd745b23330c94782c6c45b
drh [Tue, 17 Apr 2018 20:09:27 +0000 (20:09 +0000)]
Added a comment on the assert() added to the previous check-in.
FossilOrigin-Name:
542547c1ce770a1427d3023d8c8fdcb2db7b1e017bc111e3484641f97e42381a
drh [Tue, 17 Apr 2018 20:06:24 +0000 (20:06 +0000)]
Fixes to the logic for constraint check reordering during upsert.
Improved comments on constraint check bytecode. Add an assert that
prevents the same label from being resolved more than once.
FossilOrigin-Name:
1ddbb0ff5586ef5ca987e4309979f24f95eea883ed68937094a2db2d61e75657
drh [Tue, 17 Apr 2018 19:29:58 +0000 (19:29 +0000)]
During PRAGMA vdbe_addoptrace=ON, show calls to sqlite3VdbeResolveLabel()
in the debugging output.
FossilOrigin-Name:
9ff07a06cef6e04777d2d5b81f96e8626e835382e62320ecf17b3ff73573e23e
drh [Tue, 17 Apr 2018 18:50:40 +0000 (18:50 +0000)]
TK_REGISTER expressions nodes are probably not constant. Make sure
sqlite3ExprIsConstant() knows this.
FossilOrigin-Name:
f3d91cad929cfbee8f621425f55b5f12e79567362cf8769a786adb3e1bbef214
drh [Tue, 17 Apr 2018 18:18:05 +0000 (18:18 +0000)]
dan [Tue, 17 Apr 2018 18:16:10 +0000 (18:16 +0000)]
Add some more simple test cases for UPSERT. And a minor fix.
FossilOrigin-Name:
27cd3b2fb2ad0cf2b36741bd1057cb7973954d40456e9db158261a38b049d2b5
drh [Tue, 17 Apr 2018 16:16:40 +0000 (16:16 +0000)]
dan [Mon, 16 Apr 2018 21:12:42 +0000 (21:12 +0000)]
Add SQLITE_CONFIG_SORTERREF_SIZE configuration option.
FossilOrigin-Name:
b25a7bb769b8397a00736bd922bd24b1200b2f82d36d42ecb4c3eb17efb4b84d
drh [Mon, 16 Apr 2018 14:36:34 +0000 (14:36 +0000)]
Merge the Lemon enhancement from trunk, resulting in smaller parser tables.
FossilOrigin-Name:
641f41722c68f1d51251b10d4d3d7c473d08ee999f6db20023ef6dcd4dc5f6e8
drh [Mon, 16 Apr 2018 14:31:34 +0000 (14:31 +0000)]
Lemon enhancements: (1) Do not allocate space for the 'error' non-terminal
if it is not used. (2) Fix an off-by-one problem so that 'unsigned char' can
be used for symbol numbers if the number of symbols is 256.
FossilOrigin-Name:
3b7801acff91905d0e78e06121ebcf2664f6de5f605699dc8726ec9bcb558eb8
drh [Mon, 16 Apr 2018 13:26:53 +0000 (13:26 +0000)]
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
drh [Mon, 16 Apr 2018 13:00:50 +0000 (13:00 +0000)]
Add support for the "excluded.*" names in the UPDATE clause of an upsert.
FossilOrigin-Name:
0203f34faae07fbea0bff2d23b81fb37df8854cded4cdadac5a034132a096b6d
drh [Mon, 16 Apr 2018 10:47:38 +0000 (10:47 +0000)]
drh [Mon, 16 Apr 2018 10:41:15 +0000 (10:41 +0000)]
drh [Mon, 16 Apr 2018 10:34:13 +0000 (10:34 +0000)]
Reduce the size of the NameContext object by grouping seldom-used fields
into a union.
FossilOrigin-Name:
dba3095feeeb55b5c0ebe33bdd4be8ba1f24478406685d3a042a69d9c380e742
drh [Sat, 14 Apr 2018 22:35:34 +0000 (22:35 +0000)]
drh [Sat, 14 Apr 2018 20:24:36 +0000 (20:24 +0000)]
Make sure constraint checks occur in the correct order, even in the
presence of upserts.
FossilOrigin-Name:
07fb30c3de7ff396ae2ce8a0d20352b56f17a5db0af99a921c7bfe9bd4018115
dan [Sat, 14 Apr 2018 18:46:20 +0000 (18:46 +0000)]
Experimental change to "SELECT * FROM ... ORDER BY" processing to load some
column values from the db after sorting.
FossilOrigin-Name:
9719cb46bbf501ce80f185159d594f593dd0b2639b9ef5a71a6c7b70046cb08d
drh [Fri, 13 Apr 2018 21:55:22 +0000 (21:55 +0000)]
First cut at logic to perform DO UPDATE for rowid tables.
FossilOrigin-Name:
a9080bc8b8c5f3b399eb1819bb5009581f178d85bb2b2cca7bc16a7b81b06863
drh [Fri, 13 Apr 2018 18:59:17 +0000 (18:59 +0000)]
Add infrastructure for doing an UPDATE as part of an UPSERT. Still no actual
UPDATE code, however.
FossilOrigin-Name:
6d3017f92bce3e50a91fab2f605e2af8b913b1b374adbfd977299eb042683de8
drh [Fri, 13 Apr 2018 16:29:50 +0000 (16:29 +0000)]
drh [Fri, 13 Apr 2018 16:23:22 +0000 (16:23 +0000)]
Remove an always-true branch from the preupdate hook logic.
FossilOrigin-Name:
0ab4518811b23bdb57feba55014cef07de66028f8fcbf8cf0831a712b2954b91
drh [Fri, 13 Apr 2018 15:14:33 +0000 (15:14 +0000)]
Get the ON CONFLICT DO NOTHING form of upsert working by mapping it
into INSERT OR IGNORE.
FossilOrigin-Name:
d07f05e98bb9ce0f9b46db159d9df161b7499d6face6a5299ecd2d00a94fb8d0
drh [Fri, 13 Apr 2018 14:27:01 +0000 (14:27 +0000)]
Get the conflict-target clause parsing working correctly, with test
cases. This change involves an enhancement to sqlite3ExprCompare() which
needs to be reviewed on trunk prior to merging.
FossilOrigin-Name:
5bf704256206f84b3db7a5d8523215604eeb218ef8db86316d1e43ecd7248d6a
drh [Fri, 13 Apr 2018 13:44:48 +0000 (13:44 +0000)]
drh [Fri, 13 Apr 2018 13:06:45 +0000 (13:06 +0000)]
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
drh [Fri, 13 Apr 2018 01:15:09 +0000 (01:15 +0000)]
Begin adding upsert logic. This is an incremental check-in.
FossilOrigin-Name:
809696434097e62e8ef486c7478b5eb62c0cf1342522a5584939fade82821410
drh [Thu, 12 Apr 2018 21:42:51 +0000 (21:42 +0000)]
Break out the upsert code into a separate source file.
FossilOrigin-Name:
389806b05f163687d8eb858b0f87f9a2d02e90af9f2097924a66715f05177613