Commit Graph

18012 Commits

Author SHA1 Message Date
mistachkin 9b8c5f6819 Fix the usleep() macro in the Win32 test code for lsm1.
FossilOrigin-Name: 63599fa524a7c72ffa5362041f2ec394d9af9c43025d8b6d5a34e98eb423d5ff
2017-07-07 17:57:21 +00:00
drh d5eae667f4 Add new PRAGMAs: "function_list", "module_list", and "pragma_list". All are
enclosed within #ifdef SQLITE_INTROSPECTION_PRAGMAS.  The compile-time option
is not on ctime.c yet, since these are still experimental and one can always
test "PRAGMA pragma_list" and see whether or not it returns an empty set.

FossilOrigin-Name: e0b6ae92adfae46f64fc2e2719e22e5467c34d49c1aeaec5cc5faf04258de0f7
2017-07-07 17:43:30 +00:00
drh 8ae11aac93 Add the "Pragma_list" pragma. Put all three pragmas created on this branch
inside of #ifdef SQLITE_INTROSPECTION_PRAGMAS.

FossilOrigin-Name: 2f3c3781ef3d66ecafef083d7144287ff23eea5a6d93b014dfeb2a8ac71f757e
2017-07-07 17:33:07 +00:00
mistachkin e60092b90c Improve clarity in the Win32 VFS for lsm1.
FossilOrigin-Name: 9c7a9e805d95d3d4a3f7e2d608280b7ca0dda01114e32cd366b1deb14e6e6839
2017-07-07 16:46:08 +00:00
mistachkin baebf3cc4b Add support for LSM_DEBUG_MEM to the MSVC makefile for lsm1.
FossilOrigin-Name: 3340de83df8c4fb19f729e6ff0838a9a03a1e701cdb40cb830e76f294198024a
2017-07-07 16:29:37 +00:00
dan 45158fa5d9 Remove a block from the Win32 VFS for lsm1 that is now superfluous.
FossilOrigin-Name: 5f726f2830dcf91f5e5c010b10761757f746d39b9dd2b8c9770452ce65bb1652
2017-07-07 16:27:43 +00:00
dan 3bc909b0af In lsmtest, use an empty string instead of ":memory:" when requesting a
temporary database from SQLite. This prevents other test code from trying to
unlink() ":memory:", which fails on win32.

FossilOrigin-Name: 281ad505d7a112c5524ea9fb195dfc46f819a58f79f42b37b12fbfe46a089ff2
2017-07-07 16:09:24 +00:00
mistachkin 5bd9e61f05 Remove a block from the Win32 VFS for lsm1 that is now superfluous.
FossilOrigin-Name: db4a41408eff450ee429b936847313c2c92ba1f5b1fcbadaacaff3c08bfdd589
2017-07-07 16:07:53 +00:00
mistachkin d429ec222c Memory reallocation fix for the Win32 VFS for lsm1.
FossilOrigin-Name: 5a3140e4dedace6de4366a3c52e41b818b6d19f356fdab738c6605afc1b674fa
2017-07-07 16:06:30 +00:00
drh 40cf27cb63 Enhance the sqlite3VdbeMultiLoad() interface to automatically generate the
OP_ResultRow opcode on PRAGMA implementations, for a small reduction in the
library footprint.

FossilOrigin-Name: c46f0f076c674891e20240bad56693d891aedc43004bcf980a5d199515f23413
2017-07-07 16:00:53 +00:00
drh ab53bb635c Add new pragmas: "function_list" and "module_list"
FossilOrigin-Name: e5f01d7fde05fdb547f35816ff15c31a92c170b31877f4c640b7bc2be3f580b3
2017-07-07 15:43:22 +00:00
drh 4676462f92 Merge recent enhancements from trunk.
FossilOrigin-Name: 73d0fc027ddcc24e55cdc8c54443a96083cc9a29e57c0abe97e8586ff8a7f4c5
2017-07-07 14:26:43 +00:00
drh d10866798d Exploit the fact that Expr.pRight and Expr.x are never used at the same time
for a small performance gain.

FossilOrigin-Name: aacbb9a461fdb34c7f9c8ce348e44c3e96c93334f210d438d92bfac1794dc686
2017-07-07 13:59:34 +00:00
drh c2d14a9a33 More efficient and compact implementation of walkExpr().
FossilOrigin-Name: 115d4b83392d346634866dd959bef30fca50db2e526df17eaeb3d94da7fc895e
2017-07-07 12:58:30 +00:00
drh b98a2e351e More aggressive use of EP_Leaf on expression nodes, to help prune searches.
FossilOrigin-Name: c1a1d68c8219c8072e60af5c46a30849ae9a04fa1a6b2a8b22b82fec069d691d
2017-07-07 12:43:57 +00:00
drh 3da70a6112 Very slightly smaller and faster sqlite3WalkSelect().
FossilOrigin-Name: 9bc65635b29a4991c7821ef0939975d007f9ac23716717699353ef3246e27791
2017-07-07 11:49:48 +00:00
drh 0db5bfe5de Small adjustment to main.mk that facilitates giving non-standard compile-time
options to the shell.

FossilOrigin-Name: 7c7d53a9bbc27fde2dcc028cb7765c76cad0a784e53095b652c90d371968c53d
2017-07-06 22:43:41 +00:00
drh a0c3927510 Change the (machine-generated) keywordhash.h file to increase the scope of the
tables used for keyword matching, so that the tables are accessible to
functions other then keywordCode().

FossilOrigin-Name: c5ed5ebdf660501fde7cc8aefaaaeae2a68e5899a64ac93f26684842a235281d
2017-07-06 16:33:14 +00:00
drh 9d8e401c2d More compact implementation of the typeof() SQL function.
FossilOrigin-Name: efb4aab0caa4145732a5438cc2a193bc12c455b4007220564d240e75900ea8ad
2017-07-06 13:51:50 +00:00
drh ebaaa67db2 Avoid unnecessary upper-to-lower case conversion for function names when
registering the built-in functions.

FossilOrigin-Name: 06269257647db51fbc9f8cda88abac5db28b6f917a509768af7686dfa2b94511
2017-07-06 13:23:26 +00:00
drh 3b02e0f615 Small size reduction in findCollSeqEntry().
FossilOrigin-Name: 55ecd30304517acd23f89b3450fd6a5e18ac2f79aa24a4ff693f8d71a49f7837
2017-07-06 03:06:20 +00:00
drh 666e86625c Avoid unnecessary calls to sqlite3GetCollSeq() for a small performance gain.
FossilOrigin-Name: 503ba172e4c32e288abf006fc5cb53fd2b0313c4ee4c526c2d9c4c21b7178f2d
2017-07-06 02:49:26 +00:00
drh 07a3b11a50 Slightly more compact implementation of the byte-code generator for
the COMMIT and ROLLBACK commands.

FossilOrigin-Name: 4da663d9863004d8cef58259a043fdcf4f466f80d3714cf58321a52485be8766
2017-07-06 01:28:02 +00:00
drh 169a689f7b Small performance increase in sqlite3SrcListAppend().
FossilOrigin-Name: 7b2623f1994384484cf31ae9e443ee20f19b278bf2e91898dbc01828822ddf91
2017-07-06 01:02:09 +00:00
drh a35d851892 Make the hash table implementation a little smaller and faster.
FossilOrigin-Name: f762f1effe1ce893d6b67815ad8b585bae2c1621d9199dac9c85d39dad16e774
2017-07-05 23:33:33 +00:00
dan adea0d1c39 Have fts3 virtual table cursors free internal resources when they reach EOF,
instead of waiting until the xClose method is called.

FossilOrigin-Name: b6b14ab6c8f9758a64e5fd29203f8fa610b5c4ef917de9be51ae55e072fad4ed
2017-07-05 18:48:07 +00:00
dan 7181395a4d Fix a problem in lsmtest causing one test to fail for multi-threaded LSM
connections.

FossilOrigin-Name: 2bce64c8864b616f9ab0063f64d0ceb2f83e53e110970c6b3b11003cba5c8804
2017-07-05 14:29:04 +00:00
drh 269ba80469 Add the count-of-view optimization when compiled using
SQLITE_COUNTOFVIEW_OPTIMIZATION.

FossilOrigin-Name: d1ba200234f40b84327c7fc28c2584ed069da80e97578df71114d1a9ba9c559c
2017-07-04 19:34:36 +00:00
dan 431a53fde2 Fix further OOM handling cases in LSM.
FossilOrigin-Name: ca757c8665e27de884086b2aab2bd1db481e2d12f2afe136ec151bf5a0e65b91
2017-07-04 19:23:32 +00:00
dan 038af0bdc6 Fix a couple of problems in handling OOM conditions within LSM.
FossilOrigin-Name: 989a5c1745a7145c14c6d9b713176ecba6b99296de8bdd09f666eeef10da9c2e
2017-07-04 17:25:45 +00:00
drh 92395c59ff Fix a problem in the lempar.c Lemon template for YYSTACKDEPTH<=0 introduced
by check-in [36e54cd8b1fb37]

FossilOrigin-Name: 268a40f44cea6c3f561b7f54c90d631877be44292911424bac24f72c5ee87d60
2017-07-04 12:50:00 +00:00
drh 518ee8f06f Fix compiler warnings in LSM1, especially in the test logic.
FossilOrigin-Name: 9bd3be92b8add7bd0d7bc4b0742b2dd227ebb8d67a839b78f26f2b06b47490f2
2017-07-03 21:09:28 +00:00
dan 45408a108f Fix a bug in lsm queries on levels undergoing incremental an merge that
contain range-delete markers.

FossilOrigin-Name: b2c2487928becbea5a932895d153709c98a057a3c71c2600e165478562e9f7c5
2017-07-03 20:19:28 +00:00
drh cde336e0dc Attempt to improve documentation on sqlite3_column_ and sqlite3_value_
interfaces.

FossilOrigin-Name: 9111ac69bf307997e590bc9459222661fc79f549b3c493168a654a5046e6e4ad
2017-07-03 17:37:04 +00:00
dan 05dda7ba8e Add more tests for LSM log file recovery. Fix a problem in recovering log
files that contain range deletes.

FossilOrigin-Name: e34eafd4c5b2bbf2735e136ad69b67bb4288ad4d01a0128d8e107ac46209a182
2017-07-03 09:00:18 +00:00
dan 24f6904e99 Fix a memory management problem in lsm log recovery code.
FossilOrigin-Name: dd55af30b4440bba1b97c2155b9f499d791cd7d8bae8341972c41439fdc41edc
2017-07-01 20:59:06 +00:00
drh c7b1ee5f6e Enhance the RTree module to detect node truncation early and report an error.
FossilOrigin-Name: 66de6f4a9504ec2670b7273de8fb6955c80e03f7f73414ea6b80fd8a99f75976
2017-07-01 15:21:17 +00:00
drh 3561dd4afe Update the carray() and remember() extension functions so that they user
the new sqlite3_value_pointer() interface.

