drh
ab314001b8
Additional comments on the sqlite3ExprIsConstantOrGroupBy() routine. No
...
code changes.
FossilOrigin-Name: 8424492eac506866d2918e5fe03c8f65fef960215d56012a3b52ed42789ed35a
2017-05-02 16:46:41 +00:00
drh
c478c8daec
Remove an unnecessary branch.
...
FossilOrigin-Name: a33179596f534067a58d68b77160f11ab13272b29f912d7cbe15ea00bbf03ade
2017-05-01 19:53:12 +00:00
dan
ab31a8450b
Automatically transfer terms from the HAVING clause to the WHERE clause of an
...
aggregate query in cases where the result of evaluating the term depends only
one one or more of the GROUP BY expressions (and on no other inputs).
FossilOrigin-Name: 5375a3ce56f1d993b13b469fe33ec7679948f53940f62a15ddbaeb8aaa26a22c
2017-04-29 20:53:09 +00:00
drh
6ab3eb5d0e
Minor size and performance improvements to the push-down optimization.
...
FossilOrigin-Name: 91dfb61a1a25763bb0b5c1e353a9d584bc6de3f6eb445f54202ffe7f6fee6e8d
2017-04-29 14:56:55 +00:00
dan
6f654a40e8
Within a loop that uses a non-covering index test, test non-indexed terms that
...
can be tested without seeking the main table cursor before those that cannot.
FossilOrigin-Name: afe68f0a8060dc5c92cb1fb32a9f22bd36140cd2c0bb5b6cea853e169c5ed444
2017-04-28 19:59:55 +00:00
dan
a1188d6d93
When building an ephemeral table of integers, do not assume that the table
...
does not already contain N if the insert cursor points to N-1. Fix for ticket
[61fe9745].
FossilOrigin-Name: 1c1b0862236f564283be08338790d6494e705f1198547a59499e3f8c07f2cd99
2017-04-24 14:16:55 +00:00
drh
0c3233be0b
Fix an assertion fault found by OSSFuzz.
...
FossilOrigin-Name: e39769f442ea86273f8fb7bd2f249b7d760b2fe4bf9ec191ff91def8231f3f35
2017-04-22 00:20:49 +00:00
dan
39c9d3a367
Remove a NEVER macro for a condition that may be true as of [a47efb7c].
...
Problem reported by OSSFuzz.
FossilOrigin-Name: bdc50d8d127266d02b291f6bfcd4e35eb07994ce23987d6e3921124cd881929a
2017-04-21 17:03:32 +00:00
drh
bff6fe1f40
Improved optimizations of views as the right operand of a LEFT JOIN.
...
FossilOrigin-Name: 41c27bc0ff1d3135cdb6273ede4595f5bb0c0e1e1d470ea1633cb525674cf431
2017-04-18 11:20:19 +00:00
drh
cfcca02765
Defer checking for null in the comparison operators, since that is an
...
uncommon case.
FossilOrigin-Name: 5684525613961fed9db6a4d10dbe25521201b24f08e011df3a20ac895316957d
2017-04-17 23:23:17 +00:00
drh
e2bc6552fe
Do not allow a Mem object to be both NULL and some other type at the same time.
...
FossilOrigin-Name: e698db1956bb3aba32cd3ec633ec20f5d19b1a10bc68d3772903bca3c87ee158
2017-04-17 20:50:34 +00:00
dan
4bee5599c0
Consolidate two branches of code in the "PRAGMA foreign_key_check"
...
implementation.
FossilOrigin-Name: 69f51f838abcf57b35e41f7a10fbb45f56536f93825aac865debc3c8315930be
2017-04-17 18:42:33 +00:00
dan
940464b1dc
Fix a problem in "PRAGMA foreign_key_check" in handling a WITHOUT ROWID child
...
table with an INTEGER PRIMARY KEY parent key. Also, if an FK violation is
detected in a WITHOUT ROWID child table, do not try to read and return the
rowid. The third column returned by "PRAGMA foreign_key_check" in this case
(WITHOUT ROWID child table) is now always set to NULL.
FossilOrigin-Name: 690870bd7b2e607b7992c4496c9f08c29eb72a36af002c606fd7aa3dcf94a2a4
2017-04-17 18:02:41 +00:00
drh
6887e8facd
Fix the ".column" output mode in the command-line shell so that it correctly
...
counts and formats multi-byte UTF characters.
FossilOrigin-Name: f508aff8d1782abdff4d03726ae098607a0ee6cfd2e35b130097ee5043e98960
2017-04-17 13:18:42 +00:00
drh
147fd88268
In the skip-ahead-distinct optimization, fix a bug in the logic that determines
...
when to invoke the optimization based on sqlite_stat1 statistics.
FossilOrigin-Name: 89f9e4363aa19f306e55f749c442eae2f8994f6a47c65e645a79b308b450d5e5
2017-04-15 11:53:47 +00:00
drh
a2e2d92b21
Fix to the decision logic for when to use the skip-ahead-distinct optimization.
...
FossilOrigin-Name: e50fd48969f99bc988389c53ff46714603b1d11de12c71b55c00cbee037f073c
2017-04-14 22:41:27 +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
1a17b44231
When doing a DISTINCT query using an index, try to use the index to skip ahead
...
to the next distinct element, rather than doing a full scan of the index.
(This is the "skip-ahead-distinct" optimization.)
FossilOrigin-Name: f489b5bb6b35665befdd411c2c55df5258e83cba265d8c4427ba22529cf882a4
2017-04-14 17:30:43 +00:00
drh
399c7e21e4
An initial attempt to optimize VIEWs that occur as the right operand of a
...
LEFT JOIN. This particular check-in does not work correctly because it does
not deal with the case of columns in the VIEW that return non-NULL even when
all columns in the table of the VIEW are NULL because of the LEFT JOIN.
FossilOrigin-Name: 1838a59c8a1c151bd6fc822b0ffef661803cf0e4704c917e74a04567b81740b9
2017-04-14 17:18:45 +00:00
mistachkin
b1ed717f18
Make USE_FULLWARN=1 the default for MSVC and fix harmless compiler warnings.
...
FossilOrigin-Name: 6bf673767b8e5cedef1acff795cbe524fab8db2525c06424db4e038934a33936
2017-04-14 14:50:34 +00:00
drh
d97cda43ab
Enhance the sqlite3TreeView() display for Expr objects so that it shows
...
the iRightJoinTable value for Expr nodes that have the EP_FromJoin property.
FossilOrigin-Name: 5159cb8f2bcfb1f7114786ba23082d2b91a26e3a7ddfae75f8bd362792949d5e
2017-04-14 14:02:14 +00:00
drh
46967de2ec
Simplify the interface to the subst() routines that are part of the
...
query flattener by collecting common parameters into the SubstContext object
and passing around a pointer to that object.
FossilOrigin-Name: e651074be28b2077b8a298f513e2e699ceca99164ace9869ea50873c0637fd2e
2017-04-14 12:39:37 +00:00
drh
7c88bcd473
Remove an incorrect ALWAYS().
...
FossilOrigin-Name: f956f6ae6b0863c70c4a2b227338d5c332e87f2ec6f3fcdf2233c14c5b78ca2b
2017-04-14 12:27:45 +00:00
drh
571311502d
Fix a couple of unreachable branches.
...
FossilOrigin-Name: 1aa0ea8db7580aff8bed2f78117ed50019e5545cef48cab782f512a2599fd0c5
2017-04-14 00:45:51 +00:00
drh
172806e489
Fix the skip-ahead-distinct optimization so that it works with indexes that
...
have repeated columns with different collating sequences.
FossilOrigin-Name: ce1e2b88777e00a82c04abe5ba35eec81b5f324e462f099cd00b21054f369688
2017-04-13 21:29:02 +00:00
drh
c04ea80f64
Simplification of the skip-ahead-distinct logic. There is still an issue
...
with handling COLLATE.
FossilOrigin-Name: 57c5173b6376a76013b0611ce9770100bd8c04e80402e35d821d8614709f4795
2017-04-13 19:48:29 +00:00
dan
a74f5c2923
New test cases and minor fixes for the optimization on this branch.
...
FossilOrigin-Name: 70ac9ea1a6cb2f4906f00f1a04f668e5ba5eeed8d4d0fa4be57a9c9eb0683697
2017-04-13 18:33:33 +00:00
dan
d0a537100c
Reinstate the SQLITE_API qualifier on the sqlite3_delete_database() method in
...
test_delete.c. Accidentally removed by the previous commit.
FossilOrigin-Name: 59c70108fd179932ccdd860f93e1cd68b77476d3b1af1af00cf6e378c9984862
2017-04-13 15:51:27 +00:00
dan
44ae27ac32
Update the code in test_delete.c to use the "win32" VFS if SQLITE_OS_WIN is
...
defined.
FossilOrigin-Name: fa9bb7b768027677f7e7d5a196ba5b245dfc8d8986ccd101c8dab671bd15719d
2017-04-13 15:36:47 +00:00
drh
839fa6d814
Only use the skip-ahead-distinct optimization if the index has been analyzed
...
and we know that a skip-head is likely to skip over at least 11 rows. The
magic number 11 was determined by experimentation.
FossilOrigin-Name: 0cf16decd534bf2d66620c293f8c8987f356305f2d97f8fd12d260bda1571385
2017-04-13 13:01:59 +00:00
drh
8489bf5aff
Forward port the skip-ahead-distinct branch which was abandoned for some reason
...
that I do not recall. This port should have been achived by a merge of trunk
into the previous head of skip-ahead-distinct, but that did not work. So I had
to manually "rebase" the changes.
FossilOrigin-Name: 132339a1fb0b9664df4d3eefbed6e77ef100ba95a91dcc622da7bd3fcdfcd6af
2017-04-13 01:19:30 +00:00
dan
940b5eaa5e
Avoid updating unaffected indexes on a table as part of an UPDATE that requires
...
foreign key processing in some cases.
FossilOrigin-Name: 477bea9ed0dd0fa69896bfd16d9b1d22170cbab784e3279ce65c29c47e032f34
2017-04-11 19:58:55 +00:00
drh
e97c9ff49a
Smaller and faster implementation of exprMightBeIndexed().
...
FossilOrigin-Name: 76cd611d41465fcec61c21520d55172cb236530f38386b7d4a5544ba87de2353
2017-04-11 18:06:48 +00:00
drh
ef90a6b8dd
Very slight smaller and faster sqlite3SelectNew()
...
FossilOrigin-Name: 4143650c4ce32289d2301cdfc69bb10877246420f656bed122886f6803fc956a
2017-04-11 16:44:39 +00:00
drh
cbae543a5c
Add an ALWAYS() around an unreachable condition in sqlite3VdbeMemGrow().
...
FossilOrigin-Name: 0f3eb61f44c94234ffc14c3a493a27ec62c0d1e2bb62798f36eafa98ddcdc58e
2017-04-11 12:20:54 +00:00
dan
b8d29c2f75
Fix a segfault that could occur if an indexed expression was used in a
...
comparison operation within the result-set of a SELECT statement.
FossilOrigin-Name: d6bb7c42ff6309ce168ccdcf03b4cdabfccfc9e2a911d254ac7dc4fea4aa2bc1
2017-04-11 11:52:25 +00:00
drh
eac5fc0476
Improved comments. Fix a problem when an indexed expression is used in an
...
ORDER BY clause.
FossilOrigin-Name: c59eaf2b7cd2596733f349fc0fe979f71fd29bd73152a0c57066e0b69d5b7a4a
2017-04-11 01:01:27 +00:00
drh
2f8b37850c
Merge changes from trunk.
...
FossilOrigin-Name: 8978465f335925378d3aa99df6190ce6a1ee6b130205ccc493f2399803844760
2017-04-10 23:42:04 +00:00
drh
0415d826c0
Smaller and faster vdbeFreeOpArray()
...
FossilOrigin-Name: e052436d9f54b785facd661adc648512356b831c0547aa8f347ebf4bd8ef1254
2017-04-10 20:51:21 +00:00
drh
4c6463cc29
Slightly smaller and faster sqlite3VdbeMemGrow().
...
FossilOrigin-Name: efd1702ae8da8e0dd3d2ee7bd5a1bd8aeff2b370498e404041fcb406fdaf72e4
2017-04-10 20:27:54 +00:00
drh
7a6ea93fd8
Do not expose the name of the internal Mem object in the public interface
...
defined by sqlite3.h.
FossilOrigin-Name: 19dd753f9e50fee247b1ab141669817c7e88bc3f6d6065dba6c731db9f7a2409
2017-04-09 19:23:55 +00:00
dan
a34adaf667
Expand on the comment above OP_Destroy to explain why it throws an error if
...
there are any active reader VMs.
FossilOrigin-Name: b9a8c2b9bec9f537b2d5aff6659a5748b1f70b53519a1f9dfceb5209154eca8e
2017-04-08 14:11:47 +00:00
drh
13fe138b0a
Fix the quoting mechanism for ".dump" so that it is not applied for the
...
".mode quote" output.
FossilOrigin-Name: 78c1e90305d48917d9423d8e50a7dfd15ec27aa93cb421610062229c7ede13a6
2017-04-08 13:42:55 +00:00
drh
72507d431b
Fix the ".dump" command so that it works with ".headers on". Also fix the
...
display of ".mode insert" with ".headers on".
FossilOrigin-Name: a6ce57ee3c7f3527554a75cc1dd5ebcd33c944d4dca07b134d103596a2ae5b32
2017-04-08 00:55:13 +00:00
drh
aca19e19a8
Proof of concept for the ability to use the expression columns in an index
...
on expressions in place of equivalent expressions in the result set or in
the WHERE clause. This check-in compiles but is mostly untested.
FossilOrigin-Name: a52ef2ad7c0e14b78b801f16a1f6ea8d8fa9ae5d7d810e18dd24c600b662a312
2017-04-07 19:41:31 +00:00
drh
6193d49cdf
Use replace() instead of char() to quote newline and return characters in
...
strings in the output of .dump, to avoid excess expression complexity.
FossilOrigin-Name: 4c2b572969ea2ed2a925444ecfa356aa877018cbb9c4f57d081ab4b535cd1dd0
2017-04-07 11:45:58 +00:00
dan
54e2efcd2f
Fix the ".lint fkey" shell command for cases where the child key is also an
...
INTEGER PRIMARY KEY.
FossilOrigin-Name: 48826b222c110a90996a84605318ea6b1e502b8c5129f4d561f8350dbdbcd264
2017-04-06 14:56:26 +00:00
dan
50da9382f9
Fix the ".lint fkey" shell tool command so that it works for foreign keys that
...
refer implicitly to primary key columns with non-BINARY default collation
sequences.
FossilOrigin-Name: 327eff25ba2420267cc8dc49dd3c3aab45f4bf9e060d1ad480e25d016d21f3ba
2017-04-06 12:06:56 +00:00
drh
6948ed5977
Remove a confusing and pointless sentence from the documentation for the
...
sqlite3_interrupt() interface.
FossilOrigin-Name: c5f1a2b6eb3df879d247a22b3f92f4f74fcf4f0d219450abc420ae6d02481324
2017-04-05 13:44:40 +00:00
drh
dbd6a7dc06
Split off sqlite3DbFreeNN() from sqlite3DbFree() and use it in cases where
...
we know that the argument to be freed is never NULL.
FossilOrigin-Name: ad90e8bb5e47945607c8fb47b6ade8cfc52a9b684805cc40132629be0ecc14cc
2017-04-05 12:39:49 +00:00