1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00
Commit Graph

678 Commits

Author SHA1 Message Date
drh
48f2d3b10a Add the new OP_Once opcode. Use it to clean up and simplify various
one-time initialization sections in the code, including the fix for
ticket [002caede898ae].

FossilOrigin-Name: 7f00552b739fad79517b042a6ed61abe743a917b
2011-09-16 01:34:43 +00:00
drh
5b6a9ed495 Materialize subqueries using a subroutine and invoke that subroutine
prior to each use of the subqueries manifestation.  Fix for
ticket [002caede898aee4]

FossilOrigin-Name: 4b8357ee3c4ccdbd34e0cd077efd84cca677f496
2011-09-15 23:58:14 +00:00
drh
c2bb3282f1 Improve the testability of the merge-sort logic.
FossilOrigin-Name: b5179baf87aa00ed5cecbdcaa65bee10e112a9e9
2011-09-04 01:11:46 +00:00
dan
5134d1357e Instead of a temporary b-tree, use a linked-list and merge-sort to sort records in main memory in vdbesort.c.
FossilOrigin-Name: 7769fb988d9be0f2d8129aaac19620ac88f9b4a6
2011-09-02 10:31:11 +00:00
drh
1c9d835d49 Use OP_SorterOpen instead of OP_OpenEphemeral to implement GROUP BY.
FossilOrigin-Name: ebf819aaa555bd79fddfc0a6f9827a2539095d6c
2011-09-01 16:01:27 +00:00
drh
c6aff30ca4 Experimental code-generator changes to utilize new opcodes for sorting.
FossilOrigin-Name: bab2e560f6cb989c83a96aad60f666960ede7abe
2011-09-01 15:32:47 +00:00
dan
54bbe7f15e Fix a broken assert() statement in select.c.
FossilOrigin-Name: ad78ef2b3a20e3c3191fba232cbae70656210cf5
2011-08-29 18:24:27 +00:00
drh
ec661058dd Fix harmless compiler warnings on unix.
FossilOrigin-Name: 90b1aea17400bbda5ebc8ae4eb4e12127519e42e
2011-07-09 16:17:18 +00:00
dan
50118cdfdb Improvements and tests for detection of redundant DISTINCT qualifiers.
FossilOrigin-Name: 7337293c87fb563604dd6ad284f2d1e30c938b4c
2011-07-01 14:21:38 +00:00
dan
38cc40c216 Experimental changes to improve optimization of DISTINCT queries.
FossilOrigin-Name: f7ba0219ef2f235543c258be736955d91ca5ecce
2011-06-30 20:17:15 +00:00
drh
3e9548b30d Do not do full table scans of unordered indices.
FossilOrigin-Name: a8761a9128de945aa4b6196df5ffe64115d66b61
2011-04-15 14:46:27 +00:00
dan
bb2b441867 Changes to support building with various SQLITE_OMIT_XXX options defined.
FossilOrigin-Name: 2039ed952a02bdcd4fc6d2e20572c4632084dcdb
2011-04-06 17:54:31 +00:00
dan
ef7075de1f Fix a problem with "EXPLAIN QUERY PLAN SELECT count(*) FROM tbl".
FossilOrigin-Name: 9f9f32882501ac9b6e60f81195a64bdbf6e4497b
2011-02-21 17:49:49 +00:00
shaneh
a91491e5c7 Skip flattening if subquery has LIMIT and outer query is DISTINCT. Fix for ticket 752e1646fc.
FossilOrigin-Name: 559739998833643f589fa76d8360080691f83c18
2011-02-11 20:52:20 +00:00
dan
ce7e189d24 Change the type of a variable in struct SrcList so that it fits in a 100 byte lookaside buffer on a 64-bit architecture.
FossilOrigin-Name: 7df43f4892e628ecb8a83c5ed2dce5e24f6dd529
2010-12-01 19:00:48 +00:00
drh
95aa47b10a Use the estimated number of rows computed for subqueries in the cost
computations for outer queries.