FossilOrigin-Name: a99fa94db7185b8eaf3c9b184cb1479f8b3d5781f71f1717a4b3f2dd1d184fe4
2017-06-30 23:46:16 +00:00
drh 3a96a5d919 Add APIs for binding pointers that can be used by app-defined functions.
FossilOrigin-Name: d9f4a831ba957ead3890b36d0e33e30cfa4c79b7de6400e623b9746a0a5a02d0
2017-06-30 23:09:03 +00:00
drh fd76b71cac Improved documentation for sqlite3_value_type().
FossilOrigin-Name: 0db20efe201736b3ebb177948f6a440ce28e62454536a8496fae64a3b55cb702
2017-06-30 20:11:45 +00:00
mistachkin 04222ce52e Add some assert() statements in the Win32 interface for lsm1.
FossilOrigin-Name: d076d58ff108d286f7ac1f81e1ce945d6f4a4f5f97e3b8d5cee6f8d9a6c48d8f
2017-06-30 19:22:33 +00:00
mistachkin 88f769f967 Fix some minor typos in lsm1.
FossilOrigin-Name: 0ef777d7474383c0211b19baa4a161cf7fce6570f384dfef368cdab45c1a0f01
2017-06-30 18:12:09 +00:00
dan a5b55e370f Avoid constantly freeing and reallocing small internal buffers associated with
LSM cursors. Instead, allow them to persist for the lifetime of the cursor if
they are LSM_SEGMENTPTR_FREE_THRESHOLD (default 1024) bytes or smaller.

FossilOrigin-Name: bacfe8cb3e4d3be736c6789b2ce55ef5603e5c7a289b05b37cae2203cd7f2290
2017-06-30 11:44:11 +00:00
drh a501f7dab4 In the command-line shell, add the -quote option to start up in quote mode.
Enhance the ".mode" command so that it reports the current output mode if
given no arguments.

FossilOrigin-Name: 5e3f9ea5c4fad35fe02a12d59114e94ee00e0a09c1840c88908a4c282e2f4625
2017-06-29 21:33:25 +00:00
drh c31b79d2a4 Remove the ".explain" command from the ".help" output of the command-line
shell, though keep the implementation around for backwards compatibility.

FossilOrigin-Name: 7782c04e9b2c0e95b5ac2a38876c1a233becfd892140bc6844790d62aeaff4f7
2017-06-29 21:11:27 +00:00
drh e755072c3b Some simple tests for the STMT virtual table.
FossilOrigin-Name: a26e17ee56d3c019fc4772fcf95480b4515eea6cfc74c3d494be0d1941e49666
2017-06-29 20:31:01 +00:00
dan d681d3472d Avoid reading or writing the 32 locking bytes at the end of the first meta-page of an LSM database.
FossilOrigin-Name: 3ed6877f89106131fd030c183fac036fed7231cd92dc4715e87a34a045500bdf
2017-06-29 20:23:32 +00:00
dan 28508ddb42 Avoid reading or writing the 32 locking bytes at the end of the first
meta-page of an LSM database.

FossilOrigin-Name: 2b5df3e8a80ae5c0415081dd9b29acaad1464be2e7971399e52c1c98408322d9
2017-06-29 20:13:44 +00:00
mistachkin 97e8b3ea32 Fix issues in the POSIX and Win32 interfaces for lsm1.
FossilOrigin-Name: 38ec41416679e8280d77c8a4913aa6a321784b1237a3fe409b8e256c5f4513de
2017-06-29 19:08:52 +00:00
drh 1d1982c324 Edit comments in sqlite.h.in used for generating documentation, to improve
the description of the new sqlite3_prepare_v3() interfaces, and other
miscellaneous cleanup.  No changes to executable code.

FossilOrigin-Name: 284707a7b3514a55cce24292e45632b7033d6edcff5b27deac5118b27c7b2954
2017-06-29 17:27:04 +00:00
mistachkin de680efbc3 More updates to the Win32 interface for lsm1.
FossilOrigin-Name: cae647696769c9fcdc3beafdfdf74d8384217f4b22820e4545093bea7be58f7c
2017-06-29 16:51:52 +00:00
mistachkin c2586f77ad Correct typo in the Win32 interface for lsm1.
FossilOrigin-Name: 1b4facb1ad0085aa52e63d4d432179467ddc2a69b668d49d86e65ead66a73f57
2017-06-29 15:57:42 +00:00
drh 01e6d540a7 Add interfaces sqlite3_prepare_v3() and sqlite3_prepare16_v3() with the
extra prepFlags argument. Add the SQLITE_PREPARE_PERSISTENT option as 
one bit in that argument.  Use the new option in FTS3, FTS5, and RTREE.

FossilOrigin-Name: 03977248e6fdaa9b35c15e5dd9bb89552f2f0a913cc31609b5af1e2347b67d38
2017-06-29 15:24:57 +00:00
mistachkin 14e61df283 Further corrections to the Win32 interface for lsm1.
FossilOrigin-Name: 4df6e2476ce93b9ca7a6959c8c2d6ef2c30395984b007d74166031dcf09d54b4
2017-06-29 15:13:48 +00:00
drh c6603af755 Rename the "stmts" virtual table to just "stmt" without the final "s".
FossilOrigin-Name: adfdb80105c46ac42b71132c80a91dbd5b1c9ff241fb4fbb5d04641a88898d90
2017-06-29 14:33:51 +00:00
mistachkin 3881d23c72 A couple fixes for the Win32 interface for lsm1.
FossilOrigin-Name: ebbd98e941d8a8ea97b434c29b70095515af0adab1977aa4d37fe74a7401f846
2017-06-29 14:17:48 +00:00
drh c79983312f Add the stmts virtual table to testfixture builds. Add new compile-time
options SQLITE_ENABLE_QPSG and SQLITE_ENABLE_STMTSVTAB to ctime.c

FossilOrigin-Name: 60c628293a1d8a1505e1a36dbd01b1f62bcfd7915e144044c92385423cbf8e07
2017-06-29 13:41:59 +00:00
mistachkin 2ca62cb102 Compilation fix for lsm1 using MSVC.
FossilOrigin-Name: b7794cc5d5abc13c6301c8d5c1b330405432c047f154083430fd15823221e552
2017-06-29 13:35:44 +00:00
drh e4b45f536e Add the LSM1 extension.
FossilOrigin-Name: 824e83274c04d24fd854bc7376c958ea6b05862efc562a3dfed0fc888fd96cc2
2017-06-29 13:19:55 +00:00
drh 366050e89a Add the "stmts" virtual table to the amalgamation, activated when compiled
using -DSQLITE_ENABLE_STMTSVTAB.  Add the SQLITE_STMTSTATUS_REPREPARE and
SQLITE_STMTSTATUS_RUN statistics outputs from sqlite3_stmt_status() and add
corresponding columns to the stmts virtual table.  Change the numeric value
of SQLITE_STMTSTATUS_MEMUSED to get it out of the way of counter values.

FossilOrigin-Name: 88976ae31c2cbc8b75f162140d1356132f69e5b30786e39ad8ca5a1774b03621
2017-06-29 13:13:33 +00:00
drh 3039e3698d The query planner examines the values of bound parameters to help determine
if a partial index is usable.  Reprepares may happen if the bindings change.
This behavior is disabled by the QPSG setting.

FossilOrigin-Name: c322bfa27e88fc9e2c969c1e4ce12a7d541bd2f30e133d267eb2d15fd3477fde
2017-06-29 12:59:40 +00:00
mistachkin d90dbb8c1c Implement xUnlink, xShmMap, and xShmUnmap for lsm1 on Win32.
FossilOrigin-Name: 680cc064c9e809ddc643074b5e65677f484d904b3d52826f6def480ddaa8f0ab
2017-06-29 12:54:58 +00:00
drh 00d11d400b Add the SQLITE_STMTSTATUS_REPREPARE and SQLITE_STMTSTATUS_RUN options to
sqlite3_stmt_status().  Use this for two new columns in the stmts virtual
table.

FossilOrigin-Name: b0b0c8f8d548ef78584ab714ab120b01c1b83fc0d8ae2fd7626b970bab9fca58
2017-06-29 12:49:18 +00:00
drh 5aa307e2a6 Fix the exprCompareVariable() routine so that it works for non-UTF8 text.
FossilOrigin-Name: 25acd9658be792d686b3ebfaa8c3692f9830e043538ed0afecf97110a07758a4
2017-06-29 01:23:12 +00:00
mistachkin cffbd543d3 Implement xRemap for lsm1 on Win32. Also, zero file handle when closing it.
FossilOrigin-Name: 93c9aa7d9aea46b331c53ff579ef704e88ce90f96600b69479a87a4bb4ca2a91
2017-06-29 00:20:42 +00:00
drh c080422642 Alternative implementation of exprCompareVariable(). Need to run tests on
both this branch and the original to see which one to go with.

FossilOrigin-Name: b959c6297c151150ea2dca24aa1f68f3bd76dd6620eb6c03f8dfa59fdd5c13b2
2017-06-28 21:47:16 +00:00
mistachkin 44ab70db7e Implement xLock and xTestLock for lsm1 on Win32.
FossilOrigin-Name: 9112117dad8085c385aa614cd982b307f5822761607ba358f34df7848c549134
2017-06-28 21:36:40 +00:00
drh 3e380a4485 Make the query planners use of partial indexes based on bound variables
responsive to the SQLITE_DBCONFIG_ENABLE_QPSG setting.

FossilOrigin-Name: a934dd14ac55177ac541423f4a077484bb3b461b60c9c2e88d067cca922fa2bc
2017-06-28 18:25:03 +00:00
drh 37f906087b Merge the in the latest enhancements from trunk.
FossilOrigin-Name: 8f63c5863231eba7f853f9587b58a81102c31708402fa9962a6e91aa622fad13
2017-06-28 18:07:29 +00:00
drh d0bbe4e9c2 Incorporate recent trunk changes.
FossilOrigin-Name: 62b8269ba2ff71e2daaa86688698896badd6f6e34ab42fbf92dda7fcda73a230
2017-06-28 15:56:58 +00:00
drh f00f530b7d Build the "stmts" virtual table into the amalgamation. It is active only
when compiled using SQLITE_ENABLE_STMTSVTAB.  That option is supplied to the
command-line shell.

FossilOrigin-Name: 0ff057d86e42e518fda22bfbf5f1977ab6bd0a74a9211ff259ee7e8a7ce98b58
2017-06-28 15:47:29 +00:00
drh 2fb960b545 Fix harmless compiler warnings in the CSV extension.
FossilOrigin-Name: f02a54599de7620438aecd3753199fc52ce8919d7503bb8b2f5592b0e51dbf8c
2017-06-28 15:17:31 +00:00
drh 8b471e7e79 Faster parser stack overflow detection.
FossilOrigin-Name: 36e54cd8b1fb374fd41e3e09b34b86e34327bf07c9e4bfec58382163c5c5d279
2017-06-28 15:01:35 +00:00
drh 6559e2cec7 Minor tweak to the SQL grammar to make the parser tables a few bytes smaller.
FossilOrigin-Name: cc4810b23e683e8c359f7c1a562338ec8501e43cac3475b2be002568fca5e6a4
2017-06-28 14:26:37 +00:00
drh 6be95366c7 In the lemon-generated parser, store the number of symbols on the RHS of each
rule as a negative number and add it to the stack pointer, rather than storing
the value as a positive and subtracting it.  This makes the parser faster.

FossilOrigin-Name: b362f0d8ed34839bf3b29d10ed0853ab94245fba135ccd28e619caa6ee6992d5
2017-06-28 13:47:56 +00:00
drh bd8fcc130a In the lemon-generated parser, automatically promote SHIFTREDUCE actions on
nonterminal systems to pure REDUCE actions, for a performance enhancement.

