1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-06 15:49:35 +03:00
Commit Graph

1279 Commits

Author SHA1 Message Date
drh
f1b5f5b855 Begin inserting some experimental code for the next generation query planner.
FossilOrigin-Name: ccaf4c3f7e1ec45e058d594d9b5c26818a37722a
2013-05-02 00:15:01 +00:00
mistachkin
dd08ca0ff9 Add the #ifdefs for sqlite3ErrName() to sqliteInt.h as well.
FossilOrigin-Name: 400fc4c37ff34e84f5a129a083a567bda840278e
2013-04-30 07:58:15 +00:00
mistachkin
f2c1c99f15 Initial work on reforming usage of OSTRACE by the Windows VFS.
FossilOrigin-Name: b347b5d1a01301f44e6fd20ee03a9529ffd25788
2013-04-28 01:44:43 +00:00
drh
2bba8c249a Reduce the default SQLITE_MAX_MMAP_SIZE slightly so that it fits in a
signed 32-bit integer.

FossilOrigin-Name: 460752b8575320163d2659bb7ff24aff41e2bb66
2013-04-26 12:08:29 +00:00
drh
aa87f9a68b Make sure the affinity and datatype of sub-subqueries are initialized
prior to subqueries as the latter relies on the former.

FossilOrigin-Name: 39b4e6ff9316cc78ea88349091e195b8104d1e9e
2013-04-25 00:57:10 +00:00
drh
d16d0bc58b Omit sqlite3_compileoption_used() entries that are not explicitly stated
on the compiler command-line, except keep SQLITE_THREADSAFE around so that
there is always at least one compilation option.

FossilOrigin-Name: 109d6767d2626741db1d15ed55e699ac3184a536
2013-04-16 18:24:34 +00:00
drh
9b4c59fa1b Refactoring the mmap interface. The controlling pragma is now "mmap_size"
instead of "mmap_limit".  Also change SQLITE_CONFIG_MMAP_LIMIT and
SQLITE_FCNTL_MMAP_LIMIT to SQLITE_CONFIG_MMAP_SIZE and
SQLITE_FCNTL_MMAP_SIZE, respecctively.  
The default mmap_size is now always 0, meaning that
memory mapped I/O is off by default.  There is a new compile-time option
SQLITE_MAX_MMAP_SIZE that determines a hard upper bound on the mmap_size.
Setting SQLITE_MAX_MMAP_SIZE to zero disables the memory-mapped I/O logic
and causes it to be omitted from the build.  An extra argument is added
to SQLITE_CONFIG_MMAP_SIZE that can optionally lower the SQLITE_MAX_MMAP_SIZE
at start-time. The SQLITE_MAX_MMAP_SIZE is zero for platforms where we 
know that it does not work, meaning that it cannot be turned on by mistake
on those platforms.

FossilOrigin-Name: ea1404a10abd7f68e1f8e0708c8a3199d1f79665
2013-04-15 17:03:42 +00:00
drh
a3a5bd9b62 Only consider AS names from the result set as candidates for resolving
identifiers in the WHERE clause if there are no other matches.  In the
ORDER BY clause, AS names take priority over any column names.
Candidate fix for ticket [2500cdb9be].

FossilOrigin-Name: ad53924dcadffb95c6497c46c228c67e8f5370e4
2013-04-13 19:59:58 +00:00
drh
188d488409 Disable the use of memory-mapped I/O if the SQLITE_DISABLE_MMAP macro is
defined.  Automatically define this macro for OpenBSD and QNX.  Other
systems are likely to be added to the disabled list over time.

FossilOrigin-Name: 8a4314a398c6c6efb25e6993c826b7e60d9bb1f9
2013-04-08 20:47:49 +00:00
drh
a1f42c7c32 Add the SQLITE_CONFIG_MMAP_LIMIT configuration option for overriding the
SQLITE_DEFAULT_MMAP_LIMIT compile-time setting.  Enhance "PRAGMA mmap_limit"
so that without a specific database name, it sets the limit on all database
files and changes the default for any future databases that might be added
using ATTACH.