FossilOrigin-Name: 56bbc539246a6dc9f1ae1edb898db7a4f6f6d322
2010-11-16 02:49:15 +00:00
dan
30969d3f26 Use "COMPOUND" instead of "COMPOSITE" in the EXPLAIN QUERY PLAN output to describe UNION, UNION ALL, EXCEPT and INTERSECT operations.
FossilOrigin-Name: 28643b85d93d27a44b9370e4087efa8fa2af7f8e
2010-11-11 17:48:51 +00:00
dan
7f61e92c3a Add a row of EXPLAIN QUERY PLAN output for each composite select operation (UNION, EXCEPT etc.) in the query.
FossilOrigin-Name: 00fb8468b5f2c48a3c91b86803bf306a0331496f
2010-11-11 16:46:40 +00:00
dan
17c0bc0c4a Add missing comments and fix other issues with routines used by new EQP features.
FossilOrigin-Name: 925f35c535396603e13bb12e9a361072e2c2c223
2010-11-09 17:35:19 +00:00
dan
4a07e3db27 Further enhancements and fixes for explain query plan.
FossilOrigin-Name: 73c93f5a2a32ee8c5d07c9ba33b2641e72626627
2010-11-09 14:48:59 +00:00
dan
2ce224535f Experimental changes to EXPLAIN QUERY PLAN.
FossilOrigin-Name: f4747eb83dacce6430ad6e5eb20155ffad975514
2010-11-08 19:01:16 +00:00
drh
1ea870125c Make sure the estimated row count for ephemeral tables is initialized so that
automatic indices can be used on those tables.

FossilOrigin-Name: d30f7b2deffdba373a2e0988f433c631c790a7b5
2010-10-21 22:58:25 +00:00
drh
5e87be8705 Fix long-standing bugs with the handling of LIMIT clausing in
compound SELECT statements with FROM clause subqueries.
Ticket [38cb5df375078d3f9].

FossilOrigin-Name: b0450120eabfe5455cea1ed04cec587a5540b6b7
2010-10-06 18:55:37 +00:00
drh
7153d1fb6e Use OP_Copy rather than OP_SCopy at one point in aggregate processing where
it is needed to avoid shallow-copy misuse.

FossilOrigin-Name: a5eefd5239bf5b4f9d0bdfb312f5b33c0a196178
2010-09-28 03:55:02 +00:00
drh
bb7dd68320 Remove a redundant test for multiple output columns in a scalar subquery.
FossilOrigin-Name: 657472bce2b2fe6f3d4bbead5301f658812b937d
2010-09-07 12:17:36 +00:00
dan
74b617b22a Move the test for an (illegal) scalar sub-query that returns more than one column to earlier in SELECT processing in order to avoid an assert() that can happen later on.
FossilOrigin-Name: a55842cfb56b659c88832dce9ce7bafb50258211
2010-09-02 19:01:16 +00:00
drh
d4187c716c Provide hints to the btree layer during the creation of transient tables
when it is possible for those tables to use a hash rather than a binary tree.
No use is current made of those hints, though assert() statement verify
their accuracy.

FossilOrigin-Name: 4fead8e714c7e50a9d246467e62bc846ef6180a0
2010-08-30 22:15:45 +00:00
dan
49ad330d67 Do not apply the flattening optimization if the sub-query is DISTINCT. Fix for [e4b8a2ba6e].
FossilOrigin-Name: 497aafd8ed6a636a8bd5fa2cad265a20593ee34f
2010-08-13 16:38:48 +00:00
drh
f053d5b6c7 Fix two comment typos that were reported on the mailing list.
FossilOrigin-Name: 88bf9016277c133dfbf4f4b2be0c35c9fe9fabd6
2010-08-09 14:26:32 +00:00
drh
b2468954c2 Remove additional traces (mostly in comments) of the Table.dbMem field.
FossilOrigin-Name: 5c58f44aeb224e106497368d9290d75a08807761
2010-07-23 17:06:32 +00:00
dan
1feeaed291 Remove the Table.dbMem variable, as it is no longer being used for its original purpose.
FossilOrigin-Name: 6eddc6e601cf8f585c6c2cf79f36fcbfe98a307e
2010-07-23 15:41:47 +00:00
dan
1db95106ee Currently, if SQLite cannot find a table or index referred to by a query, it reloads the database schema from disk to see if the table or index has been added since the schema was cached in memory. Extend this behaviour to columns (which may have been added using ALTER TABLE) and fix some obscure cases related to tables and indexes (INDEXED BY, DROP TABLE etc.).
FossilOrigin-Name: 4932f22848b3d15a2b6dc5fa2cd69ce19182e2a4
2010-06-28 10:15:19 +00:00
drh
8c6f666b26 Optimization: Convert an ORDER BY clause into a no-op if the query also
contains a GROUP BY clause that will force the same output order.

FossilOrigin-Name: ca9d86baf70f210d331ce93102177c8005c494cb
2010-04-26 19:17:26 +00:00
drh
f391327824 Disable query flattening when the outer query is a compound SELECT and
the inner query has a LIMIT clause.  Ticket [02a8e81d44].

FossilOrigin-Name: f96782b389b5b97b488dc5814f7082e0393f64cd
2010-04-15 23:24:29 +00:00
dan
67a6a40cf9 Clear the column cache before populating aggregate accumulator registers. Fix fo
r [883034dcb5].