FossilOrigin-Name: c46d94a8cde816ca383e771721ebd4900de77950cba700e35a26f70fd5b794a4
2017-06-28 11:56:18 +00:00
drh 6e11b16282 Simplify error handling logic in sqlite3_exec() to save about 40 bytes.
FossilOrigin-Name: 6480916c7266437cf8a70e5db2ca5c753ad71c361b68e41cbf8572f77c271920
2017-06-28 01:21:16 +00:00
drh 59a386ea03 Minor code simplification in the ALTER TABLE logic.
FossilOrigin-Name: bfc4e7f30e4654b9603457fb6a4136828e346dcfe4e313fdf56ed62d131b7156
2017-06-28 01:12:53 +00:00
drh 3144df1264 Avoid an unnecessary call to sqlite3XPrintf() in the code generator, for
a performance improvement.

FossilOrigin-Name: 29d6ceb3838394d902e248d1eab627625a857dccb5ed0bb66161a13fafc500c8
2017-06-28 00:55:50 +00:00
drh a5e906f307 Add SQLITE_DBCONFIG_ENABLE_QPSG that forces the query planner stability
guarantee.  This is the fix for ticket [b9f010107724c]

FossilOrigin-Name: b82efd2a24914ace39acf99df75175042471fd73a8d31d66a40b15f63b342e10
2017-06-27 23:36:44 +00:00
mistachkin ec99c0f632 Improve a local variable name.
FossilOrigin-Name: d0f6973d93c36451bf64f47de9a88abec613a624603033bf6717f5071139b6d2
2017-06-27 22:33:06 +00:00
mistachkin b5fdc26c21 Initial work on porting lsmtest to Win32.
FossilOrigin-Name: 7e669d9bfab237ff7ece821cf95cfd3bb753b1882b9a86044b7d4579808aecf4
2017-06-27 22:27:54 +00:00
mistachkin 59b1dd3830 Implement xFullpath for Win32.
FossilOrigin-Name: dbe9c8aa8d70051fafec569054eeda6c02efe9d036ab6beada00da3ed42e52d9
2017-06-27 18:15:38 +00:00
dan 210ec4c855 Fix a virtual table problem that can occur when the vtab is on the RHS of a
LEFT JOIN and there is a MATCH constraint in the ON clause, or when the vtab
is in a sub-query that is the RHS of a LEFT JOIN and there is a MATCH
constraint in the WHERE clause of the sub-query.

FossilOrigin-Name: 87b381663398f029f52cb5598aadd069b03034b6f833ce80ba762b406075a44e
2017-06-27 16:39:01 +00:00
mistachkin 8e1ddde079 Minor corrections to the previous check-in.
FossilOrigin-Name: e1cf8a78a0bbd7b05cefab22a5c9676098887ee9811d37330ce89b3367856f92
2017-06-27 06:28:00 +00:00
mistachkin 02679b0466 Work in progress porting lsm1 to Win32.
FossilOrigin-Name: 2017636e93cf810fe4d1247c18de9f316fca037035a026f77c4588563d7bf0cc
2017-06-27 05:59:47 +00:00
drh af38cdbc08 Add the -withoutnulls option to the "db eval" method in the TCL interface.
FossilOrigin-Name: 18f0616e15684ca327fb10a1d133331af1d3b75f609498982290f6ad69fcaced
2017-06-26 21:08:32 +00:00
drh d5fbde80a2 The ".import" command of the shell, and the csv virtual table extension both
ignore a single UTF-8 BOM at the beginning of their input.

FossilOrigin-Name: 7c15d762d99c2e3e534cd35dfe25ddcd317637eb1f2655fd24c2dd5f9d5a7613
2017-06-26 18:42:23 +00:00
drh 7df7475d0d Make sure sqlite3VdbeSetVarmask() is never invoked when QPSG is enabled.
FossilOrigin-Name: ebcfa73e1c8ebb4fc371a6dcf77f97b6e06e405a299c66182aa4b20423d519ec
2017-06-26 14:46:05 +00:00
drh 169dd928c5 Add the SQLITE_DBCONFIG_ENABLE_QPSG option to activate the query planner
stability guarantee.  This involves refactoring the sqlite3.flags bitvector
to carve out a free bit to use.

FossilOrigin-Name: 7076e8283ebae1b45a5d85d9538b49b6da399d38c3c6935de100f948f814f6a9
2017-06-26 13:57:49 +00:00
dan 4261a4065f Remove an invalid assert() from lsm test code.
FossilOrigin-Name: ca8a7e995c3da10ba05e3b7d4818c633fe5ba6d6f9351b67017a2603b50b903d
2017-06-26 11:46:01 +00:00
dan 3a31c67aae Fix another problem with multi-threaded mode in the LSM test code.
FossilOrigin-Name: 461ced77d93e84f09bfb4291999cd0245506fa9a8369049fd68968bbcf18d41b
2017-06-26 08:24:35 +00:00
dan e6f98bcf09 Update a test case to reflect the fact that the lsm blocksize is configured in
KiB. And defaults to 1024, not 2048.

FossilOrigin-Name: d7015475f121db1f56060716cd8adb73e9b52016890ec9018b620ef9d7d4fbff
2017-06-26 07:31:28 +00:00
dan 07cae6ae74 Fix some compiler warnings in lsm_file.c.
FossilOrigin-Name: 23f16382ed47a90bf5e6c1684d54d28484dca46fea20ca0f131bd477cf222bfb
2017-06-26 06:53:24 +00:00
drh a22dd3860a Disable shell tests for the .schema command if virtual tables are not available.
FossilOrigin-Name: c8186874b3fec737445ad5c4ba3eaecd922af664b387d89dc31eea60476a0294
2017-06-24 19:21:48 +00:00
dan 5aa550cf3b Consider the values bound to SQL variables when determining whether or not a
partial index may be used.

FossilOrigin-Name: 7b59c353b805c64689b4ae9df347705acbb5f116346ad77af8ce087da7893747
2017-06-24 18:10:29 +00:00
drh 7f2d1cd2b0 Make sure the config.h header is included by ctime.c, if that header exists.
FossilOrigin-Name: c2ea62937ec8fabec72d3c7cd38d8e2cabbb5ce48638f8ce7ebefd6cd2716fd3
2017-06-24 16:35:00 +00:00
drh 54ac445d53 Query planner tuning: When deciding between two plans with the same cost,
bias the selection toward the one that does not use the sorter.

FossilOrigin-Name: f0ec36d479ac4efaa0efd0594d032dd7b8ccdf84a4dc3644cd688762186fbcca
2017-06-24 16:03:18 +00:00
drh 45e7d7dd1c Make sure enough memory is allocated for pathological quoting cases when
computing a quoted table name in the command-line shell.

FossilOrigin-Name: 0583b84ab444db3ae3c93db619b67bf84b0305ab989200e77214e02ff2dc923a
2017-06-24 13:31:40 +00:00
dan 65c2a71042 When generating individual loops for each ORed term of an OR scan, move any
constant WHERE expressions outside of the loop, as is done for top-level
loops.

FossilOrigin-Name: 712267c9c08fdcef5d59cedc672657b55fd6a77472711711599f0bd653e6d880
2017-06-23 15:47:05 +00:00
dan c456a76fb3 When generating individual loops for each ORed term of an OR scan, move any
constant WHERE expressions outside of the loop, as is done for top-level
loops.

FossilOrigin-Name: e4a022be4b069b08cfdfda5295461676b99d28e17bbbedfbcb362dec69de59bd
2017-06-22 16:51:16 +00:00
drh c45fdb2a7f Enable pragma virtual tables for the integrity_check, quick_check, and
foreign_key_check pragmas.

FossilOrigin-Name: 118f7bb33a6f78951bbffa957f48015d1bce5aaf9246a99262a90bc8ad52e5a3
2017-06-21 01:36:30 +00:00
drh f383f35e6c Rename the azCompileOpt global constant to avoid a harmless compiler warning
about a name conflict with a local variable.

FossilOrigin-Name: 94e420ecfb4ec047eb7d1d3125ca8487c90d466760b7f7183759ff922bd868d1
2017-06-20 18:19:16 +00:00
dan bd11a2acbb Ensure that the query planner knows that any column of a flattened LEFT JOIN
can be NULL even if that column is labeled with "NOT NULL".
Fix for ticket [892fc34f173e99d8].

FossilOrigin-Name: 483462682d3a57fb9dd85b4772596e9738f1694a454b8ebbc480b9452733e88d
2017-06-20 17:43:26 +00:00
drh a5907a86b8 Experimental "PRAGMA secure_delete=FAST" pragma. The intent is to overwrite
deleted content with zeros without increasing the amount of disk I/O.

FossilOrigin-Name: f1682f0faf1a93ded066464b1ddd5f987e21ee0f6bb5e828ed31c3ad903cf2c3
2017-06-19 11:44:22 +00:00
drh 40db2fd7a3 Fix a missing comma in the previous check-in.
FossilOrigin-Name: f3db02f49073c3f08c3fd7816d85e5472d5e22df20d862fe4886eb2a97efb15f
2017-06-17 18:49:50 +00:00
dan ea03adc6b2 Rework the code in ctime.c a bit to report on more compile time options. And
to only output configuration options passed in to SQLite, not the default
values of #define symbols set automatically. Also generate the large array in
ctime.c using new script tool/mkctime.tcl, instead of entering it manually.

FossilOrigin-Name: 9a443397a6b110f60cae32e1f758914d72931e16ddb423e4d4a119df526bf340
2017-06-17 17:55:33 +00:00
dan 814aad618c Ensure that the value of the THREADSAFE symbol is always included when
reporting compile time options, even if it was not explicitly configured.

FossilOrigin-Name: 95141c642697dc037e57f9e4992ff3460155995d3caef6259235601ee722cb93
2017-06-17 17:29:24 +00:00
dan f417f28bd7 Add extra test cases for sqlite3changeset_apply() and ALTER TABLE ADD COLUMN.
FossilOrigin-Name: 603838fc9a65adda831a6a17b31b2e80f5b56e5946a9f0c1fa2c83d2f2a67f6a
2017-06-17 16:39:10 +00:00
dan da1f49b83f Rework the code in ctime.c a bit to report on more compile time options. And
to only output configuration options passed in to SQLite, not the default
values of #define symbols set automatically. Also generate the large array in
ctime.c using new script tool/mkctime.tcl, instead of entering it manually.

FossilOrigin-Name: bc1951d699e6eeacbe15776a37cd0f5cf3f09eb85d3ae01cff43293cb286fcd7
2017-06-16 19:51:47 +00:00
drh ba87c6c2cd Minor refactoring change to clarify how ATTACH works. No functional changes.
FossilOrigin-Name: 3944a32e1dd90ff903bcbaaa7cb497cebcfcb2ba2a326726ec2268505e524ae3
2017-06-16 18:31:30 +00:00
drh 76cf858d3d Prevent pagesize changes on VACUUM in encrypted databases even when running
the VACUUM on an attached database.

FossilOrigin-Name: 11693849342a308ad929e2d9ead67faabacb523af76128c6973ed6cc8b62c11e
2017-06-16 13:43:37 +00:00
drh 0942559a14 Move the "shell_add_schema()" SQL function used by the ".schema" command
of the command-line shell to a different spot in the shell.c source file
so that it is not in the middle of an unrelated module.