FossilOrigin-Name: 78141d0a16dd1d56b575fccd149de7fa789cb06c
2013-04-01 22:38:06 +00:00
drh
0d0614bdc6 Memory-mapped I/O is now on by default. The "PRAGMA mmap_limit(N)" can be
used to issue a hint to the VFS to limit mmap space to N bytes.  The VFS
is free to ignore that hint if desired.  However, if "PRAGMA mmap_limit(0)"
is used, xFetch is never called.

FossilOrigin-Name: 1b37c4effdd03aa2ea938a71b4f22ed27391689b
2013-03-25 23:09:28 +00:00
dan
5d8a137218 Add the sqlite3_io_methods.xMremap() method to the VFS interface. Also "PRAGMA mmap_size".
FossilOrigin-Name: 6183f1bd86ceed76d22d9762f3d7eb33262c62d1
2013-03-19 19:28:06 +00:00
drh
1ccce44937 Fix the ORDER BY optimization with IN constraints when the RHS of the
IN constraint is a descending index.

FossilOrigin-Name: 62316ebaca933f7e5df2018e8360a2b74234f30a
2013-03-12 20:38:51 +00:00
drh
7a3e147ee2 Revised fix for the DESC ORDER BY and IN constraint bug,
ticket [4dd95f6943fbd18].  The previous check-in was incorrect.

FossilOrigin-Name: 8b2eb7a43b4580f04c14ea8600cf080e0e7f384d
2013-03-12 18:40:20 +00:00
drh
0fe456bb29 A proposed fix for the DESC ORDER BY bug of ticket [4dd95f6943fbd18].
Seems to work, but lots more testing is needed prior to moving to trunk.

FossilOrigin-Name: 614a038ad2fe111687d2bc1c0aa716d7eb8fdd7c
2013-03-12 18:34:50 +00:00
dan
881bd79293 Define _BSD_SOURCE when building on OpenBSD. This is required for fchmod().
FossilOrigin-Name: f9027cb47bdec8dcebf1f038921b28d9e9928c18
2013-03-11 13:37:52 +00:00
drh
4bde37027c Truncate over-length source lines in sqliteInt.h to 80 characters or less.
FossilOrigin-Name: d71abab08518f0be1eb73c7068566ab813652318
2013-02-19 18:34:12 +00:00
drh
a4b05e2874 Allow an index to be used for sorting even if prior terms of the index
are constrained by IN operators.

FossilOrigin-Name: 2cef8b68f0e1216cf68bb7dd45a5a9a330748070
2013-02-13 01:00:35 +00:00
drh
d91c1a1768 Add extended error codes for constraint errors.
FossilOrigin-Name: 5461104668a49529577f21df97f6a0e7d8f0c679
2013-02-09 13:58:25 +00:00
drh
2d96b934c8 Loop through the elements on the RHS of an IN operator in reverse order when
the ORDER BY clauses specifies DESC.

FossilOrigin-Name: f78395c8896666bb1359b83fbcd58d5e3dbc39d3
2013-02-08 18:48:23 +00:00
drh
e096205a7f New debugging pragmas: PRAGMA vdbe_debug=ON is short-hand for the sql_trace,
vdbe_listing, and vdbe_trace pragmas.  PRAGMA vdbe_debug enables tracing of
sqlite3VdbeAddOp() calls.  None of this is active unless compiled with
SQLITE_DEBUG.

FossilOrigin-Name: ae565ff3e0836b0cb45cc0ba7f27fa8cb2d21d77
2013-01-29 19:14:31 +00:00
drh
eb5bc9261c Add the ability to disable transitive constraints using the
sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS) interface.

FossilOrigin-Name: 593d67c8b0908daf7a70b2a310ed85515d384cbf
2013-01-17 16:43:33 +00:00
drh
7a5bcc0f08 Enhance the query planner to exploit transitivity of join constraints in
a multi-way join.

