drh
c2acc4e466
Changes to make the new constant expression factoring logic more general
...
and more testable.
FossilOrigin-Name: d10fb49a92f5f6e93093ae83544e5aec7984361a
2013-11-15 18:15:19 +00:00
drh
10d1edf0b6
Improvements to the Expr comparison routine to make it more general.
...
Improvements to unary-minus code generation so that it can make use of
a global constant register with a zero value.
FossilOrigin-Name: 835be656bb0e83c8108104869166aa9dd850d265
2013-11-15 15:52:39 +00:00
drh
f30a969b80
Rework the logic that factors constant expressions out of inner loops, making
...
it both simpler and faster.
FossilOrigin-Name: 8dc5c76c766828d7c28090bec30ff48227e7b140
2013-11-15 01:10:18 +00:00
drh
84e55a80db
Add the "PRAGMA vdbe_eqp" command, only available with SQLITE_DEBUG. Simplify
...
some of the other debugging logic.
FossilOrigin-Name: 8ce33f4c818e1c785a1c176f6f631b8184e1166b
2013-11-13 17:58:23 +00:00
drh
392ee21d1a
Performance improvement: Avoid unnecessary seeks on REPLACE INTO for a
...
WITHOUT ROWID table.
FossilOrigin-Name: fd11afa5f5c853dcac2290444b581a3fe1d4332d
2013-11-08 16:54:56 +00:00
drh
fc8d4f96b4
Performance improvements:
...
Avoid unnecessary seeks when doing a single-row UPDATE on a WITHOUT ROWID
table.
FossilOrigin-Name: 6f187a0fb1b09ebc4732c4afbf3c813f82e069f1
2013-11-08 15:19:46 +00:00
drh
2ec2fb2269
Reference count the KeyInfo object. Cache a copy of an appropriate KeyInfo
...
for each index in the Index object, and reuse that one copy as much as possible.
FossilOrigin-Name: defd5205a7cc3543cdd18f906f568e943b8b3a2c
2013-11-06 19:59:23 +00:00
drh
f9c8ce3ced
Standardize the error messages generated by constraint failures to a format
...
of "$TYPE constraint failed: $DETAIL". This involves many changes to the
expected output of test cases.
FossilOrigin-Name: 54b221929744b1bcdbcc2030fef2e510618afd41
2013-11-05 13:33:55 +00:00
drh
bd50a926ef
Improved comments on foreign key logic.
...
FossilOrigin-Name: 1315d9109c7105f4a62bb2d43ca6948d41245129
2013-11-03 02:27:58 +00:00
drh
c6bd4e4a36
Store the root page of the PRIMARY KEY index for a WITHOUT ROWID table in
...
the sqlite_master entry for the main table and omit the sqlite_master entry
for the PRIMARY KEY.
FossilOrigin-Name: b7544bb280f1c1c55135a9b35aeb85604fef94a3
2013-11-02 14:37:18 +00:00
drh
f8ffb27850
Change the interface to sqlite3GenerateConstraintChecks() for improved lucidity
...
and to fix issues in dealing with UPDATEs for WITHOUT ROWID tables. Make sure
iDataCur and iIdxCur are initialized when processing DELETEs of a VIEW.
UPDATE processing distinguishes between changes to ROWID and PRIMARY KEY.
FossilOrigin-Name: c525ac5630d6bcd51842cfc84f2c2c50be9cec1c
2013-11-01 17:08:56 +00:00
drh
29f9774771
A couple of bug fixes.
...
FossilOrigin-Name: cdf00248cf8f7e3c2a3f2f5514273fbacc6fc8d9
2013-11-01 01:45:46 +00:00
drh
77f64bb7b9
Moving UPDATE towards the iDataCur/iIdxCur representation. Still not working
...
for WITHOUT ROWID, though.
FossilOrigin-Name: deacbd21b50cc8c63a1572d14a4bbc7af4052d37
2013-10-31 12:13:37 +00:00
drh
26198bb481
Refactor the INSERT, DELETE, and UPDATE code generators to distinguish between
...
the "data cursor" and the "first index cursor", which are no longer consecutive
in the case of a WITHOUT ROWID table.
FossilOrigin-Name: 1adfca6019847d37dee4a297669f29d5ca184066
2013-10-31 11:15:09 +00:00
drh
6fbe41acf2
Continue working to get UPDATE operational for WITHOUT ROWID tables.
...
Fix PRAGMA integrity_check so that it works on WITHOUT ROWID tables.
FossilOrigin-Name: 0d4fea7462c0f61cd1c736cbcd7bea5ec2034d54
2013-10-30 20:22:55 +00:00
drh
4af5bee41d
Merge EXPLAIN enhancements from trunk.
...
FossilOrigin-Name: 2fcac056074f0a23884ab5425003a7ca1d35c2a8
2013-10-30 02:37:50 +00:00
drh
c7379ce442
Add the SQLITE_ENABLE_EXPLAIN_COMMENTS compile-time option to enable extra
...
commentary in the EXPLAIN output. Formerly, this was only available with
SQLITE_DEBUG.
FossilOrigin-Name: e1a89b56f7173166bb9224e2e360fd67ad3399c3
2013-10-30 02:28:23 +00:00
drh
6f225d0d7f
Replace the OP_IsUnique opcode with OP_NoConflict. This code simplification
...
might be useful to move onto trunk even if this branch is never merged.
FossilOrigin-Name: e6650e16dd11327afd25961b2feb29ec8778c2ca
2013-10-26 13:36:51 +00:00
drh
261c02d963
Basic DELETE operations now working on WITHOUT ROWID tables.
...
FossilOrigin-Name: 9eafafa31c4a2bbcf48418743e0fcb17c374e9a6
2013-10-25 14:46:15 +00:00
drh
ecb31b6304
Update the interface to the sqlite3GenerateRowDelete() utility so that it is
...
able to handle WITHOUT ROWID tables. The implementation still needs to be
completed.
FossilOrigin-Name: 85daf5174679630474b3bccf3d662d5d56bf00d5
2013-10-24 19:48:39 +00:00
drh
4415628a4a
Construct secondary indices on WITHOUT ROWID tables.
...
FossilOrigin-Name: 2c028ddc85cb45746cad6ab0cefd99134fbd50d7
2013-10-23 22:23:03 +00:00
drh
ad124329ab
Some inserts and queries working for multi-column primary keys
...
and WITHOUT ROWID.
FossilOrigin-Name: b21d831b2aa55507dd9def2acb02cdbffddf10d1
2013-10-23 13:30:58 +00:00
drh
ec95c44175
Some simple inserts and queries working on WITHOUT ROWID tables.
...
FossilOrigin-Name: 3f8016dee24213ec83a02d71ad2698789cc3a818
2013-10-23 01:57:32 +00:00
drh
7f9c5dbfe9
Build internal data structures appropriately for WITHOUT ROWID tables.
...
FossilOrigin-Name: 35a3606071685aa5196951f4bdddb136589ea216
2013-10-23 00:32:58 +00:00
drh
bbbdc83b52
The Index object now has nKeyCol and nColumn. nColumn is the total number
...
of columns and nKeyCol is the number of key columns. Currently these always
differ by one. Refactor aiColumn[] to be of type i16 instead of int.
FossilOrigin-Name: a106ce86cd4afd1f81603826de77df1fb25e9ab5
2013-10-22 18:01:40 +00:00
drh
77e57dfbc8
Add a procedure to handle the messy details of allocating an Index object
...
from the heap.
FossilOrigin-Name: 45efc94f9a8169433ffcb4aa35760551c55df4c4
2013-10-22 14:28:02 +00:00
drh
5969da4a2c
Simplification of the syntax: Merely append "WITHOUT rowid" to the end of
...
the table definition.
FossilOrigin-Name: 131cc6e152abe1a2d48e6d8d40d2c2f8dbe723e7
2013-10-21 02:14:45 +00:00
drh
81eba73ebf
Experimental changes toward "index only" tables. Add the ability to specify
...
options on CREATE TABLE statements using the WITH clause modeled after
PostgreSQL and SQL Server. Only the "omit_rowid" option is currently
recognized and that option is currently a no-op.
FossilOrigin-Name: 0248ec5e6e3797575388f046d8c27f7445fe2a39
2013-10-19 23:31:56 +00:00
dan
67896cef89
Fix for building with SQLITE_OMIT_FOREIGN_KEY.
...
FossilOrigin-Name: b8b5f6c8f646989bc62bb59416de9bca003a5896
2013-10-14 15:41:39 +00:00
drh
80e0b72e8d
Make sure the sqlite3.h file occurs at the very top of the sqlite3.c
...
amalgamation.
FossilOrigin-Name: 03593817ab5abdd4bbaa5e47e2e4745eef025af9
2013-10-11 13:27:26 +00:00
drh
e13e9f54b0
Completely remove the iScanRatio field. The PRAGMA index_list(TABLE) command
...
shows the estimated row size in the forth column. It also generates a row
for the table with an index name of NULL. The query planner still does not
take row size estimates into account - that is the next step.
FossilOrigin-Name: 8b4aa0c7a2122bbe60432edadf27e490e31ec987
2013-10-05 19:18:00 +00:00
drh
bf539c4d5c
Begin an experimental refactoring to estimate the average number of bytes
...
in table and index rows and to use that information in query planner.
Begin by renaming WhereCost to LogEst and making that type and its
conversion routines available outside of where.c.
FossilOrigin-Name: 66c4a251d61582b47d5cbe50cbca160a9209bd06
2013-10-05 18:16:02 +00:00
drh
fdaac671b8
Improved estimates of the relative speed of index scans based on declared
...
datatypes of columns in the table. Add "r" column to PRAGMA index_info,
showing the estimated relative scan rate.
FossilOrigin-Name: 07462bb6059f023c22a6c84a4a02afbd84e69255
2013-10-04 15:30:21 +00:00
drh
c28c4e5009
Experimental branch allowing different postulated scan rates for each index.
...
FossilOrigin-Name: d59d97b0a8d70dc31d45db61bbc11ebb5375a224
2013-10-03 19:21:41 +00:00
drh
d100f6912d
The sqlite3FixInit() routine cannot fail. So change the return type from "int"
...
to "void".
FossilOrigin-Name: 500c5932fe3f5fcd0940522f7839d581c555e0eb
2013-10-03 15:39:44 +00:00
dan
46539d7cfa
Return an error if an attempt is made to create a trigger with an SQL variable embedded within it. If such a variable reference is found within a trigger definition loaded from the sqlite_master table, silently replace it with a NULL.
...
FossilOrigin-Name: f35f6ae3da77dbdf5f7a4a9927475659fc6e0ca6
2013-10-03 12:29:38 +00:00
drh
95a7b3e36d
The date and time functions use the exact same notion of "now" for every
...
invocation within the same call to sqlite3_step().
FossilOrigin-Name: daf6ba413cb3cb6065774ba07495eab4a28b49b0
2013-09-16 12:57:19 +00:00
drh
ebb6a65d16
Refactor the ExprSetIrreducible() macro into ExprSetVVAProperty(*,EP_NoReduce).
...
This is a naming change only. The logic is the same.
FossilOrigin-Name: 695aee46e9bdf15159ab52db7f522b30c91aed0f
2013-09-12 23:42:22 +00:00
drh
a4c3c87e3d
Merge in the Expr.flags expansion to 32-bits. Use an extra bit to help
...
optimize the sqlite3ExprSkipCollate() routine.
FossilOrigin-Name: 4c84d1b4c20f18921dd705bf67e8225975b83e86
2013-09-12 17:29:25 +00:00
drh
c5cd124900
Increase the number of bits available in Expr.flags. Other tweaks aimed at
...
making expression processing more robust.
FossilOrigin-Name: 579a512538528cf4bb4381ba393c5d9e7310086b
2013-09-12 16:50:49 +00:00
drh
4a1f4ff53b
Remove two obsolete fields from the sqlite3 object.
...
FossilOrigin-Name: 117fa5fbc9bed1a7b982c8ddc21b7e228905ccb4
2013-09-12 01:33:53 +00:00
drh
add5ce303f
Continuing refinements of the logic to take WHERE clause terms not used for
...
indexing into account when computing the number of output rows from each
table.
FossilOrigin-Name: b65dc53415f42d8402d0ec7f4bedf59d7b39b486
2013-09-07 00:29:06 +00:00
drh
cca9f3d291
Initial implementation of the unlikely() SQL function used as a hint to
...
the query planner.
FossilOrigin-Name: 036fc37a034093a4c6fc190633bd41c2b7230d77
2013-09-06 15:23:29 +00:00
drh
d36e104112
Combine the FuncDef.iPrefEnc and FuncDef.flags fields into a single
...
new FuncDef.funcFlags field.
FossilOrigin-Name: 97b10e66e98e84755aa577f8da017bf1aea2056c
2013-09-06 13:10:12 +00:00
dan
8ff2d9561a
When preparing an UPDATE statement, avoid generating VDBE code for those foreign key related actions and constraint checks that may be seen to be unnecessary by considering the subset of table columns potentially modified by the UPDATE.
...
FossilOrigin-Name: e940b5de49baa1d6a4cf859fbbc0e0df86ac5dbf
2013-09-05 18:40:29 +00:00
drh
1435a9a126
Adjust ANALYZE for improved test coverage. Use the SQLITE_ENABLE_STAT3_OR_STAT4
...
macro (created in sqliteInt.h) to conditionally include code, instead of
a boolean specifying both macros separately.
FossilOrigin-Name: 67a9a392edd62ef5a5a1ad3010b20a39b285793d
2013-08-27 23:15:44 +00:00
drh
9fecc546cb
Reduce the amount of code run and memory used for ANALYZE in the common case
...
where neither STAT3 and STAT4 are enabled.
FossilOrigin-Name: 9d1424c91a21ed740aca53e437b8f7c1f0823c03
2013-08-27 20:16:48 +00:00
drh
2f53b90665
Merge the STAT4 capability into trunk.
...
FossilOrigin-Name: a32af0abe5fa6d570604fa3534e8230d5b6042fc
2013-08-26 23:18:06 +00:00
drh
b49bc86a1a
Simplification to the StrAccum object and the sqlite3StrAccumAppend()
...
method that also results in slightly better performance.
FossilOrigin-Name: 700dbbea8647e0fdaee6d0aba3d3dd8ebfbac04a
2013-08-21 21:12:10 +00:00
dan
016f7811f2
If a virtual table xSync() returns an error message, copy it into a buffer allocated by sqlite3DbMalloc() before transfering it to Vdbe.zErrMsg.
...
FossilOrigin-Name: 854ba3049005adf033e07e6740a36e63f2a56758
2013-08-21 17:35:48 +00:00