FossilOrigin-Name: 254617a1ccfa1736d4e53d670d80319c79c4d93ebf1de69d89ebdba3949bc270
2017-06-15 16:56:05 +00:00
drh f217f3b68c Fix typo and improve the wording of the description of "Metadata" in the
output of the sqlite3_analyzer tool.

FossilOrigin-Name: ca1ff70780e07e5ee930fe7972db02e887d9b085d8ab78e878d7f966b6d684d4
2017-06-15 16:45:23 +00:00
drh b74013300c Merge the latest changes from trunk.
FossilOrigin-Name: 60105c2253d0b617037e975b0d0b729bcb59b950aa2c33d8891394ad45aabb69
2017-06-15 15:06:26 +00:00
drh 90cdec0672 Fix harmless compiler warnings in the shell.c file
FossilOrigin-Name: 9afd7a2ffd3a39456190ad05e85ff6485298aae262d9e0698a58c1d73507a36f
2017-06-15 13:07:56 +00:00
drh 594ccd09b1 Improvements to the ".tables" command in the command-line shell so that
it shows the name of all schemas if the name is anything other than "main".

FossilOrigin-Name: c7f778b7cee16a1dcebccd256408ee1d08ef2b62e388a9ebba5738a0a89bf3a0
2017-06-15 12:50:47 +00:00
drh 20c9c3f4eb In the command-line shell, enhance the ".schema" command show that it
shows the schema for ATTACH-ed databases in addition to "main".

FossilOrigin-Name: 48e086284a76da10a85315bc992e2294bd4711e35ec5a5abaa16e39a6a69d206
2017-06-15 12:21:09 +00:00
drh c74d962a1f Enhance the sqlite3_analyzer.exe utility so that it computes and shows the
number of bytes of metadata on btree pages and per table and index entry.

FossilOrigin-Name: 43ad41efa9e1fdd79a9804197a227491236495f14ed56c656224d6ce181703c1
2017-06-15 00:52:03 +00:00
dan 2ebf8f474e Fix sqlite3rbu_close() so that the pzErrmsg parameter may be passed NULL.
FossilOrigin-Name: c433672dd8ab625628bde2f4f40a2dc000ed915dbe91833d3f753d8ab51baf25
2017-06-13 16:52:34 +00:00
drh 6e3bccd5c9 Fix the processing of double-negatives in WHERE clause constraints with
STAT4.  Ticket [cfa2c908f2182]

FossilOrigin-Name: 35b34bdf0843b49be39e13ed212e918c2d45afdb8374b5cd02ba6d2d5b16b3b9
2017-06-13 04:31:54 +00:00
drh 56790ea567 Fix an off-by-one error that messes up the display of loop codes in the
".wheretrace" debugging output for queries with more than 62 candidate
loops when SQLITE_ENABLE_WHERETRACE is on.

FossilOrigin-Name: 0bbdaf2801e4102d952db65e53962e534b67b8b72e76fadb4ce404a6249129d9
2017-06-11 20:17:02 +00:00
drh eafc6dfe2b When reusing a materialized view, make sure the estimated number of
output rows is correctly initialized to avoid confusing the query planner.

FossilOrigin-Name: 87aceb417a813a2925b636cffa660fe25f3b7e3b3c84bb2108951bf0af644376
2017-06-11 19:51:36 +00:00
drh e46c63d565 Fix the sessiondiff test module so that it does not run if the session
extension is not enabled.

FossilOrigin-Name: 8f92b7a6223a69304dc8a6ab3b43a49cbb87f572a1e65d8a0c6dc09fca38e1a8
2017-06-11 19:40:34 +00:00
drh c62aab5ba8 Fix a potential null-pointer deference following OOM introduced by
check-in [e39795d7] (unreleased).

FossilOrigin-Name: a2f77285fa44df86863eed576271f1030ec60f15480daf175908c5082c27774b
2017-06-11 18:26:15 +00:00
drh e9acf4b48e Merge enhancements and fixes from trunk.
FossilOrigin-Name: 3fd050c343256c0748256ef183b46df04d9e0da0f81b841dbd336034402b36ab
2017-06-09 15:14:41 +00:00
drh c097b309aa Update the documentation to make it clear that the table name parameter
to sqlite3_table_column_metadata() may not be NULL.

FossilOrigin-Name: 2881ab1ed24ed72760086785bdf224c4e687cf39a02fd349ae13c6e1235e24da
2017-06-09 11:43:53 +00:00
drh c5d353fb33 Adjust the implementation of the ".selftest" feature of the shell to avoid
using the deprecated sqlite3_get_table() interface.

FossilOrigin-Name: 3168e2c92ad0a0dafc78a27ee1d87ac89f426585f506f418a0182141335dc68b
2017-06-09 02:27:49 +00:00
drh d96cc6fbcb Add a testcase() to confirm that an OOM on sqlite3DbStrNDup() is handled
correctly in trigger.c.

FossilOrigin-Name: 343e55992f503efa662e49bb0f3c0d798defd0a11f2ee1c36968902fa7e06823
2017-06-08 14:35:21 +00:00
dan ca66f6c6f4 Ensure pointer map entries are always added when a row that does use overflow
pages replaces one that does not in an auto-vacuum database. Fix for
[fda22108].

FossilOrigin-Name: b30dfba811cb531b09ff2e71a1a18ed53c816cb39155dd52ca3e2701425fe17b
2017-06-08 11:14:08 +00:00
drh cc97ca4c08 In SQLITE_DEBUG mode, attempt to log the page number of the database that
contained the problem when SQLITE_CORRUPT errors are seen.

FossilOrigin-Name: e39795d7d798d5249c7bd2a0f6ff891b455f4300a3d638c39a4668323b367666
2017-06-07 22:32:59 +00:00
dan 41ac439dbe Fix another lsmtest build problem. Add the "-trans BOOLEAN" option to "lsmtest
speed2".

FossilOrigin-Name: 61853bc171e7c3af1db6a33ac8b1ad21e1c08e8d6b317fe061fdcd89c9a42e88
2017-06-07 19:46:18 +00:00
drh 0282c03abc Merge in trunk enhancements.
FossilOrigin-Name: f8bbb608cbf6c245628e3d362e9181fb3dc402b1d8241bcb687caf395f63c916
2017-06-07 16:25:25 +00:00
drh d1417ee1cb Add the SQLITE_DEFAULT_ROWEST compile-time option for changing the estimated
number of rows in tables that lack sqlite_stat1 entries.

FossilOrigin-Name: 234ede26e30f20e6c33002739ed8be35dbfb5c77700bd857ff31072b9b7df347
2017-06-06 18:20:43 +00:00
dan 3b328522f4 Fix a threading problem in lsm test code.
FossilOrigin-Name: 501238b9fbb4eece084b4bfce84a5f37a986f34db8081df517e60ef81f357454
2017-06-06 16:14:49 +00:00
drh cf1393df94 Fix a subtle bug in the remember UDF of the kvtest.exe utility program.
FossilOrigin-Name: 9eea3670e77e2f831b7c00ae2d65a5583f9cad626d9ab286f92582ef29ecd4e3
2017-06-05 19:20:35 +00:00
dan b1d66c5986 Fix a bug in test_fs.c that occurs when the first component of a path contains
a GLOB or LIKE escape character.

FossilOrigin-Name: 73c70590d7689806901378cd2a7e167ec4339f886031369266e07868acd23b93
2017-06-05 16:33:53 +00:00
drh a4327e65bb For the kvtest utility, add the --vacuum option to "kvtest stat" and also
run PRAGMA integrity_check with "kvtest stat".

FossilOrigin-Name: f3c25df4562efda2adeb211a4cc893246354917849a0fa4d95da3d7970e9588e
2017-06-05 13:28:17 +00:00
drh 64bf76d2b2 Fix the column width deduction logic in the command-line shell to account
for multi-byte utf8 characters.

FossilOrigin-Name: ed0842c156ab1a78d5d00d3a55dab5e3f08cd349328d606724688f1528df3f6b
2017-06-05 12:29:26 +00:00
drh 3b77506ba5 Omit some of the fstree tests in vtabH if the PWD contains LIKE wildcards.
FossilOrigin-Name: ead29f9cb757a5f9921086e3bb4998f60e0d6cfcf41ef0f9a230b365b6226947
2017-06-05 10:31:03 +00:00
drh 4c88348729 Initialize a variable to zero to prevent an (incorrect) compiler warning of
it potentially being uninitialized.

FossilOrigin-Name: 65182ce041b30cd0193b958eca975b720fe5200a868baba1e633e49433d86813
2017-06-03 20:09:37 +00:00
drh 5930f663a1 Fix the SQLITE_PTR_TO_INT macro so that works on recent versions of LLVM on
Macs.

FossilOrigin-Name: c4089ffbdb4b3467648c97044b0d3085da7128103079b686f608efde83c7df30
2017-06-03 19:16:29 +00:00
drh 629a75f69a Remove unused header file from kvtest.
FossilOrigin-Name: dd7e043f7c9e16cd98a273b7105fa74bdd14a93db8cd5bde064cc1c40591155c
2017-06-03 18:27:49 +00:00
drh 1346fdad65 In kvtest, add the ability to work with a hierarchy of files on disk,
in addition to having all files in the same directory.

FossilOrigin-Name: f568f666c85ab9b80592927dc033cfd65bd4415576cf5b3beaf300d68a8e074e
2017-06-03 17:24:04 +00:00
drh 16d62901a3 Add the --nocheckpoint and --multitrans options to kvtest.
FossilOrigin-Name: 5828633c2392274b6863b50eaffbb2a176a4d892e83542824a9a3f0d1b62c967
2017-06-03 15:17:21 +00:00
drh 59ce97a013 Merge all recent trunk enhancements.
FossilOrigin-Name: 1d23294d88b1a80fe1f5403ea4fd75e61bb4932d5b714ea450d1b4b84f0896ab
2017-06-02 23:44:38 +00:00
drh f151890791 Add the --fsync flag to kvtest, and document the --nosync flag.
FossilOrigin-Name: 7fdc78a672b2ea6187dcb5fdf32f809bb8e4d501e2434f2233edc3bc2e3acc7c
2017-06-02 23:32:17 +00:00
drh a2e71ced79 Work toward enhancing kvtest to measure write performance.
FossilOrigin-Name: fc73e7d2f16386f96c55c42f9830193f7c178521a7ad90c3117b85ef629b5ce4
2017-06-02 19:31:46 +00:00
drh 170ad68a40 Change the name of the OP_Seek opcode into OP_DeferredSeek for better
clarity of function.  No functional code changes.

FossilOrigin-Name: ab33d299c7dab52703d06f3441c8a98c6c809b2612ec65d71aab2919bd2b1540
2017-06-02 15:44:22 +00:00
drh 6c2d94f928 Fix a typo in the header comment of the "series.c" virtual table extension.
FossilOrigin-Name: d637feb4e3032ee0067c204b56d2af5f7eab228e645f2e77b0b043c2b299724d
2017-06-02 13:16:54 +00:00
dan 38d6985509 Add test code for LSM to the ext/lsm1/lsm-test directory.
FossilOrigin-Name: bb7436e84a315baf05f00e6cab396017e3f287ea404d32e0cc4f389fa1194dec
2017-06-01 16:13:57 +00:00
drh c5e56b3473 Add a comment to the Lemon documentation regarding the security of the
lemon.exe command-line tool.