FossilOrigin-Name: ffc23409c7fb45dc5a8722fad26e26d207bb3213
2010-03-31 15:02:56 +00:00
drh
5a29d9cbc5 Fix an assertion fault that occurs when two different virtual tables are
used in a single UPDATE statement.
Ticket [d2f02d37f52b].

FossilOrigin-Name: ff61e0fd802c46c2d84c4b0c0bc8a0f34959bb25
2010-02-24 15:10:14 +00:00
drh
f49f352320 Adjustments to column cache handling in order to restore 100% branch
test coverage.

FossilOrigin-Name: cc6b959bc1f968e08eea1afd387201d70a0c1e80
2009-12-30 14:12:38 +00:00
drh
b6da74ebd5 Immediately purge entries from the column cache when the associated register
undergoes an affinity change.  Ticket [eb5548a849].  Enhance the
SQLITE_TESTCTRL_OPTIMIZATIONS setting of sqlite3_test_control so that it
can disable the column cache for testing purposes, in an effort to prevent
future problems of a similar nature to this one.

FossilOrigin-Name: ea4e57e1c1b6663ceb12872e31a8503f6c14e3d8
2009-12-24 16:00:28 +00:00
drh
07096f68ae Move the query flattener turn-off from a pragma to an sqlite3_test_control()
call.  Make provisions (not yet implemented) to turn off other optimizers
using the same call.

FossilOrigin-Name: 4a97c623f4e190134de4b2ca406e311034a74797
2009-12-22 23:52:32 +00:00
drh
7b688ede64 Add a pragma to disable the query flattener - for use during testing.
FossilOrigin-Name: 1d8550e5c88db0ea76aea579c1a5bf99d48fbe43
2009-12-22 00:29:53 +00:00
drh
2179b43465 The USING clause and NATURAL JOIN look at all tables to the left when
searching for a match, not just the one table to the immediate left.
Tables further to the left are preferred.
Fix for ticket [f74beaabde].  Still need to add test cases to complete
the ticket.

FossilOrigin-Name: b558e96f0a3cd2cbbe86e44293246a4730960d52
2009-12-09 17:36:39 +00:00
drh
456e4e4fba Fix a bug in LIMIT 0 for compound SELECT statement.
The problem was introduced by recent enhancements and has not appeared
in any release.

FossilOrigin-Name: c6ed7e2a73a7a65cfa914ffcad4f603b6b7a22a8
2009-11-20 16:13:15 +00:00
drh
91fc4a0c4d Shift more OP_Found opcodes over to using the unpacked format, for improved
performance.

FossilOrigin-Name: 6705ab1ad12cbdbbcf1f3e5439a4e6cbdcc421b3
2009-11-12 20:39:03 +00:00
drh
8cff69df11 Enhance the OP_Found and OP_NotFound opcodes so that they can accept an
array of registers as an unpacked record in addition to a record built
using OP_MakeRecord.  Use this to avoid OP_MakeRecord calls during IN
expression processing.

FossilOrigin-Name: b9eab885cd2ca1a1633329e7036c125e8dba62c5
2009-11-12 19:59:44 +00:00
drh
9b918ed1d8 Adjustments to the implementation of LIMIT so that it uses fewer opcodes.
FossilOrigin-Name: 39d5b292d27faf00ab58ff4074f91f7aea97cd99
2009-11-12 03:13:26 +00:00
drh
c81c11f62c Remove the obsolete "$Id:$" RCS identifier strings from the source code.
FossilOrigin-Name: f6c045f649036958078cb15cd9d5453680c82b0c
2009-11-10 01:30:52 +00:00
dan
f7b0b0ad5f When generating WHERE clause terms internally for NATURAL and USING joins, identify the table by its position in the FROM list, not by its name or alias. Fix for [b73fb0bd64].
FossilOrigin-Name: 6fe6371175482d38ac4aeea994c7b20c18b7de01
2009-10-19 15:52:32 +00:00
dan
43bc88bbe8 Remove an ALWAYS macro around an expression that is sometimes false.
FossilOrigin-Name: f2a9ee722c568e73f2a08fb6a2886719850f2923
2009-09-10 10:15:59 +00:00
drh
3e9ca09453 Code simplifications, especially to the pseudo-table logic, and comment
improvements.

FossilOrigin-Name: 52449a9569b7142095cc88ee208b31cc59a3cab4
2009-09-08 01:14:48 +00:00
drh
417168ade2 Add the SQLITE_LIMIT_TRIGGER_DEPTH option to sqlite3_limit().
FossilOrigin-Name: d7dc8b433691745b3842282569f1573d1e057963
2009-09-07 18:14:02 +00:00