FossilOrigin-Name: 13171eb5dc19733276fbfd5515d75b70a9f5f5d7
2013-01-16 17:08:58 +00:00
drh
3e3f1a5b49 Now supports result sets of the form "TABLE.*" with nested FROM clauses.
FossilOrigin-Name: 4cf5ed7ea198abc32f8118e79490e77f847f08c1
2013-01-03 00:45:56 +00:00
drh
d530ee64ca Merge all the latest trunk changes into the name-resolution enhancement branch.
FossilOrigin-Name: a5f4d2b641f7fafb6f1a312efeffb10f213d2d0a
2013-01-02 12:29:05 +00:00
drh
b376daeb67 Reduce the size of the Index object (by 8 bytes on x64).
FossilOrigin-Name: 5a2ac944839ec0c5b9147a035c6cbf0935f3d202
2013-01-01 14:01:28 +00:00
drh
b2bb176b70 Add PRAGMA foreign_key_check. Name the child and parent tables as part of
a "foreign key mismatch" error.

FossilOrigin-Name: e408dc9080594dc464b8763dece6b365772c6105
2012-12-20 01:15:20 +00:00
drh
0dde4739f3 Add commentary to the ExprList object to explain how zSpan is overloaded.
Add test cases for the new name resolution functionality.

FossilOrigin-Name: 3e7d84db7861911c9b2c7dcdabe0b213bf483d79
2012-12-19 13:41:03 +00:00
drh
832ee3d4cc Optimize the degenerate case of a FROM clause table name enclosed all by
itself inside parentheses.  Generate code as if the parentheses did not
exist, rather than the old behavior of manifesting the parenthesized table
into a transient table.  Also, tag every FROM-clause SELECT subquery that is
generated by a parenthesized FROM-clause expression using the SF_NestedFrom
flag.  The new SF_NestedFrom flag is not yet used for anything.

FossilOrigin-Name: 7fecced466d86a66b0b751c5b5608141e134fe2d
2012-12-18 19:36:11 +00:00
drh
6c5b915fcb Prototype for PRAGMA that checks all foreign key constraints on a table.
FossilOrigin-Name: 01c980e9bbdf82e0b37667b6403c19ed8c73ee62
2012-12-17 16:46:37 +00:00
drh
953f7611da Fix a long-standing issue with the distinct-as-aggregate optimization that
only expressed when the new collating-sequence logic is turned on.

FossilOrigin-Name: 0aaf52a339808386984c30cca0c0c35ac2e70e7e
2012-12-07 22:18:54 +00:00
drh
0a8a406e9b Some errors in veryquick resolved. Many more to go.
FossilOrigin-Name: 972443b4eb282d45507da06c75e2cd46dd72326b
2012-12-07 18:38:16 +00:00
drh
ae80ddea9f Remove the Expr.pColl field and compute the collating sequence as it is needed.
This fixes the test script "shared9.test", though there is still a memory leak.
And there are other problems.  Consider this a work-in-progress.

FossilOrigin-Name: fd011cb22f2d899d94ec7ce22641d7a8f5e19972
2012-12-06 21:16:43 +00:00
drh
e6f1e760d5 Remove obsolete comments from the definition of the CollSeq object.
FossilOrigin-Name: 7b6951016f5bf4c21f843f09769ba176c709e785
2012-12-06 01:03:15 +00:00
dan
3de0f18476 If the atomic-write property is enabled, a transaction may be committed in journal_mode=DELETE mode without ever actually creating a journal file on disk. In this case, do not attempt to unlink() the journal file when committing the transaction.
FossilOrigin-Name: 11aa47b0a837858b644c304638e1cbbf482de2f0
2012-12-05 10:01:35 +00:00
dan
ac45593931 Add an option to register global hooks used for logging all SQL executed by an application.
FossilOrigin-Name: cd501bbccf3e62b002317592cc331770b32c129a
2012-11-26 19:50:41 +00:00
drh
782d68a4cd Try to take into account the cost of inner loops when selecting which table
of a join to use for the outer loop.

FossilOrigin-Name: 942556342a332b04a11169bb04f387d741ef9488
2012-11-09 17:59:26 +00:00
drh
a575967793 Make it possible to disable the subquery-by-coroutine optimization using
sqlite3_test_control().  Remove an always-false conditional.