FossilOrigin-Name: 4c2458c1908181dc2f6bc594395c06d015fcbd78f5d3472f07a6a3909be9673c
2017-06-01 01:53:19 +00:00
drh 2c2f392dca Add interfaces sqlite3_prepare_v3() and sqlite3_prepare16_v3() with the
extra prepFlags argument.  Add the SQLITE_PREPARE_PERSISTENT option as one
bit in that argument.

FossilOrigin-Name: 4a25c5883380fe5990d8180adb58c3bdc7a3d081bc4c69cd4de3cd57074fb251
2017-06-01 00:54:35 +00:00
drh cdbb126be7 Add the SQLITE_STMTSTATUS_MEMUSED opcode to sqlite3_stmt_status()
for finding the heap memory usage by a single prepared statement.

FossilOrigin-Name: c26cf978eead1c9d265eddabaa421e7735b472fcf2792cd2bdeb0901bcf3fb44
2017-05-31 17:30:08 +00:00
drh 3528f6b62b Add the SQLITE_STMTSTATUS_MEMUSED option for sqlite3_stmt_status() that reports
the amount of heap memory used for a single prepared statement.

FossilOrigin-Name: b57d510465458dec5b5fc778fd6e8833392964201f9febebf526e60a543da0c2
2017-05-31 16:21:54 +00:00
drh 6b37e0adc9 Add the experimental "stmts" virtual table for introspection of prepared
statements.

FossilOrigin-Name: cb4c5c66aba757356da3b8ec3c66a5c8c40e180b3360638ac634f7787404a5b1
2017-05-31 16:09:04 +00:00
drh d4ab003d4e Avoid allocating excess memory to the KeyInfo objects.
FossilOrigin-Name: df7859435161f3ecf36635ce574bf73573516a1f2c6e75be320619364e7067d1
2017-05-31 13:45:59 +00:00
drh d5bdd5effb Remove a completely unnecessary memset() from the INSERT code generator.
FossilOrigin-Name: 7d58836b9db1293a3a6581af4358b7c91a588efd5c9b2df384803f3855ff87a8
2017-05-31 13:27:15 +00:00
drh b8a1290a28 Very small performance increase in sqlite3VdbeSetNumCols().
FossilOrigin-Name: 8885b4461044ae8ecdfe1b9aa47f4aad65efabc98e3fcd9e307a06504fab34c6
2017-05-31 11:24:13 +00:00
drh 02f18cc5ac Reorder fields in the PgHdr object for a performance increase.
FossilOrigin-Name: 326e63d71e0e164c5bcd1f74772cb4071b82daf6f04a5d440b985bace5a4c941
2017-05-31 03:20:39 +00:00
drh a8b9793c86 Avoid unnecessary memory zeroing during expression list allocation.
FossilOrigin-Name: de28e6514a42438411e2c9d833ba660108128ca86d0b90f32925fb73195f4862
2017-05-31 02:58:30 +00:00
drh d03257c141 Size and performance optimizations to sqlite3ResolveExprNames().
FossilOrigin-Name: af8c0fed93c830c50641d95691bb507c31947a15529aba2a88bfaa66b3a3287a
2017-05-31 00:49:40 +00:00
drh 2ab792e4c0 Change sqlite3BtreeNext() and sqlite3BtreePrevious() so that they return
SQLITE_DONE if they have already reached the end (or beginning) of the table.
This gives a performance increase and size reduction.

FossilOrigin-Name: e972a3860892022d57b26ec44ce0fbadc61c1ff54b7a10b7e82390db88d323a7
2017-05-30 18:34:07 +00:00
dan d26d2c7de2 Omit a test of codepoint 0x202F (non-break narrow space) from the fts3 ICU
tests. Different versions of ICU apparently handle this obscure codepoint
slightly differently.

FossilOrigin-Name: 69ae688982d6cb9f859f5643c315a1dc5ba76ad35553ecea8329a75ee70a87b1
2017-05-30 18:14:47 +00:00
drh e70d01f143 More efficient error handling and reset in the binding mechanism.
FossilOrigin-Name: 9a3e3b34ba6eafce2f560c13225a3673e18d696b29295b59d958e938fa593baf
2017-05-29 22:44:18 +00:00
drh 1e669f02bc Omit unnecessary fstat() calls for determining the database file size,
resulting in smaller and faster code.

FossilOrigin-Name: dd61c736775c53450821327495276485dced7935d0b4b5ebd17662731afc8adb
2017-05-29 17:59:29 +00:00
drh 8c9ed054b3 Fix an issue with OPT_FEATURE_FLAGS in configure.ac.
FossilOrigin-Name: 43ce3bd3a4b41ea757e308e563d6c1bf7f9c09f10e4766c536d0bf1042c45613
2017-05-29 17:43:06 +00:00
drh 77f6af2b96 Avoid unnecessary fstat() calls to determine the database size when
transitioning into a read transaction on a rollback-mode database.

FossilOrigin-Name: 6c3476b513965df22d648f9a1b99733af753b44d51163cc7d42a69bf562300e1
2017-05-29 16:45:45 +00:00
drh 5f5a2d1c3c Avoid unnecessary calls to fstat() to determine the database file size.
FossilOrigin-Name: c733a1dea37e4678e7bd0d3d0ca9b8eae1fbdc28615f75d8f1e5141aa53567d9
2017-05-29 14:57:23 +00:00
drh 8abc54e2e8 Fix a typo in a comment. No code changes.
FossilOrigin-Name: cb29b838886769afe866b1172e3d5d7e36387149b79c51f91cf59da3f4a5f25b
2017-05-29 14:30:46 +00:00
drh 979dd1be57 Optimizations to the Walker object and its methods to make the code a little
smaller and to help it run a little faster.

FossilOrigin-Name: 6854a34ed708259f2280f7ee56cec09f7fc99810dc739dc2814ddeae286aa2c4
2017-05-29 14:26:07 +00:00
drh d8a295669c Correctly initialize the iSelectId of FROM clause terms that are a self
join of a reused materialized subquery.  Without this, the EXPLAIN QUERY PLAN
output for the query will identify the subquery using the uninitialized
(and arbitrary) iSelectId.

FossilOrigin-Name: 43c9ae371f6250fee98a7c4011726eff8ad37f5a97add4f490ac3a2dd501a0d2
2017-05-29 13:09:24 +00:00
mistachkin e16a350f17 Improve shell help text for the '.open' command.
FossilOrigin-Name: 7cc940a97efc096ff3725710f526c06f52453bd923fb9e825ce6990275df747a
2017-05-29 03:48:13 +00:00
drh ae2ac854b3 Smaller and faster vdbeSorterCompareText().
FossilOrigin-Name: 542dc4c5eb87017fe03b6c181e779993aa84564785e1177ccf937d52f985593b
2017-05-27 22:42:36 +00:00
drh 14e845a9d4 Small performance increase and size decrease in the btreeInitPage() routine.
FossilOrigin-Name: 6f415833e0554706dcf04f68ecba4ca2e54c08f3bbf6a1dba182bb132c912a2e
2017-05-25 21:35:56 +00:00
drh 137c46f8b6 Merge the LEFT JOIN query flattener fixes from 3.19.2.
FossilOrigin-Name: 6513e4a121e32df7e5cd95f47cdf8049b85bdbcb378cf23db29838fb1143d3ce
2017-05-25 17:27:52 +00:00
drh 65ff63ea62 Version 3.19.2
FossilOrigin-Name: edb4e819b0c058c7d74d27ebd14cc5ceb2bad6a6144a486a970182b7afe3f8b9
2017-05-25 16:50:27 +00:00
drh dc6de47925 The SQLITE_EXTRA_IFNULLROW compile-time option causes OP_IfNullRow opcodes
to be issued for references to the right-hand side table of *any* flattened
join, not just LEFT JOINs.  This puts extra stress on the OP_IfNUllRow opcodes
for testing purposes.

FossilOrigin-Name: 1a074c8a2bc0b28918ef905339d11a21d30101b4ea8c06c8b3faca7d17237538
2017-05-25 11:39:50 +00:00
drh 074ce1e7fd The TK_IF_NULL_ROW expression node must be treated as a variable that
references the table Expr.iTable.
Proposed fix for ticket [7fde638e94287d2c].

FossilOrigin-Name: b30a364a12d9865242b1444984cd25ee126dc69108d5c6a2d4b35df184437fe9
2017-05-25 00:28:36 +00:00
drh 8389bff0a8 Increase the version number to 3.19.2 since ticket [7fde638e94287d2] is
going to necessitate another patch release.

FossilOrigin-Name: c315727acd5fffe6e83ad9a5e84360d5cfa9aa8faa10d4970ea9823c7e8126ee
2017-05-25 00:12:04 +00:00
drh f43ce0b445 The TK_IF_NULL_ROW expression node must be treated as a variable that
references the table Expr.iTable.
Proposed fix for ticket [7fde638e94287d2c].

FossilOrigin-Name: 77fc23013cebc7797985864b91d78db5d0e2469511732044ebfaf02b891c979a
2017-05-25 00:08:48 +00:00
mistachkin 831265f962 Fix harmless compiler warnings in FTS5.
FossilOrigin-Name: 57a60e959c198b87ed29fab14356f89e0ea7cdb1dd99adbea45b40e8d0cb310a
2017-05-24 15:32:44 +00:00
drh 6fb139e087 Version 3.19.1
FossilOrigin-Name: f6d7b988f40217821a382bc298180e9e6794f3ed79a83c6ef5cae048989b3f86
2017-05-24 13:08:33 +00:00
drh 63ad86e70e Fix a problem in STAT4 equality estimation for multi-column indexes
introduced by check-in [3e0590dee0e68cc1599].

FossilOrigin-Name: cfb0d9e0207128b1c2b48689288a849b19dbc00a22cfaca26eec4bfc773629f8
2017-05-24 04:18:00 +00:00
drh ce13b99f99 Remove the msvc.h header file from the autoconf tarball.
FossilOrigin-Name: 84996aef68adeabc8bd97cad269188c67de628f776337a25ec2d63bc956cee78
2017-05-23 20:00:00 +00:00
drh 92b71757f7 Do not use strcpy() in the (obsolete) amatch extension.
In releasetest.tcl, run Apple tests using -Os instead of -O1

FossilOrigin-Name: 4440e42031b9cb0edf9a8621cd4f46f209392940ec5b9eefcf8c1e3fef5f7b76
2017-05-23 19:35:20 +00:00
drh 3c790f2a83 Disable the LEFT JOIN flattening optimization for aggregate queries, as it
does not currently work.  Further fix for ticket [cad1ab4cb7b0fc344].

FossilOrigin-Name: 05ada741554b9fd00befcf7b4083637f53de68699ae5210ac18e0773ad1a9910
2017-05-23 15:33:41 +00:00
drh 1d1fc5e385 Disable the LEFT JOIN flattening optimization for aggregate queries, as it
does not currently work.  Further fix for ticket [cad1ab4cb7b0fc344].

FossilOrigin-Name: 44b21e35c92137cc519d0cc87c627cc531d0bd442a7b9a7356fa2c6bc5f70fb6
2017-05-23 15:21:37 +00:00
drh 7c1544e051 Ensure that the expression rewriter inside the query flattener decends into
the substructure of the TK_IF_NULL_ROW operator.  This is a continuation
of the fix for ticket [cad1ab4cb7b0fc344].

