drh
bb53ecb1db
Enhancements to the code generator for the IN operator that result in much
...
faster queries in some cases, for example when the RHS of the IN operator
changes for each row of a large table scan.
FossilOrigin-Name: 436e884215e2b33ca3fbb555362237b12827c07a
2014-08-02 21:03:33 +00:00
drh
4c259e9f40
A better comment on the generated code for the NULL-in-RHS-of-IN detection
...
logic.
FossilOrigin-Name: 9bc1c730a366e75b760b58e7a343d39165b2a469
2014-08-01 21:12:35 +00:00
drh
6be515ebe0
Improved detection and handling of NULL values on the RHS of a IN operator.
...
FossilOrigin-Name: 468e730036edac22cfeb9ea3515aa16e6bcd6650
2014-08-01 21:00:53 +00:00
drh
e21a6e1dfe
Remove an unnecessary OP_Null in the IN-operator logic. Attempt to clarify
...
comments explaining the IN-operator code, though it is not clear that the
comments are correct even yet - more work to be done.
FossilOrigin-Name: c11e55fabbc718cb324ecd3540453c25db98f50c
2014-08-01 18:00:24 +00:00
drh
e80c9b9ad5
The idea of coding IN operator with a short list on the RHS as an OR expression
...
turns out to be helpful. If the list is of length 1 or 2, the OR expression
is very slightly faster, but the ephemeral table approach is clearly better for
all list lengths greater than 2. Better to keep the code simple.
FossilOrigin-Name: e13175d3579e1045165bab091b3b28951d691704
2014-08-01 15:34:36 +00:00
drh
3a85625d87
Begin making changes to the IN operator in an attempt to make it run faster
...
and to make the code easier to understand.
FossilOrigin-Name: ee0fd6aaf94cda1dce3fe752bfe3b0f83e0043f1
2014-08-01 14:46:57 +00:00
drh
5f1d1d9c87
Refactoring: Change "pIndex->onError!=OE_None" to use a macro:
...
"IsUniqueIndex(pIndex)". Easier to understand that way.
FossilOrigin-Name: e75b26ee357bb3d3c1a539b05d633ebf314726d7
2014-07-31 22:59:04 +00:00
drh
37e08081f3
Omit a pointless OP_Null when processing a value-list RHS of an IN operator
...
where the LHS is a rowid.
FossilOrigin-Name: 1361450a9dfe9476e8df98f370a3695752252245
2014-07-31 20:16:08 +00:00
drh
4387006c18
Deactivate the DISTINCT in a SELECT on the right-hand side of an IN operator,
...
since it should not make any difference in the output but dues consume extra
memory and CPU time.
FossilOrigin-Name: f4cb53651b1e352fae7378878b830a902bcd9248
2014-07-31 15:44:44 +00:00
drh
1b7ddc5915
Remove a surplus function prototype. #ifdef code that is not used when
...
hex integers are omitted at compile time.
FossilOrigin-Name: a5b383e077e4b277a65920f7cc202f32f07aa9ee
2014-07-23 14:52:05 +00:00
drh
9296c18a50
Change the hex literal processing so that only the SQL parser understands
...
hex literals. Casting and coercing string literals into numeric values does
not understand hexadecimal integers. This preserves backwards compatibility.
Also: Throw an error on any hex literal that is too big to fit into 64 bits.
FossilOrigin-Name: 6c6f0de59bf96b79c8ace8c9bfe48c7a6a306a50
2014-07-23 13:40:49 +00:00
mistachkin
9bec6fb3ef
Revise the affinity returned for expressions flagged as 'generic'. Fix for [9a8b09f8e6].
...
FossilOrigin-Name: 92f7ad43dbfe4e02490df2f932c3c74fb89064d6
2014-06-26 21:28:21 +00:00
drh
d249090450
Remove the unused second argument from sqlite3ExprCachePop(). Add an
...
ALWAYS() on an always-true conditional in sqlite3VdbeResolveLabel().
FossilOrigin-Name: ab23abf392175d3e256ff619b13abbbe732a49ed
2014-04-13 19:28:15 +00:00
drh
f9f1bdb0c8
Merge trunk fixes for "x IN (?)" handling.
...
FossilOrigin-Name: eca35871c34374ca9189c7c9b6d490ac3c30357f
2014-03-20 20:56:49 +00:00
drh
5b1420e046
Remove a testcase() that is now always true due to the "x IN (?)" optimization.
...
Add an ALWAYS() around a conditional in the parser that cannot be false.
FossilOrigin-Name: d5a1530bdc7ace053d05d1a037551110021d3758
2014-03-20 19:04:56 +00:00
drh
fbb24d1092
The "x IN (?)" optimization in check-ins [2ff3b25f40] and [e68b427afb] is
...
incorrect, as demonstrated by the in4-5.1 test case in this check-in.
The "COLLATE binary" that was being added to the RHS of IN was overriding
the implicit collating sequence of the LHS. This change defines the EP_Generic
expression node property that blocks all affinity or collating sequence
information in the expression subtree and adds that property to the expression
taken from RHS of the IN operator.
FossilOrigin-Name: 2ea4a9f75f46eaa928ba17e9e91bc0432750d46d
2014-03-20 17:03:30 +00:00
drh
4ef7efad5e
Fix harmless compiler warnings.
...
FossilOrigin-Name: b1435f26b07b2208cfcca557f96342a5bd0d5328
2014-03-20 15:14:08 +00:00
drh
079a307259
First attempt at getting block-sort to work. This is an incremental check-in.
...
There are many problems still to be worked out.
FossilOrigin-Name: 59742dd4c5259883850044d0938248b009ebd045
2014-03-19 14:10:55 +00:00
drh
7d1761059b
Add VdbeCoverage() and VdbeCoverageIf() macros for improved VDBE coverage
...
testing.
FossilOrigin-Name: b92d31a97d5fe4606d9ae1393c7f3e052f46bf5a
2014-02-18 03:07:12 +00:00
drh
552fd45441
Improvements to "NOT IN (SELECT ...)" processing. Only test for NULL values
...
on the RHS on the first iteration, then remember the result. There has been
logic to do this for year, but it didn't work right and ended up repeating
the NULL test on every iteration. This inefficiency was found using the
VDBE coverage testing tools.
FossilOrigin-Name: 915f6f1c7aab54583729e60bdc1565f25ecc6f74
2014-02-18 01:07:38 +00:00
drh
688852ab15
Add logic to do test coverage measurements on the VDBE code.
...
FossilOrigin-Name: ce184c7bb16988641d37c908d9b3042456d4be3d
2014-02-17 22:40:43 +00:00
drh
05a86c5c0f
Enhance the code generator for INSERT INTO ... SELECT so that the SELECT
...
generates output directly in the registers that INSERT INTO will be using,
in many cases, and OP_SCopy operations can thus be avoided.
FossilOrigin-Name: aa2d8b0e8154dd2f5e2c837dc11ab362b083495b
2014-02-16 01:55:49 +00:00
drh
d227a291b2
Use the WITH clause to help resolve names for SELECT statements on the left
...
of a compound query. Proposed fix for ticket [31a19d11b97088296a].
FossilOrigin-Name: 67bfd59d9087a987f15f6148efa1ff104983e1fb
2014-02-09 18:02:09 +00:00
drh
b22f7c831f
Delete the OP_VerifySchema opcode. Enhance OP_Transaction to do the schema
...
version checks that OP_VerifySchema used to do.
FossilOrigin-Name: 2f3376ebf13df44e6acf27cb1f07172cd8b34033
2014-02-06 23:56:27 +00:00
drh
e08ecad58a
Do not mark the ephemeral tables used to hold the RHS of IN clauses as
...
unordered because the NGQP will use those ephemeral tables to help order the
output. This is not an issue for standard SQLite since ephemeral tables
there are always ordered, regardless of the hint. It only affects systems
that substitute an alternative storage engine.
FossilOrigin-Name: f2504089df0bf4011864e67825b37f6aa3d03458
2014-02-04 23:45:45 +00:00
drh
ec2da85412
Make sure that sqlite3SelectDup() initializes the nSelectRow of the
...
duplicate Select object.
FossilOrigin-Name: 5bb29b82109224a2ad02920658fabd8fb0f27b3f
2014-01-29 01:46:12 +00:00
drh
693e671936
Fixes for various clang warnings.
...
FossilOrigin-Name: 87bf60637e5863c54c5e2d05aaaca0835b7aace8
2014-01-24 22:58:00 +00:00
drh
edf83d1e3d
Fix harmless compiler warnings.
...
FossilOrigin-Name: dea2ca6a159d5dcfd8deceedf1c2a73fb4ac1cfc
2014-01-22 18:31:27 +00:00
drh
75303a2c68
Add asserts() for a couple of unreachable conditions. Add the Mandelbrot Set
...
query as a test case.
FossilOrigin-Name: 2ad4583c0cc7988f0dfe78fd0a2eb0fdb92d835a
2014-01-18 15:22:53 +00:00
dan
eae73fbfb9
Allow only a single recursive reference in a recursive CTE. Also require that this reference is not part of a sub-query.
...
FossilOrigin-Name: a296b73360d34c9364eceb2cc09a9a92adc4abb8
2014-01-16 18:34:33 +00:00
dan
8290c2ad5a
Disable the flattening optimization if the parent query is the recursive part of a recursive CTE and the sub-query is a compound query.
...
FossilOrigin-Name: 6bfa387e82de47ca1f40225fe28d873e29d6f481
2014-01-16 10:58:39 +00:00
dan
eede6a538d
Fixes so that SQLITE_OMIT_CTE builds work.
...
FossilOrigin-Name: 3908e2ea2e7e5f466cbbbffdc27e0fe8dc9751ac
2014-01-15 19:42:23 +00:00
dan
f43fe6e9f6
When resolving names, consider a reference to a recursive CTE column as equivalent to a reference to the outermost name-context. This ensures that correlated sub-queries are correctly identified as such.
...
FossilOrigin-Name: 61be2da0ae623c1572819481508b044e9d32f294
2014-01-15 18:12:00 +00:00
drh
a379b32f33
Don't try to verify the schema of transient table (such as generated inside
...
a WITH clause) when generating code for "IN table" operators.
FossilOrigin-Name: 860aa936634a60d68e3954fc408a96a9260394e0
2014-01-15 14:40:41 +00:00
dan
bfe31e7f80
Disable the flattening optimization if the sub-query is a recursive CTE.
...
FossilOrigin-Name: 9472f6d820a7fb233936d9b8f7a39c9d4c4d6d73
2014-01-15 14:17:31 +00:00
dan
8ce7184bc2
Add code to handle recursive CTEs.
...
FossilOrigin-Name: a5c2a54a07d35166911abc792008c05dea897742
2014-01-14 20:14:09 +00:00
dan
4e9119d9e8
Add code to handle non-recursive CTEs in the same way as SQL views.
...
FossilOrigin-Name: a26f399ba485e8127c276c5f103ec6c555e11734
2014-01-13 15:12:23 +00:00
drh
b66e21fda5
Fix an typo that breaks the build when SQLITE_ENABLE_TREE_EXPLAIN is defined.
...
FossilOrigin-Name: f461e2b3973d0fe6a7b8cb7a3aaab8a30b3e16c0
2014-01-04 20:00:14 +00:00
drh
54e2adb5f3
Improvements to the column-cache for nested AND/OR operators.
...
FossilOrigin-Name: 4e725f53131d3584319c710c8710a068989543c6
2014-01-04 15:17:04 +00:00
drh
991a198511
Be more aggressive in optimizing constant conditional expressions.
...
FossilOrigin-Name: b7e39851a75b87ebca747b26a39989560fd6362b
2014-01-02 17:57:16 +00:00
drh
4eded604ea
Combine adjacent single-register OP_Copy instructions into a single
...
multi-register OP_Copy, where possible. Fix the Synopsis comment for
multi-register OP_Copy instructions to show the correct register ranges.
FossilOrigin-Name: 2ae22dc0cbed2feca4baf89d02aaace0331971d6
2013-12-20 15:59:20 +00:00
drh
9ac7962ace
Show changes to the column cache when PRAGMA vdbe_addoptrace=ON is set.
...
FossilOrigin-Name: 4c6a659c432e4f7c0285f58675a67f967b07bb0d
2013-12-18 15:11:47 +00:00
drh
5b88bc4bec
Do not allow cursor hints to use expressions containing subqueries. This
...
change fixes the problem seen in the previous check-in.
FossilOrigin-Name: bfefc57554853e467ee6aeaba8d08331406fa216
2013-12-07 23:35:21 +00:00
drh
d673cddad6
Do not reuse factored constants that might have had their encodings changed.
...
FossilOrigin-Name: 487f20366ce77f0c90865d10d5aaedd95af98694
2013-11-21 21:23:31 +00:00
drh
d9f158e7b2
Fix the code generator to honor turning off constant expression factoring.
...
FossilOrigin-Name: 882622662dfadf49c65c7d80b7fd87533d079ce9
2013-11-21 20:48:42 +00:00
drh
d1a01edac9
When one or more arguments to a function are constants, try to factor
...
out just those arguments into initialization code.
FossilOrigin-Name: 50d350abbc9176cd6fc606bc45b8fc3020719500
2013-11-21 16:08:52 +00:00
drh
10f468f37a
Remove the obsolete TK_CONST_FUNC token type.
...
FossilOrigin-Name: 9b4217f055e9bced186b4c56a5753bd6da7115b5
2013-11-21 14:44:38 +00:00
drh
b1fba2868b
Add the ability to factor constant functions out of inner loops. But do
...
not factor out non-constant functions, like random().
FossilOrigin-Name: 1b0f779e19a5c0d51eddd2d88db50034d77d132c
2013-11-21 14:33:48 +00:00
drh
79353dbd5f
Simplifications to the VdbeCursor object.
...
FossilOrigin-Name: 5562cd343d8f69242e06a51a7f1aef7ee7d78eec
2013-11-20 02:53:58 +00:00
drh
85f8aa7907
Add ALWAYS and NEVER macros to currently unreachable but important branches in
...
sqlite3ExprCompare().
FossilOrigin-Name: cee835fe902e46f283257fb8ec9d9744c7d6dd77
2013-11-15 20:06:26 +00:00