drh
a3f108e93d
Reduce the size of the WhereScan object by 24 bytes while also clarifying its
...
operation.
FossilOrigin-Name: cbc3c9a8bf169ae0b21f26855038502c6cc25cfe
2015-08-26 21:08:04 +00:00
drh
567cc1e407
Move sqlite3IndexColumnAffinity() inside of SQLITE_ENABLE_STAT3_OR_STAT4.
...
FossilOrigin-Name: b3732a4e1b42a86675d89766cb8089914e2fab9a
2015-08-25 19:42:28 +00:00
drh
e910769817
Use the sqlite3IndexColumnAffinity() routine to quickly and correctly find the
...
affinity of an index column.
FossilOrigin-Name: 1ee089a72d789002a0a377347fc51e08ab32fb14
2015-08-25 19:20:04 +00:00
drh
c1bd84124b
Merge recent enhancements from trunk, including table-valued expressions.
...
FossilOrigin-Name: b9927c876c1d4e146cb6a603d82cd2489594084d
2015-08-20 23:45:59 +00:00
drh
01d230ce05
A list of arguments following a table name translates into equality
...
constraints against hidden columns in that table.
FossilOrigin-Name: 40e12cfe4c29475417ba89fb637b4c763cf74016
2015-08-19 17:11:37 +00:00
drh
8a48b9c0b1
Minor refactor of the SrcList object so that it is able to hold the argument
...
list to a table-valued-function in the FROM clause.
FossilOrigin-Name: b919376147597c4b73421abe5788f893baf1560b
2015-08-19 15:20:00 +00:00
drh
2f2b02785a
Fix the cursor hint mechanism so that it does the right thing for indexed
...
lookups.
FossilOrigin-Name: 581e3d4988e98975fea5daaeb9f854c54a4976b7
2015-08-14 18:50:04 +00:00
drh
cf599b6ade
Enhance the query planner so that it is able to use partial indexes that use
...
AND-connected terms in the WHERE clause.
FossilOrigin-Name: 065765902d2774d7432b9c00ea2efed26e0aaa5e
2015-08-07 20:57:00 +00:00
drh
36b80349b7
Add the OP_ColumnsUsed opcode (when compiled with
...
SQLITE_ENABLE_COLUMN_USED_MASK) as a hint to the b-tree layer as to which
columns of a btree cursor will be used.
FossilOrigin-Name: 711a176cbfad5dde6defa9648fba6d0d663af134
2015-06-12 12:54:15 +00:00
dan
4430b40934
Remove some repeated lines of source code. Probably introduced by careless cut'n'pasting.
...
FossilOrigin-Name: a34cd71c8aafaece04a2332a127e9b8e99c1403c
2015-06-09 10:58:51 +00:00
dan
35175bf7ab
If a query contains "FROM t1 LEFT JOIN t2, t3, t4", ensure that tables t3 and t4 are not scanned before t2. The trunk already does this.
...
FossilOrigin-Name: 0d9edfab9fb61322620f188b48ae2a1798a07581
2015-06-08 18:48:29 +00:00
dan
4f20cd402b
Avoid passing constraints that are unusable due to LEFT or CROSS joins to virtual table xBestIndex() methods.
...
FossilOrigin-Name: 80ee56dda7db3860f8be5f6968c8745138f8453f
2015-06-08 18:05:54 +00:00
drh
6c1f4ef217
Split more subfunctions of where.c out into a new whereexpr.c source file,
...
for improved maintainability.
FossilOrigin-Name: 46ef95c108ad8961f2bf3d2dc839d4fb1fddd770
2015-06-08 14:23:15 +00:00
drh
6f82e85a80
Split out the bulk of the actual VDBE code generation logic from where.c
...
into a new file, leaving behind the analysis logic. This makes the original
where.c smaller and hopefully easier to edit.
FossilOrigin-Name: faa0e420e93a2bc1c84df9eb9fef4748d29ce339
2015-06-06 20:12:09 +00:00
drh
b121dd14ac
Code simplifications in select.c and where.c.
...
FossilOrigin-Name: 4f20ac90bce8bd7ba43ef59af5cc4ef7aa282fe8
2015-06-06 18:30:17 +00:00
drh
97bae794c2
Add a new opcode to the VDBE that gives the b-tree a hint about the set
...
of columns in a table or index that are actually used by the query.
FossilOrigin-Name: f167bba446b78dd7538d0b2bae3e6678f3b1ba28
2015-06-05 15:59:57 +00:00
drh
d62fbb50e6
Change the name of SrcList.a[].zIndex to the more descriptive
...
SrcList.a[0].zIndexedBy.
FossilOrigin-Name: 6a9cf063379118dbb95c6cdc6d60af50e9867177
2015-06-04 12:08:53 +00:00
drh
05883a3409
Rename SQLITE_AFF_NONE to SQLITE_AFF_BLOB.
...
FossilOrigin-Name: bce3f04186cd2d69414a5a98b5b77dc8f060554a
2015-06-02 15:32:08 +00:00
drh
d092ed4355
Add some extra source-code comments and a test case.
...
FossilOrigin-Name: 6d410442fb532e2cf0ad1859bc9e843651f8ff4d
2015-05-29 14:36:30 +00:00
drh
7b3aa08e22
An attempt to allow automatic index creation on subqueries accessed via
...
co-routine.
FossilOrigin-Name: 521345add67e9dfd7df1446eb942aa0d84b9e6eb
2015-05-29 13:55:33 +00:00
drh
c4d56dd74b
Use an ALWAY() on conditionals in the transitive constraint logic that are
...
always true as far as we know.
FossilOrigin-Name: 204e567f68e4b3e069f04ca0643c6e5db781d39f
2015-05-18 12:18:37 +00:00
drh
69c15fee98
Refinements to the determination of when an A==B term is an equivalence.
...
Add test cases.
FossilOrigin-Name: 6bfaf525cac2e0c0a4a3bd3a1fc7bf5bd3234303
2015-05-18 11:34:52 +00:00
drh
5820118da5
Further restrictions on the use of the transitive property in WHERE clauses.
...
FossilOrigin-Name: 8c886c43ff0bd5953d289534791d2c6b9dc25445
2015-05-16 20:51:25 +00:00
drh
ea19cc10f5
Fix the transitive constraint processing to only allow transitivity if the
...
operands of the == or IS operator have compatible affinities.
FossilOrigin-Name: a46a247fbcfe6e63b12cef31353835295a650c9b
2015-05-16 19:17:17 +00:00
drh
e655a0e34e
Fix a typo in a comment. No changes to code.
...
FossilOrigin-Name: ee4b74250ad7a4061421d44b490cb79f649b3720
2015-05-16 18:31:44 +00:00
mistachkin
4e5bef8c00
Minor coding style change, adjust new local variable casing for consistency.
...
FossilOrigin-Name: 1a4628c66c632d2aff02bf134ddf7adceb04fb84
2015-05-15 20:14:00 +00:00
dan
3072b537f5
Do not assume that "col IS ?" matches at most a single row of a UNIQUE column unless the column is also NOT NULL.
...
FossilOrigin-Name: e038ce8955e785afcc07bb22499955bbd22a7af4
2015-05-15 19:59:23 +00:00
drh
4a00b33c02
More test cases. Remove some invalid testcase() macros. Rearrange some code
...
for improved testability.
FossilOrigin-Name: b3676377b257bd8bb7fefe9c365d76cdc9e44856
2015-05-14 13:41:22 +00:00
drh
ee14587c39
Add testcase() macros. Get transitive WHERE clause constraints on IS operators
...
working again.
FossilOrigin-Name: d195d4a65d7184e34a2a08c3ac3db7f6c8c1c21c
2015-05-14 13:18:47 +00:00
drh
e8d0c61f0a
A new implementation of indexing with the IS operator that works correctly
...
when the IS operator is in the WHERE clause and the operands are from
opposite sides of a LEFT JOIN.
FossilOrigin-Name: 4541688b3f56f5cd3d5b299594b58c577ad633bb
2015-05-14 01:05:25 +00:00
drh
9be1870994
Simplified implementation of indexing with the IS operator.
...
FossilOrigin-Name: 95b1f9bf14e490c6c6bba9ea78aeab712a44aab5
2015-05-13 19:33:41 +00:00
drh
e0cc3c296c
Add testcase() macros and comments and a few test-cases.
...
FossilOrigin-Name: 24263d08b11c88416d270013bdaf5ff45125cb4d
2015-05-13 17:54:08 +00:00
drh
fcd49531c9
An early attempt to get indexes to work with the IS operator. This code
...
passes tests, but much more testing is needed to verify that it works on
all corner cases.
FossilOrigin-Name: 6f7f1673d00d216a5aa456acb44793a14f3b3d91
2015-05-13 15:24:07 +00:00
drh
c049057242
Cleanup of the sqlite3StrAccumInit() function. No functionality changes.
...
FossilOrigin-Name: 7952c32268aa650d9ee946d5bfe190f712e3bbe6
2015-05-02 11:45:53 +00:00
dan
f89aa47f80
Fix an obscure memory leak that could follow an OOM in where.c.
...
FossilOrigin-Name: 08ec9f2f5a446774bb8e9b9b0ef463dd5458d28e
2015-04-25 12:20:24 +00:00
drh
0f517ea8d4
Make sure the whereSplit() routine in the query planner is not confused
...
by the likely() operator.
FossilOrigin-Name: 588db14ffb4b0e8e76d511b7b1541db3ec78836a
2015-04-21 02:12:13 +00:00
mistachkin
19b887e4ec
Fix another harmless compiler warning.
...
FossilOrigin-Name: 5ae853aaebaee76c9265061984185f74c10c4c8b
2015-04-19 23:48:10 +00:00
drh
29031837c1
Remove an incorrect ALWAYS() from the automatic index generator.
...
FossilOrigin-Name: eeb4bd06bf69e411736cc6077d1d64af6bd8fb09
2015-04-15 07:34:25 +00:00
drh
65df68e8c5
Correctly deal with an unknown collating sequence on an indexed DISTINCT query.
...
FossilOrigin-Name: a0b6e2fed3e95cf78ed0515c6e4da7510af4e86a
2015-04-15 05:31:02 +00:00
drh
11b0481778
Avoid problems when a query has a GROUP BY and an ORDER BY but no FROM clause.
...
FossilOrigin-Name: e527d96a1e098ade4e9d124b630a8c2ea2ac9b36
2015-04-12 01:22:04 +00:00
dan
2813bde028
Do not assume an index contains unique entries unless it is declared UNIQUE and NOT NULL is specified for all columns. Fix for [7b4fee9f6c].
...
FossilOrigin-Name: e3b1f625518edc0e925116668dca5d25c3232b59
2015-04-11 11:44:27 +00:00
drh
e0997b341b
Provide the BTREE_SEEK_EQ hint to the b-tree layer.
...
FossilOrigin-Name: e750830f1e61160c0c67e35b13e50b35a95b50e1
2015-03-20 14:57:50 +00:00
dan
80103fc614
Fix a problem causing collation sequence names to be dequoted multiple times under some circumstances.
...
FossilOrigin-Name: eddc05e7bb31fae74daa86e0504a3478b99fa0f2
2015-03-20 08:43:59 +00:00
dan
f104abba84
Make SQLite slightly more likely to use an auto-index within a sub-query.
...
FossilOrigin-Name: ab832336f4a28193c4d2b61e833564822a7b86a8
2015-03-16 20:40:00 +00:00
drh
29894b6d2b
When the WHERE clause contains two OR-connected terms with identical
...
operands but different operators, try to combine them into a single term.
Example: (X=A OR X>A) becomes (X>=A).
FossilOrigin-Name: 8bdda827a3d268009297a0216e3d94bf0eceeb2e
2015-03-16 17:48:12 +00:00
drh
c03acf2ea7
Improved comments. No code changes.
...
FossilOrigin-Name: 23f71a26386ff2aff9800fe96cec1dc9c805b5b6
2015-03-16 13:12:34 +00:00
drh
8426636cdc
When a WHERE clause contains disjuncts with the same operands, try to
...
combine them into a single operator. Example: (x=A OR x>A) becomes
(x>=A).
FossilOrigin-Name: 7a3097689d17625fb0dfc4372712f375f3bdb9a1
2015-03-16 12:13:31 +00:00
dan
a3d0c13654
When estimating the number of rows visited by a range scan for which the keys consist of more than one field, consider prefixes of stat4 samples as well as the full samples.
...
FossilOrigin-Name: e1caf93c9ad0ee15d42030af95619f212d3fcf9d
2015-03-14 18:59:58 +00:00
drh
8031462939
Fix the LIKE optimization so that it works even if there are additional
...
range contraints on the column that is subject to the LIKE or GLOB.
FossilOrigin-Name: 984c3fd5261619fb542a5a95dab37707b5d79dbf
2015-03-09 13:01:02 +00:00
drh
a40da62dd4
Always use LIKE optimization range constraints in pairs.
...
FossilOrigin-Name: 0e02dc94fd1bb891d0edd1e34b57e923b17712a7
2015-03-09 12:11:56 +00:00