FossilOrigin-Name: 28d2902d8f4dfbbfc610f271e00d353b0baae386b56b482f96b88836410be129
2017-05-23 12:44:57 +00:00
drh eff0a7b25e Ensure that the expression rewriter inside the query flattener decends into
the substructure of the TK_IF_NULL_ROW operator.  This is a continuation
of the fix for ticket [cad1ab4cb7b0fc344].

FossilOrigin-Name: 941d8142b7c9a96ff143d1add3c86cf42d61fd08e532d400dac555f23eadbcfb
2017-05-23 12:36:13 +00:00
drh f352cf57e3 Change the version number to 3.19.1.
FossilOrigin-Name: 16656b8ff5cf79565b0b30f804f5f924fabfe989fdf00a2e7c30fe4438143981
2017-05-23 01:35:22 +00:00
drh 44bdc92938 Remove a surplus semicolon, which was harmless on gcc and clang but caused
compile-time errors on msvc.  This only comes up using the encryption extension.

FossilOrigin-Name: 4510d55d1e2e23d4a4470dbd414161beec2ceefb7537fd66ea3c347e11624dfc
2017-05-23 01:30:26 +00:00
drh 10d33c1781 When flattening a query, make sure iTable attribute of TK_IF_NULL_ROW
operators (that result from a prior flattening of a LEFT JOIN) are updated
correctly.  Fix for ticket [cad1ab4cb7b0fc344].

FossilOrigin-Name: 919d36e6ea112c8c94f01e02611c48e78c441657e6898a466cfc39f1e0001403
2017-05-23 01:29:35 +00:00
drh 3f1e9e00e6 When flattening a query, make sure iTable attribute of TK_IF_NULL_ROW
operators (that result from a prior flattening of a LEFT JOIN) are updated
correctly.  Fix for ticket [cad1ab4cb7b0fc344].

FossilOrigin-Name: 92c178507df553e4f1110342c8f9b11b3ee37989e1d634fcaccabf657befa22f
2017-05-23 01:21:07 +00:00
drh d4fb196531 Remove a surplus semicolon, which was harmless on gcc and clang but caused
compile-time errors on msvc.  This only comes up using the encryption extension.

FossilOrigin-Name: 987a2b5537254b1fe843eb798d7eb7f04dbe1e32fb827cfb9e1e1ef6c2096759
2017-05-23 00:32:56 +00:00
dan 07d0f15e93 Fix incompatibilities between the "sqldiff --changeset" command and the
sessions module. Specifically, allow sessions to process changesets containing
tables with zero operations on them and have sqldiff output the expected
output for tables with multi-column primary keys.

FossilOrigin-Name: 0bb23c48064cc64134697469f3f4d2d3610b9e6c7a0dc54a3c47a00bd6c2a860
2017-05-22 18:09:00 +00:00
drh 453ca043a2 Add the ".cd" command to the command-line shell.
FossilOrigin-Name: 5fe28e15b1d6d8a588fcaf93c6035c0e0ab7bcad1067c7933cd430d2e04bbbd8
2017-05-22 18:00:34 +00:00
drh ee841262d9 Increase the version number to 3.20 for the next release cycle.
FossilOrigin-Name: ab471f61ef7d9ed1bf937d5e458f720d12209712a015786434edc818a98168c9
2017-05-22 17:39:37 +00:00
drh d758722449 Merge the last-minute 3.19.0 changes into trunk.
FossilOrigin-Name: e6ba2a93a8d28074ff134dd43c142315de291b7c0a38ecc692863c33975c71c7
2017-05-22 14:04:46 +00:00
drh 2435fa6916 Version 3.19.0
FossilOrigin-Name: 28a94eb282822cad1d1420f2dad6bf65e4b8b9062eda4a0b9ee8270b2c608e40
2017-05-22 13:58:13 +00:00
drh 44ec1d6eda Include the "msvc.h" header file in the amalgamation tarball.
FossilOrigin-Name: 3dd6fe53c7ae6ebe2393e956d040e00b8cd0589674d20aafe1585aaa61325bbe
2017-05-22 13:06:45 +00:00
dan 21766c0c16 Fix a case where NULL was being passed to memcmp() following an OOM. This is
probably not a real problem, as the number-of-bytes parameter was passed 0 in
this case, but it was causing a santizer complaint.

FossilOrigin-Name: 3ea2bad27e516d5dbfa4a9cb0c767d6a8387280a7e4bbf2ae80cd318da670d66
2017-05-22 08:04:09 +00:00
drh 78436d4c66 When planning a query using sorting, resolve ties in the solver by selecting
loop plans with the smaller unsorted cost.

FossilOrigin-Name: f261678c90297f9767040c577796cc1d4db598aa44b0de6906cb73eaef377dee
2017-05-22 00:45:15 +00:00
drh d8025e43ae Prevent a possible NULL pointer dereference in the OP_Found opcode that
can follow an OOM error.  Problem found by OSS-Fuzz.

FossilOrigin-Name: 50ad60ded54aa22dfdf519ed5da6451de790e22a972ff299f7976fbdce7a0579
2017-05-19 23:04:04 +00:00
drh e46515b53f Prevent a possible NULL pointer dereference in the OP_Found opcode that
can follow an OOM error.  Problem found by OSS-Fuzz.

FossilOrigin-Name: c2de178fe7e2e4e0d764e7e6ac637cfc8c053580c43f7246318dafad2974de3c
2017-05-19 22:51:00 +00:00
drh bcbb066534 Improved comments on one routine in the query planner. Improved diagnostic
output for ".wheretrace".  No production code changes.

FossilOrigin-Name: 946b87a5282f00d8c532a51f4390e6de781b9a0d6626cb3c077c5622895dc540
2017-05-19 20:55:04 +00:00
drh 748465b49e Fix a documentation typo. No changes to code.
FossilOrigin-Name: 68942a4feeb83e6e1a32d9bd724ae1d72669949adcfad07fb05b0ac48daf5151
2017-05-19 20:47:54 +00:00
drh 8c3bde05ce Branch for the 3.19 release.
FossilOrigin-Name: f2b829ec52c2037eba4feb9427c56d84aca736cb5fc841dfe91cfff22cf660c1
2017-05-19 20:46:27 +00:00
dan 22025ef198 Fix some problems in fts5 code detected by -fsanitize=undefined.
FossilOrigin-Name: 35f721045dfe3f82e016938ab1a668bfc37b6b57b8813cc963ef640ec82de58d
2017-05-19 12:32:32 +00:00
drh 1e1c4226ee Fix a documentation typo. No changes to code.
FossilOrigin-Name: cfa4aa203646f44b303138c25672293bb87d97126fe2030d4709e8ad7814a807
2017-05-18 18:17:55 +00:00
dan 9ea258d712 Update the tool/warnings.sh script to automatically use the right options on OpenBSD..
FossilOrigin-Name: 7940bff32aa6ea868a53680822d148b7ec7a075c01ae9e0d5ad9859bcc339054
2017-05-16 09:49:42 +00:00
drh dd1bb43ab5 Fix the build so that it works again with SQLITE_OMIT_SUBQUERY.
FossilOrigin-Name: bb0d9281588b8cc24bf2f1f10d0c56277004226adaa2ce5037782503b283b45d
2017-05-15 15:12:24 +00:00
drh 96a27f4cbb Improvements to the omittest.tcl script.
FossilOrigin-Name: 0f05d7e93a73bbeac0a09bbd614287507355a7d75fc7b98729bcf7607fc8e125
2017-05-15 15:05:48 +00:00
mistachkin c8d3e836ca Make sure the 'sqlite3changegroup_*' functions are included in the SQLITE_APICALL handling.
FossilOrigin-Name: a123cb93307a6c48bd711d6af9828c87a1365e023f6fe4ca6eae264c8ec5e0c0
2017-05-12 14:05:11 +00:00
dan ee3333b202 Add another test case for the new authorizer functionality.
FossilOrigin-Name: 339df63f4064f3b9c8d4e8b82e72d00b49d9406bc350b14809a4caf7ddc4b736
2017-05-11 19:09:19 +00:00
drh 9715f0e544 Enhance the json_extract() function to reuse parses of the same JSON when
the function appears multiple times in the same query.

FossilOrigin-Name: 3ba9e7ab79e32090a71c7aa152da9bd5951940ae5e2cf433bceadeb6bfca193f
2017-05-11 18:42:19 +00:00
dan 6b4fbabd6a Do not save the state of an fts5 merge operation mid-way through an input
term, even if no previous entry for that term has caused any output. Doing so
may corrupt the FTS index.

FossilOrigin-Name: 9a2de4f05fabf7e725666fb8824ae1adad56834d7ae4f2e118375bb6f9c0ae77
2017-05-11 18:14:06 +00:00
drh 3fb153cb29 Cache the JSON parse used by json_extract().
FossilOrigin-Name: 44ca6c2c4639f3c50ae9233ee299ff0fc4566462c31f28d8676f8de7ffdcd7f0
2017-05-11 16:49:59 +00:00
drh f7fa4e71f4 Negative N values in sqlite3_get_auxdata() and sqlite3_set_auxdata() can be
used to access an auxiliary data cache over all functions in a single prepared 
statement.

FossilOrigin-Name: ff5306752e83e760255a10f20168c0f090929a4fee2a5f720dfab36f0ee72fae
2017-05-11 15:20:18 +00:00
drh 9418921c59 New requirements marks and documentation for the authorizer.
FossilOrigin-Name: 3980ea0911b3ad3f86d7a7bdc6503f233315c274f473e18831e13eda2c238eeb
2017-05-11 13:43:57 +00:00
drh ee92eb80db Improvements to the sqlite3_set_authorizer() documentation.
FossilOrigin-Name: 47629b1911e52445aad8ea969137bddf0019c55b4a4f0de8e77decb6a434c8a2
2017-05-11 12:27:21 +00:00
drh 2336c935af Change the SQLITE_READ authorization call for unreferenced tables to use
an empty string for the column name, as this is less likely to impact legacy
authorization callbacks that assume column names are always non-NULL.

FossilOrigin-Name: 4139953ab528f20fa346409810edcb22adb6c1edc9d22f40b1b077ef842a2441
2017-05-11 12:05:23 +00:00
drh e694139788 Rename fields of the internal AuxData object to make them unique and easier
to search for.

FossilOrigin-Name: 2be9850cef6492e168243807c34af72119ffbe414027a12c4eda6c421b5b950d
2017-05-10 19:42:52 +00:00
drh 0d236a8bb0 Improved documentation for the SQLITE_READ authorizer callback. No code changes.
FossilOrigin-Name: 92c5ea7047323d10f762877c5f56d20a3e609e8b55efcfe4880ef3048821ac1f
2017-05-10 16:33:48 +00:00
drh 701caf1eb1 Invoke the SQLITE_READ authorizer callback with a NULL column name for any
table referenced by a query but from when no columns are extracted.

FossilOrigin-Name: 92ab1f7257d2866c69eaaf4cf85990677b911ef425e9c5a36a96978cccfb551c
2017-05-10 16:12:00 +00:00
dan 7b458519f2 Fix a couple of test scripts so that they work with
-DSQLITE_DISABLE_FTS4_DEFERRED builds.