FossilOrigin-Name: 564631f3e45f8f8a8db69f1e0df0d1dadbad8a2c
2012-10-30 14:39:12 +00:00
drh
21172c4cc0 Add an optimization that attempts to run a subquery as a coroutine rather
than manifesting it into a temporary table.

FossilOrigin-Name: 7af3acbbd49a2114fcdada9ec907c68ba9b053bd
2012-10-30 00:29:07 +00:00
dan
06a2d82566 Move a couple of WAL-related function declarations in sqliteInt.h and pager.h into "#ifndef SQLITE_OMIT_WAL" blocks. Otherwise, the amalgamation fails to build using some compilers with SQLITE_OMIT_WAL (static function declared but not defined).
FossilOrigin-Name: f7437153b90b25a1b77294a0f8d1b0bd4bd08c08
2012-10-10 09:46:29 +00:00
dan
aedf9ee73a Merge the shared-cache related fixes from the shared-cache-fix branch to the trunk.
FossilOrigin-Name: 698ec7769d4feea1782401479c61ce67d2113fd4
2012-10-05 17:44:51 +00:00
drh
79e72a50aa Consolidate all occurrences of the "no such collation sequence" error message
into a single spot.

FossilOrigin-Name: 8ea67522fb03134f355ecb776b70c6917241cab2
2012-10-05 14:43:40 +00:00
dan
41fb5cd103 Shared-cache mode fixes for views and virtual tables.
FossilOrigin-Name: 2b370dea704b59262c604af0efcef5660b194454
2012-10-04 19:33:00 +00:00
drh
a9e3fc05f5 Fix some corner case behavior in the new ORDER BY optimization logic.
Remove the SQLITE_OrderByIdx bit from the 
SQLITE_TESTCTRL_OPTIMIZATIONS mask, since enabling it caused many
TH3 tests to fail when the NO_OPT configuration parameter was engaged,
and since there really isn't any need to turn that optimization off.
The SQLITE_OrderByIdxJoin bit remains.

FossilOrigin-Name: 98b633717a1c9a08f6a1d00bc6bc891564ae7e9b
2012-09-27 23:27:23 +00:00
drh
7e5418e4a4 Add more bits to the bit vector that is used to disable optimizations for
built-in test.  Add specific bit patterns to disable ORDER BY using an
index in general and for joins.  Use macros to test for bits in the 
disabled-optimization bit vector, in order to make the code clearer.

FossilOrigin-Name: d2fcba1e143beca8c45724d2108870657c269e17
2012-09-27 15:05:54 +00:00
drh
46c35f9b20 Further refactoring of the ORDER BY related query-planning logic in order
to make it easier to extend to support optimizing out ORDER BY on joins.
No actual behavior changes, yet.

FossilOrigin-Name: 96496ddae12a239b30a1fc997fbea43e3a75bfe7
2012-09-26 23:17:01 +00:00
drh
46ec5b63e2 Change the internal sqlite3WhereBegin() to report that the ORDER BY clause
is satisfied by indices using the WhereInfo.nOBSat field of the returned
structure.

FossilOrigin-Name: 22989f3588531efd555cc29d6c576e7a34b7edc4
2012-09-24 15:30:54 +00:00
drh
e8e4af7697 Consolidate more of the DISTINCT processing logic into a single spot in the
code.  Reduce the number of OP_Column operations needed to perform a
WHERE_DISTINCT_ORDERED.

FossilOrigin-Name: 79e922f7ae29bbe06d639d648fbd72523cf9a28e
2012-09-21 00:04:28 +00:00
drh
634d81dee0 Continuing incremental enhancements of SELECT code generation:
Remove the Select.affinity field.  Use SelectDest.affSdst instead.

FossilOrigin-Name: cf40b7b5ebdacc3215d769aadacce8c9e7e9dfbb
2012-09-20 15:41:31 +00:00
drh
2c79733f3c Refactoring of DISTINCT code. Change the name of the local variable
"distinct" to "distinctTab".  Generate cleaner code w/o unnecessary P4
and P5 values on the OP_Null for WHERE_DISTINCT_ORDERED.

FossilOrigin-Name: 0cda241a2bcb3c6f2ae6c48f522780bc4eddfc02
2012-09-20 14:26:22 +00:00