FossilOrigin-Name: 30018d31068f3182d713a6cf09753b27b16a6f912d39a5e6c1363da83bec3125
2017-05-10 13:36:04 +00:00
drh e4eb0497d8 Avoid unnecessary codec operations on in-memory subjournals.
FossilOrigin-Name: 199b2a84992823b4687588a5ba20bec9c42579887068ac21caf08df3895f41ed
2017-05-10 12:58:34 +00:00
drh 614c6a09f7 Do not invoke codec macros for in-memory subjournals.
FossilOrigin-Name: d2bb0066f7c8413ef9992e6b07641cdf40ad260778074bd83cc22dcaba87860b
2017-05-10 12:49:50 +00:00
dan 2617c9bdd8 Do not invoke codec macros when reading or writing an in-memory sub-journal.
FossilOrigin-Name: 2c145ee6c9e7916f022331453384cbe61ee3654c08a1b88467f85235b5bc18c4
2017-05-08 18:29:36 +00:00
drh ffe280596e Fix an obscure assertion fault that can follow an OOM. The problem
was introduced by check-in [a1cf44763277b6c7].

FossilOrigin-Name: 04e7e5650efffdce759b46999beb67c250af6cf394a7779ab861f210a84c134d
2017-05-06 18:09:36 +00:00
drh f8a2e8c2d2 Fix requirements marks and harmless compiler warnings.
FossilOrigin-Name: 198ff4c01d86d193a54745764d69376cab8e94747a4daa444690f7e1ec87800b
2017-05-06 17:12:52 +00:00
drh 050b124ce2 Fix a collision of the "B0" identifier name between the termios.h header
file and the SHA3 implementation in the shell.

FossilOrigin-Name: b9a58daca80a815e87e541cb5fff9bc8b93f131d223f322c5b83dd5a5f0c0312
2017-05-04 11:13:50 +00:00
drh 30f01249a3 Remove the unused "sqlite3_stack_used" TCL command from the test harness.
FossilOrigin-Name: e24b73820cdca07eee87853fe6dd9f60d76e039eeb4aebef03654db3c7c94f14
2017-05-03 19:36:50 +00:00
drh 313e6fd222 Fix the sqlite3GetInt32() function so that it correctly returns 0 on a
zero-length input string.

FossilOrigin-Name: 05eba9e3a5f9bb2a40af1dacd885e1915fbcd20b9af4cf0eed79ac16dbeba31b
2017-05-03 17:44:28 +00:00
drh ad012d09dc Always enable URI filenames when compiling with SQLITE_HAS_CODEC. Also allow
plaintext keys using the key= query parameter.

FossilOrigin-Name: 31a51b4d168065fa59cc0e52ba798bd87ac82160c675bd531442b65133edb401
2017-05-03 15:54:53 +00:00
drh e780764b4e Fix the fts3EvalAverageDocsize() routine so that it returns errors from
sqlite3_reset() rather than always returning SQLITE_OK.

FossilOrigin-Name: 430f539cbb3f806fb89191e0b759a5f8b49d9e5b6c95fe9a4b55a1aa0875762a
2017-05-02 18:00:31 +00:00
drh 3f4df4c6f3 Reuse the same materialization of a view when that view appears in a query
more than once, such as in a self-join.

FossilOrigin-Name: 9e35c89dbe744312f612e507b51ff9a5bb656def75392d25bc19fc638548cd1e
2017-05-02 17:54:19 +00:00
drh a1f5c0c90b Move terms of the HAVING clause that reference only columns in the GROUP BY
clause over to the WHERE clause, resulting in a faster query plan.

FossilOrigin-Name: 47cbb471d056c8e1834a5ca72491404a3bfb273b5ff7bdd84b98d263938ea874
2017-05-02 16:55:07 +00:00
drh ab314001b8 Additional comments on the sqlite3ExprIsConstantOrGroupBy() routine. No
code changes.

FossilOrigin-Name: 8424492eac506866d2918e5fe03c8f65fef960215d56012a3b52ed42789ed35a
2017-05-02 16:46:41 +00:00
mistachkin 8d5cee166e Fix typo in comment. No changes to code.
FossilOrigin-Name: 6674814afb9e763e7f7060776586e26da28040b3208ce06c8a285dd647e5a53d
2017-05-02 01:30:44 +00:00
drh c478c8daec Remove an unnecessary branch.
FossilOrigin-Name: a33179596f534067a58d68b77160f11ab13272b29f912d7cbe15ea00bbf03ade
2017-05-01 19:53:12 +00:00
dan 4b2667c8b8 Enhance "PRAGMA integrity_check" to detect duplicate rowids within a leaf
page.

FossilOrigin-Name: adcad37b001d255299be716b16003b56ec1fba349ef73261ee0e543186c4f311
2017-05-01 18:24:01 +00:00
dan 874080bbb6 Clear the BTCF_ValidNKey flag set if a cursor is moved by
sqlite3BtreeInsert(). Fix for [f68dc596c4].

FossilOrigin-Name: a6727eef6d757a39ad23e5c8cbe960f5d909e5d37cb4e90bc3bdbb8bf58cd6f8
2017-05-01 18:12:56 +00:00
drh ed71298085 Futher bug fixes to the function that determines when a materialized view
can be reused.

FossilOrigin-Name: c64fe3a1695925693385d313e9ad2a1d8cb37ddaa8cc19920ae0978c91bc4c2c
2017-05-01 17:04:35 +00:00
drh 33543c237b Minor bug fixes and performance enhancement.
FossilOrigin-Name: b2aae559581d05e4e8caaddfbd137cb275d582e82d58872c6f42e462dc859b1c
2017-05-01 16:37:20 +00:00
drh e08e8d6b61 Initial implementation of an optimization that attempts to reuse the same
materialization of a view on a self-join of the view.

FossilOrigin-Name: 478c34b9a8b5127d13024e10307aa832f160b89720c46424dd17555bd36f590d
2017-05-01 15:15:41 +00:00
dan 181a1167dc Add extra tests for the optimization on this branch.
FossilOrigin-Name: 4921cd9520080f9baff70e548f64a56e2204b398b8397a2d318a98c32ec4b00c
2017-05-01 14:09:32 +00:00
dan ab31a8450b Automatically transfer terms from the HAVING clause to the WHERE clause of an
aggregate query in cases where the result of evaluating the term depends only
one one or more of the GROUP BY expressions (and on no other inputs).

FossilOrigin-Name: 5375a3ce56f1d993b13b469fe33ec7679948f53940f62a15ddbaeb8aaa26a22c
2017-04-29 20:53:09 +00:00
drh 7555581fc1 Add a single testcase() macro to the subquery processing logic.
FossilOrigin-Name: 4e1df76e3d85922648e0e1cce73a266c3b1ed4511ace259ec0a01d7693af9e6f
2017-04-29 19:29:49 +00:00
drh bb6783b86f Improvements to opcode documentation in the bytecode engine.
No changes to code.

FossilOrigin-Name: e54c9f8db5b2fa8ea82c6eab7482255431af16901f7992c9667b56a0e50a9f4f
2017-04-29 18:02:49 +00:00
drh bc43995f99 Evaluate WHERE clause terms that reference only the index before evaluating
terms that require the table, and thereby avoid seeking the table row if
index terms are false.
This is called the "push-down" optimization in the MySQL world, we are told.

FossilOrigin-Name: d7bb79ed3a40419d143fbe35c310e51fe7b384a22f082a61ad788671d2d33ee0
2017-04-29 15:27:04 +00:00
drh 6ab3eb5d0e Minor size and performance improvements to the push-down optimization.
FossilOrigin-Name: 91dfb61a1a25763bb0b5c1e353a9d584bc6de3f6eb445f54202ffe7f6fee6e8d
2017-04-29 14:56:55 +00:00
dan 6f654a40e8 Within a loop that uses a non-covering index test, test non-indexed terms that
can be tested without seeking the main table cursor before those that cannot.

FossilOrigin-Name: afe68f0a8060dc5c92cb1fb32a9f22bd36140cd2c0bb5b6cea853e169c5ed444
2017-04-28 19:59:55 +00:00
dan 4b17369579 Add new test file cachespill.test.
FossilOrigin-Name: 2d0b64316d66a362f5891ceb71a1fd8e4607732274b09b0a8472b97eef68ebc2
2017-04-26 17:21:33 +00:00
dan b9e6a73866 Replace <fts5.h> with "fts5.h" in test file fts5_test_tok.c.
FossilOrigin-Name: 63d9ca5c7392e1efe3330689fe750310a952287e843b3242178724e8561fae0e
2017-04-26 14:34:04 +00:00
drh 69bfa55279 Fix a subtle bug in Lemon discovered and reported on the mailing list
by Kelvin Sherlock, who also suggested the correct fix.

FossilOrigin-Name: 304689f8acb53d68e1afed6e6c4332e78132e3d57071b8f94df0d13515b3b3d8
2017-04-26 04:32:17 +00:00
dan a1188d6d93 When building an ephemeral table of integers, do not assume that the table
does not already contain N if the insert cursor points to N-1. Fix for ticket
[61fe9745].

FossilOrigin-Name: 1c1b0862236f564283be08338790d6494e705f1198547a59499e3f8c07f2cd99
2017-04-24 14:16:55 +00:00
drh 0c3233be0b Fix an assertion fault found by OSSFuzz.
FossilOrigin-Name: e39769f442ea86273f8fb7bd2f249b7d760b2fe4bf9ec191ff91def8231f3f35
2017-04-22 00:20:49 +00:00
dan 39c9d3a367 Remove a NEVER macro for a condition that may be true as of [a47efb7c].
Problem reported by OSSFuzz.

FossilOrigin-Name: bdc50d8d127266d02b291f6bfcd4e35eb07994ce23987d6e3921124cd881929a
2017-04-21 17:03:32 +00:00
dan 0619838c55 Fix an FTS5 bug that could cause a prefix-query without a prefix-index on a
database that contains delete-markers to return extra, non-matching, rows.

FossilOrigin-Name: 840042cb2bed2924e2263f21887317f661e5a585c4466c3af25b91ed57a6b49b
2017-04-21 16:04:18 +00:00
dan dc62daca86 Further improvements to coverage of fts3 module.
FossilOrigin-Name: 6b21d0fdebdccfaf63590d9ca9a279c22b8baec07c1a669b9f617f25bd857384
2017-04-19 13:25:45 +00:00
dan a059e99ca8 Further modifications and test cases to improve test coverage of fts3.
FossilOrigin-Name: ea8a0d2ce0cb1ca3f4f18c72fb780d1c26792799acc87e6726f9eaccf2f178bf
2017-04-19 07:33:52 +00:00
dan 0027e98b85 Use sqlite3_table_column_metadata() instead of a SELECT statement to check for
the existence of a %_stat table in fts3. This leads to smaller and easier to
test code.

FossilOrigin-Name: dc2a48020a3c856a8b4cfa2309c290f0508b991e92cc0e4de680d19aae7872fc
2017-04-18 13:50:00 +00:00
drh bff6fe1f40 Improved optimizations of views as the right operand of a LEFT JOIN.
FossilOrigin-Name: 41c27bc0ff1d3135cdb6273ede4595f5bb0c0e1e1d470ea1633cb525674cf431
2017-04-18 11:20:19 +00:00
dan bda00fbdb7 Refactor the fts3ColumnMethod() function so that all branches can be covered.
FossilOrigin-Name: e47fdb493bd76d85f6f05771ee7a0b3ee31b1eb05839a60d2bdb47149ac692d8
2017-04-18 05:49:23 +00:00
drh cfcca02765 Defer checking for null in the comparison operators, since that is an
uncommon case.

FossilOrigin-Name: 5684525613961fed9db6a4d10dbe25521201b24f08e011df3a20ac895316957d
2017-04-17 23:23:17 +00:00
drh e2bc6552fe Do not allow a Mem object to be both NULL and some other type at the same time.
FossilOrigin-Name: e698db1956bb3aba32cd3ec633ec20f5d19b1a10bc68d3772903bca3c87ee158
2017-04-17 20:50:34 +00:00
dan 4bee5599c0 Consolidate two branches of code in the "PRAGMA foreign_key_check"
implementation.

FossilOrigin-Name: 69f51f838abcf57b35e41f7a10fbb45f56536f93825aac865debc3c8315930be
2017-04-17 18:42:33 +00:00
dan 940464b1dc Fix a problem in "PRAGMA foreign_key_check" in handling a WITHOUT ROWID child
table with an INTEGER PRIMARY KEY parent key. Also, if an FK violation is
detected in a WITHOUT ROWID child table, do not try to read and return the
rowid. The third column returned by "PRAGMA foreign_key_check" in this case
(WITHOUT ROWID child table) is now always set to NULL.

FossilOrigin-Name: 690870bd7b2e607b7992c4496c9f08c29eb72a36af002c606fd7aa3dcf94a2a4
2017-04-17 18:02:41 +00:00
dan 624edacf6a Further improvements to test coverage in fts3.
FossilOrigin-Name: 352413eed469802665e7d2c17b7fe6e3a0b0b2209ce45bdc85fd4243cec50ea6
2017-04-17 16:07:25 +00:00
dan ddf4747053 Improve coverage of code in fts3.
FossilOrigin-Name: 1a08a836fa919524216a16faf5212eebc9ad788c9e15463b68b0576dfccd4387
2017-04-17 13:38:09 +00:00
drh 6887e8facd Fix the ".column" output mode in the command-line shell so that it correctly
counts and formats multi-byte UTF characters.

FossilOrigin-Name: f508aff8d1782abdff4d03726ae098607a0ee6cfd2e35b130097ee5043e98960
2017-04-17 13:18:42 +00:00
drh b6d5a43b8a In the showwal command-line tool, for unix builds, if the
auxiliary argument is of
the form "Ntruncate" where "N" is a frame number, then truncate the WAL
file after the N-th frame.

FossilOrigin-Name: 90015df30655d884ecf7ae61e588824696954252dc6b1a5f78cf2de8cb236104
2017-04-16 22:41:49 +00:00
drh b65b3e429a Add the anycollseq.c loadable extension in etc/misc
FossilOrigin-Name: d7b9813cb17615c3d00afd6994a4309d6d48c8e924b6cd813c543e1fa65c7719
2017-04-16 22:08:31 +00:00
drh 147fd88268 In the skip-ahead-distinct optimization, fix a bug in the logic that determines
when to invoke the optimization based on sqlite_stat1 statistics.

FossilOrigin-Name: 89f9e4363aa19f306e55f749c442eae2f8994f6a47c65e645a79b308b450d5e5
2017-04-15 11:53:47 +00:00
drh a2e2d92b21 Fix to the decision logic for when to use the skip-ahead-distinct optimization.
FossilOrigin-Name: e50fd48969f99bc988389c53ff46714603b1d11de12c71b55c00cbee037f073c
2017-04-14 22:41:27 +00:00
drh 06f60d8e87 Remove end-of-line whitespace from lemon.c.
FossilOrigin-Name: d78355c85f49e139f1ac1a660563865350f0e442652b7bc50b684398f81cc602
2017-04-14 19:46:12 +00:00
drh 14d8855b8f Fix some left-over K&amp;R-C constructs in lemon.c. No changes to the core.
FossilOrigin-Name: a53799059d4ece246610b6c877ab7088ded3548cbca7149a03deea8ac0e27e68
2017-04-14 19:44:15 +00:00
drh 31d6fd5507 Add the TK_IF_NULL_ROW opcode to deal with non-NULL result columns in the
result set of a view or subquery on the RHS of a LEFT JOIN that gets flattened.

FossilOrigin-Name: 3a5860d86fadcf924316707918bf283d26c53b1473e5e67f5cff59d18c2a7742
2017-04-14 19:03:10 +00:00
drh 1a17b44231 When doing a DISTINCT query using an index, try to use the index to skip ahead
to the next distinct element, rather than doing a full scan of the index.
(This is the "skip-ahead-distinct" optimization.)

FossilOrigin-Name: f489b5bb6b35665befdd411c2c55df5258e83cba265d8c4427ba22529cf882a4
2017-04-14 17:30:43 +00:00
drh 399c7e21e4 An initial attempt to optimize VIEWs that occur as the right operand of a
LEFT JOIN.  This particular check-in does not work correctly because it does
not deal with the case of columns in the VIEW that return non-NULL even when
all columns in the table of the VIEW are NULL because of the LEFT JOIN.

FossilOrigin-Name: 1838a59c8a1c151bd6fc822b0ffef661803cf0e4704c917e74a04567b81740b9
2017-04-14 17:18:45 +00:00
mistachkin b1ed717f18 Make USE_FULLWARN=1 the default for MSVC and fix harmless compiler warnings.
FossilOrigin-Name: 6bf673767b8e5cedef1acff795cbe524fab8db2525c06424db4e038934a33936
2017-04-14 14:50:34 +00:00
drh d97cda43ab Enhance the sqlite3TreeView() display for Expr objects so that it shows
the iRightJoinTable value for Expr nodes that have the EP_FromJoin property.

FossilOrigin-Name: 5159cb8f2bcfb1f7114786ba23082d2b91a26e3a7ddfae75f8bd362792949d5e
2017-04-14 14:02:14 +00:00
drh 46967de2ec Simplify the interface to the subst() routines that are part of the
query flattener by collecting common parameters into the SubstContext object
and passing around a pointer to that object.

FossilOrigin-Name: e651074be28b2077b8a298f513e2e699ceca99164ace9869ea50873c0637fd2e
2017-04-14 12:39:37 +00:00
drh 7c88bcd473 Remove an incorrect ALWAYS().
FossilOrigin-Name: f956f6ae6b0863c70c4a2b227338d5c332e87f2ec6f3fcdf2233c14c5b78ca2b
2017-04-14 12:27:45 +00:00
drh 571311502d Fix a couple of unreachable branches.
FossilOrigin-Name: 1aa0ea8db7580aff8bed2f78117ed50019e5545cef48cab782f512a2599fd0c5
2017-04-14 00:45:51 +00:00
drh 172806e489 Fix the skip-ahead-distinct optimization so that it works with indexes that
have repeated columns with different collating sequences.

FossilOrigin-Name: ce1e2b88777e00a82c04abe5ba35eec81b5f324e462f099cd00b21054f369688
2017-04-13 21:29:02 +00:00
drh c04ea80f64 Simplification of the skip-ahead-distinct logic. There is still an issue
with handling COLLATE.

FossilOrigin-Name: 57c5173b6376a76013b0611ce9770100bd8c04e80402e35d821d8614709f4795
2017-04-13 19:48:29 +00:00
dan a74f5c2923 New test cases and minor fixes for the optimization on this branch.
FossilOrigin-Name: 70ac9ea1a6cb2f4906f00f1a04f668e5ba5eeed8d4d0fa4be57a9c9eb0683697
2017-04-13 18:33:33 +00:00
dan d0a537100c Reinstate the SQLITE_API qualifier on the sqlite3_delete_database() method in
test_delete.c. Accidentally removed by the previous commit.

FossilOrigin-Name: 59c70108fd179932ccdd860f93e1cd68b77476d3b1af1af00cf6e378c9984862
2017-04-13 15:51:27 +00:00
dan 44ae27ac32 Update the code in test_delete.c to use the "win32" VFS if SQLITE_OS_WIN is
defined.

FossilOrigin-Name: fa9bb7b768027677f7e7d5a196ba5b245dfc8d8986ccd101c8dab671bd15719d
2017-04-13 15:36:47 +00:00
drh 839fa6d814 Only use the skip-ahead-distinct optimization if the index has been analyzed
and we know that a skip-head is likely to skip over at least 11 rows.  The
magic number 11 was determined by experimentation.

FossilOrigin-Name: 0cf16decd534bf2d66620c293f8c8987f356305f2d97f8fd12d260bda1571385
2017-04-13 13:01:59 +00:00
dan 929b695111 Allow a user column name to be used on the LHS of a MATCH operator in FTS5.
FossilOrigin-Name: 6f54ffd151b0eca6f9ef57ac54802584a839cfc7373f10c100fc18c855edcc0a
2017-04-13 09:45:21 +00:00
drh 8489bf5aff Forward port the skip-ahead-distinct branch which was abandoned for some reason
that I do not recall.  This port should have been achived by a merge of trunk
into the previous head of skip-ahead-distinct, but that did not work.  So I had
to manually "rebase" the changes.

FossilOrigin-Name: 132339a1fb0b9664df4d3eefbed6e77ef100ba95a91dcc622da7bd3fcdfcd6af
2017-04-13 01:19:30 +00:00
drh 8671538cad Fix a regression caused by the fix for ticket [6c9b5514077fed34551f98e64c09a1] -
control characters allowed in JSON.

FossilOrigin-Name: 8e7b611863247a3bf46a96ec4b47d24c0ae0d60c9cee968a1cfd1da157e7c9bb
2017-04-13 00:12:32 +00:00
dan 03155f659f Update fts5 to support "<colset> : ( <expr> )" for column filtering, as well
as "<colset> : NEAR(...)" and "<colset> : <phrase>".

FossilOrigin-Name: c847543f8bb1376fef52bca72b4191162a32eb7e6c5f0cd1aa0ab116b3183396
2017-04-12 17:50:12 +00:00
drh 26849e14c2 Improved \n and \r escapes in the ext/misc/dbdump.c utility function. The
implementation of dbdump.c now matches the implementation in the CLI.

FossilOrigin-Name: f2643315bb41a71eebd79f5d671f9163187e299a52ff8a481186f1e8fa7e5262
2017-04-12 17:38:24 +00:00
dan 15e0f3d901 Avoid updating unaffected indexes on a table as part of an UPDATE that
requires foreign key processing in some cases.

FossilOrigin-Name: 7aae5c0f99aa2fda85654242cfc9e23a0f981d9ce4ab17610d619cd208540b3d
2017-04-11 20:48:30 +00:00
dan 940b5eaa5e Avoid updating unaffected indexes on a table as part of an UPDATE that requires
foreign key processing in some cases.

FossilOrigin-Name: 477bea9ed0dd0fa69896bfd16d9b1d22170cbab784e3279ce65c29c47e032f34
2017-04-11 19:58:55 +00:00
drh ff6d50e973 Limit the depth of recursion for valid JSON in the JSON1 extension in order
to avoid using excess stack space in the recursive descent parser.
Fix for ticket [981329adeef51011052667a9].

FossilOrigin-Name: 1f68c184596912d742b50b1ca38252a9e783aacf121619a27b17a7ae9f6df041
2017-04-11 18:55:05 +00:00