mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Fix test cases for the new EXPLAIN QUERY PLAN format. Add the
wherecosttest tool. Other fixes to logarithm cost. FossilOrigin-Name: aa580e368e3c398b8377b80342dfdd906324c248
This commit is contained in:
@ -74,36 +74,36 @@ do_test rtree6-1.5 {
|
||||
do_eqp_test rtree6.2.1 {
|
||||
SELECT * FROM t1,t2 WHERE k=+ii AND x1<10
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:Ca (~25 rows)}
|
||||
0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:Ca}
|
||||
0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
|
||||
do_eqp_test rtree6.2.2 {
|
||||
SELECT * FROM t1,t2 WHERE k=ii AND x1<10
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:Ca (~25 rows)}
|
||||
0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:Ca}
|
||||
0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
|
||||
do_eqp_test rtree6.2.3 {
|
||||
SELECT * FROM t1,t2 WHERE k=ii
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2: (~25 rows)}
|
||||
0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:}
|
||||
0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
|
||||
do_eqp_test rtree6.2.4 {
|
||||
SELECT * FROM t1,t2 WHERE v=10 and x1<10 and x2>10
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:CaEb (~25 rows)}
|
||||
0 1 1 {SCAN TABLE t2 (~100000 rows)}
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:CaEb}
|
||||
0 1 1 {SCAN TABLE t2}
|
||||
}
|
||||
|
||||
do_eqp_test rtree6.2.5 {
|
||||
SELECT * FROM t1,t2 WHERE k=ii AND x1<v
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2: (~25 rows)}
|
||||
0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:}
|
||||
0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
|
||||
do_execsql_test rtree6-3.1 {
|
||||
|
@ -168,4 +168,3 @@ do_test rtree8-5.3 {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
177
manifest
177
manifest
@ -1,5 +1,5 @@
|
||||
C Fix\ssome\sminor\sissues\swith\slogarithmic\scost\sin\sNGQP.
|
||||
D 2013-06-10T20:46:50.026
|
||||
C Fix\stest\scases\sfor\sthe\snew\sEXPLAIN\sQUERY\sPLAN\sformat.\s\sAdd\sthe\nwherecosttest\stool.\s\sOther\sfixes\sto\slogarithm\scost.
|
||||
D 2013-06-10T23:30:09.637
|
||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||
F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
|
||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||
@ -124,9 +124,9 @@ F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba
|
||||
F ext/rtree/rtree3.test a494da55c30ee0bc9b01a91c80c81b387b22d2dc
|
||||
F ext/rtree/rtree4.test c8fe384f60ebd49540a5fecc990041bf452eb6e0
|
||||
F ext/rtree/rtree5.test 6a510494f12454bf57ef28f45bc7764ea279431e
|
||||
F ext/rtree/rtree6.test 349ee0ab3f67deaf11ffaa874cc5af7148c56276
|
||||
F ext/rtree/rtree6.test fb94b98c1145b7f44c72635d11492f35349ab27e
|
||||
F ext/rtree/rtree7.test 1fa710b9e6bf997a0c1a537b81be7bb6fded1971
|
||||
F ext/rtree/rtree8.test 9772e16da71e17e02bdebf0a5188590f289ab37d
|
||||
F ext/rtree/rtree8.test db79c812f9e4a11f9b1f3f9934007884610a713a
|
||||
F ext/rtree/rtree9.test d86ebf08ff6328895613ed577dd8a2a37c472c34
|
||||
F ext/rtree/rtreeA.test ace05e729a36e342d40cf94e9efc7b4723d9dcdf
|
||||
F ext/rtree/rtreeB.test 983e567b49b5dca165940f66b87e161aa30e82b2
|
||||
@ -289,29 +289,29 @@ F src/vtab.c b05e5f1f4902461ba9f5fc49bb7eb7c3a0741a83
|
||||
F src/wal.c 436bfceb141b9423c45119e68e444358ee0ed35d
|
||||
F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
|
||||
F src/walker.c 4fa43583d0a84b48f93b1e88f11adf2065be4e73
|
||||
F src/where.c 402d3f74aa8f72bd0d77df6d414cd0ad538411e8
|
||||
F src/where.c 672b76db7422b7bbc94fe1be42183c6356e56e96
|
||||
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
||||
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
||||
F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
|
||||
F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
|
||||
F test/all.test 705b516d4df89be56b0f52577df0966e93d2ce72
|
||||
F test/all.test 6ff7b43c2b4b905c74dc4a813d201d0fa64c5783
|
||||
F test/alter.test 57d96ec9b320bd07af77567034488dcb6642c748
|
||||
F test/alter2.test 7ea05c7d92ac99349a802ef7ada17294dd647060
|
||||
F test/alter3.test 49c9d9fba2b8fcdce2dedeca97bbf1f369cc548d
|
||||
F test/alter4.test b2debc14d8cbe4c1d12ccd6a41eef88a8c1f15d5
|
||||
F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc
|
||||
F test/analyze.test f8ab7d15858b4093b06caf5e57e2a5ff7104bdae
|
||||
F test/analyze3.test c3c7f6c3951900c188cf94b2d5ee3246d6b3ff89
|
||||
F test/analyze4.test 757b37875cf9bb528d46f74497bc789c88365045
|
||||
F test/analyze3.test 69863b446539f8849a996c2aa0b50461c9cecea4
|
||||
F test/analyze4.test eff2df19b8dd84529966420f29ea52edc6b56213
|
||||
F test/analyze5.test 713354664c5ff1853ab2cbcb740f0cf5cb7c802e
|
||||
F test/analyze6.test aa8dae5066bbed35c5f45a507fb87f2d342f2c99
|
||||
F test/analyze7.test bd09e89264c664d8d8d2450b6866dcdfae080a13
|
||||
F test/analyze8.test 4ca170de2ba30ccb1af2c0406803db72262f9691
|
||||
F test/analyze6.test cdbf9887d40ab41301f570fe85c6e1525dd3b1c9
|
||||
F test/analyze7.test 7de3ab66e1981303e783102a012d62cb876bf1d5
|
||||
F test/analyze8.test ea4972c76820ac8d6a0754e6f5b851292f0f5a61
|
||||
F test/async.test 1d0e056ba1bb9729283a0f22718d3a25e82c277b
|
||||
F test/async2.test c0a9bd20816d7d6a2ceca7b8c03d3d69c28ffb8b
|
||||
F test/async3.test d73a062002376d7edc1fe3edff493edbec1fc2f7
|
||||
F test/async4.test 1787e3952128aa10238bf39945126de7ca23685a
|
||||
F test/async5.test 0dd8701bd588bf6e70c2557a22ae3f22b2567b4c
|
||||
F test/async5.test 383ab533fdb9f7ad228cc99ee66e1acb34cc0dc0
|
||||
F test/atof1.test 9bf1d25180a2e05fc12ce3940cc8003033642f68
|
||||
F test/attach.test 0d112b7713611fdf0340260192749737135fda5f
|
||||
F test/attach2.test e54436ed956d3d88bdee61221da59bf3935a0966
|
||||
@ -322,14 +322,14 @@ F test/auth.test 4a4c3b034fff7750513520defa910f376c96ab49
|
||||
F test/auth2.test a2a371aa6df15f8b0c8109b33d3d7f0f73e4c9aa
|
||||
F test/auth3.test a4755e6a2a2fea547ffe63c874eb569e60a28eb5
|
||||
F test/autoinc.test bd30d372d00045252f6c2e41b5f41455e1975acf
|
||||
F test/autoindex1.test f88146c4c889ea0afbb620e49d83b5fbf5ee4d06
|
||||
F test/autoindex1.test fadbdf682948e0be840a3958d1df5501cfca9d6e
|
||||
F test/autovacuum.test 9f22a7733f39c56ef6a5665d10145ac25d8cb574
|
||||
F test/autovacuum_ioerr2.test 8a367b224183ad801e0e24dcb7d1501f45f244b4
|
||||
F test/avtrans.test 0252654f4295ddda3b2cce0e894812259e655a85
|
||||
F test/backcompat.test ecd841f3a3bfb81518721879cc56a760670e3198
|
||||
F test/backup.test c9cdd23a495864b9edf75a9fa66f5cb7e10fcf62
|
||||
F test/backup2.test 34986ef926ea522911a51dfdb2f8e99b7b75ebcf
|
||||
F test/backup4.test 4d90389daeb781fe718816a4fc836ad1b06791d8
|
||||
F test/backup4.test 2a2e4a64388090b152de753fd9e123f28f6a3bd4
|
||||
F test/backup_ioerr.test 4c3c7147cee85b024ecf6e150e090c32fdbb5135
|
||||
F test/backup_malloc.test 7162d604ec2b4683c4b3799a48657fb8b5e2d450
|
||||
F test/badutf.test d5360fc31f643d37a973ab0d8b4fb85799c3169f
|
||||
@ -351,7 +351,7 @@ F test/boundary3.tcl 8901d6a503d0bf64251dd81cc74e5ad3add4b119
|
||||
F test/boundary3.test 56ef82096b4329aca2be74fa1e2b0f762ea0eb45
|
||||
F test/boundary4.tcl 0bb4b1a94f4fc5ae59b79b9a2b7a140c405e2983
|
||||
F test/boundary4.test 89e02fa66397b8a325d5eb102b5806f961f8ec4b
|
||||
F test/btreefault.test f52c593513bda80a506c848325c73c840590884d
|
||||
F test/btreefault.test c2bcb542685eea44621275cfedbd8a13f65201e3
|
||||
F test/busy.test 76b4887f8b9160ba903c1ac22e8ff406ad6ae2f0
|
||||
F test/cache.test 13bc046b26210471ca6f2889aceb1ea52dc717de
|
||||
F test/capi2.test e8b18cc61090b6e5e388f54d6b125d711d1b265a
|
||||
@ -359,10 +359,10 @@ F test/capi3.test 56ab450125ead38846cbae7e5b6a216686c3cffa
|
||||
F test/capi3b.test efb2b9cfd127efa84433cd7a2d72ce0454ae0dc4
|
||||
F test/capi3c.test 93d24621c9ff84da9da060f30431e0453db1cdb0
|
||||
F test/capi3d.test 17b57ca28be3e37e14c2ba8f787d292d84b724a1
|
||||
F test/capi3e.test f7408dda65c92b9056199fdc180f893015f83dde
|
||||
F test/capi3e.test ad90088b18b0367125ff2d4b5400153fd2f99aab
|
||||
F test/cast.test 4c275cbdc8202d6f9c54a3596701719868ac7dc3
|
||||
F test/check.test 2eb93611139a7dfaed3be80067c7dc5ceb5fb287
|
||||
F test/close.test e37610d60e9c9b9979a981f3f50071d7dff28616
|
||||
F test/close.test 340bd24cc58b16c6bc01967402755027c37eb815
|
||||
F test/closure01.test dbb28f1ea9eeaf0a53ec5bc0fed352e479def8c7
|
||||
F test/coalesce.test cee0dccb9fbd2d494b77234bccf9dc6c6786eb91
|
||||
F test/collate1.test fd02c4d8afc71879c4bb952586389961a21fb0ce
|
||||
@ -393,7 +393,7 @@ F test/corruptB.test 20d4a20cbed23958888c3e8995b424a47223d647
|
||||
F test/corruptC.test 62a767fe64acb1975f58cc6171192839c783edbb
|
||||
F test/corruptD.test 3b09903a2e2fe07ecafe775fea94177f8a4bb34f
|
||||
F test/corruptE.test d3a3d7e864a95978195741744dda4abfd8286018
|
||||
F test/corruptF.test 984b1706c9c0e4248141b056c21124612628d12e
|
||||
F test/corruptF.test 1c7b6f77cf3f237fb7fbb5b61d6c921fd4c7b993
|
||||
F test/count.test 454e1ce985c94d13efeac405ce54439f49336163
|
||||
F test/coveridxscan.test cdb47d01acc4a634a34fd25abe85189e0d0f1e62
|
||||
F test/crash.test fb9dc4a02dcba30d4aa5c2c226f98b220b2b959f
|
||||
@ -421,12 +421,12 @@ F test/descidx3.test 09ddbe3f5295f482d2f8b687cf6db8bad7acd9a2
|
||||
F test/diskfull.test 106391384780753ea6896b7b4f005d10e9866b6e
|
||||
F test/distinct.test 84da1414b2e6887fffd5ed571311b344c5b082ce
|
||||
F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376
|
||||
F test/e_createtable.test d4e17024b1831e7480f5736cf4e02516a5c90927
|
||||
F test/e_createtable.test ddf3b2e4506e0813f46b69ccf55757c5570cc181
|
||||
F test/e_delete.test 89aa84d3d1bd284a0689ede04bce10226a5aeaa5
|
||||
F test/e_droptrigger.test afd5c4d27dec607f5997a66bf7e2498a082cb235
|
||||
F test/e_dropview.test 583411e470458c5d76148542cfb5a5fa84c8f93e
|
||||
F test/e_expr.test 5489424d3d9a452ac3701cdf4b680ae31a157894
|
||||
F test/e_fkey.test 79a985d95340c6072a884359426ce95cf33e656a
|
||||
F test/e_fkey.test 17cfb40002d165299681f39aac0cb5890c359935
|
||||
F test/e_fts3.test 5c02288842e4f941896fd44afdef564dd5fc1459
|
||||
F test/e_insert.test d5331cc95e101af2508159fc98b6801631659ffe
|
||||
F test/e_reindex.test 5e6dff3a060b5234d496f6e84c3e59a94b4dce4d
|
||||
@ -440,17 +440,17 @@ F test/enc.test e54531cd6bf941ee6760be041dff19a104c7acea
|
||||
F test/enc2.test 83437a79ba1545a55fb549309175c683fb334473
|
||||
F test/enc3.test 90683ad0e6ea587b9d5542ca93568af9a9858c40
|
||||
F test/enc4.test c8f1ce3618508fd0909945beb8b8831feef2c020
|
||||
F test/eqp.test 46aa946dd55c90635327898275d3e533d23a9845
|
||||
F test/eqp.test ac506be979f611719a2a2de8476fe608fc9d66a4
|
||||
F test/errmsg.test 050717f1c6a5685de9c79f5f9f6b83d7c592f73a
|
||||
F test/eval.test bc269c365ba877554948441e91ad5373f9f91be3
|
||||
F test/exclusive.test a1b324cb21834a490cd052d409d34789cfef57cb
|
||||
F test/exclusive.test c7ebbc756eacf544c108b15eed64d7d4e5f86b75
|
||||
F test/exclusive2.test 881193eccec225cfed9d7f744b65e57f26adee25
|
||||
F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7
|
||||
F test/exists.test 8f7b27b61c2fbe5822f0a1f899c715d14e416e30
|
||||
F test/expr.test 67c9fd6f8f829e239dc8b0f4a08a73c08b09196d
|
||||
F test/fallocate.test b5d34437bd7ab01d41b1464b8117aefd4d32160e
|
||||
F test/fallocate.test 3e979af17dfa7e5e9dda5eba1a696c04fa9d47f7
|
||||
F test/filectrl.test 14fa712e42c4cb791e09dfd58a6a03efb47ef13a
|
||||
F test/filefmt.test dbee33e57818249cdffbbb7b13464635217beff1
|
||||
F test/filefmt.test cb34663f126cbc2d358af552dcaf5c72769b0146
|
||||
F test/fkey1.test 01c7de578e11747e720c2d9aeef27f239853c4da
|
||||
F test/fkey2.test 06e0b4cc9e1b3271ae2ae6feeb19755468432111
|
||||
F test/fkey3.test 5ec899d12b13bcf1e9ef40eff7fb692fdb91392e
|
||||
@ -495,7 +495,7 @@ F test/fts2r.test b154c30b63061d8725e320fba1a39e2201cadd5e
|
||||
F test/fts2token.test d8070b241a15ff13592a9ae4a8b7c171af6f445a
|
||||
F test/fts3.test 672a040ea57036fb4b6fdc09027c18d7d24ab654
|
||||
F test/fts3_common.tcl 99cf6659b87c0f74f55963c2aea03b3a7d66ceb0
|
||||
F test/fts3aa.test 909d5f530d30a8e36b9328d67285eae6537c79c0
|
||||
F test/fts3aa.test ad272d695095a55c16a5091dbdcce7c5f55da605
|
||||
F test/fts3ab.test 09aeaa162aee6513d9ff336b6932211008b9d1f9
|
||||
F test/fts3ac.test 636ed7486043055d4f126a0e385f2d5a82ebbf63
|
||||
F test/fts3ad.test e40570cb6f74f059129ad48bcef3d7cbc20dda49
|
||||
@ -509,43 +509,43 @@ F test/fts3ak.test bd14deafe9d1586e8e9bf032411026ac4f8c925d
|
||||
F test/fts3al.test 07d64326e79bbdbab20ee87fc3328fbf01641c9f
|
||||
F test/fts3am.test 218aa6ba0dfc50c7c16b2022aac5c6be593d08d8
|
||||
F test/fts3an.test a49ccadc07a2f7d646ec1b81bc09da2d85a85b18
|
||||
F test/fts3ao.test e7b80272efcced57d1d087a9da5c690dd7c21fd9
|
||||
F test/fts3atoken.test fb398ab50aa232489e2a17f9b29d7ad3a3885f36
|
||||
F test/fts3auto.test 74315a7377403a57ba82a652a33704197fe1e4be
|
||||
F test/fts3aux1.test 52cc50162e5e0c27fc08d12c8fe41b8df20af555
|
||||
F test/fts3ao.test 71b0675e3df5c512a5a03daaa95ee1916de23dda
|
||||
F test/fts3atoken.test fca30fd86db9241d571c637751e9a8a2f50f1451
|
||||
F test/fts3auto.test b981fea19b132b4e6878f50d7c1f369b28f68eb9
|
||||
F test/fts3aux1.test f8f287a4a73f381f8fa15b6a70f36245f903d221
|
||||
F test/fts3b.test e93bbb653e52afde110ad53bbd793f14fe7a8984
|
||||
F test/fts3c.test fc723a9cf10b397fdfc2b32e73c53c8b1ec02958
|
||||
F test/fts3comp1.test a0f5b16a2df44dd0b15751787130af2183167c0c
|
||||
F test/fts3conf.test ee8500c86dd58ec075e8831a1e216a79989436de
|
||||
F test/fts3corrupt.test 7b0f91780ca36118d73324ec803187208ad33b32
|
||||
F test/fts3corrupt.test 2710b77983cc7789295ddbffea52c1d3b7506dbb
|
||||
F test/fts3corrupt2.test 6d96efae2f8a6af3eeaf283aba437e6d0e5447ba
|
||||
F test/fts3cov.test e0fb00d8b715ddae4a94c305992dfc3ef70353d7
|
||||
F test/fts3d.test bf640d79722b720fa1c81834c48cdaa45d531b1a
|
||||
F test/fts3defer.test 0be4440b73a2e651fc1e472066686d6ada4b9963
|
||||
F test/fts3defer2.test 83f8744407b7663e36716a9066302d53d49ddf8b
|
||||
F test/fts3defer2.test a3b6cbeabaf28c9398652a4d101ea224d9358479
|
||||
F test/fts3drop.test 1b906e293d6773812587b3dc458cb9e8f3f0c297
|
||||
F test/fts3e.test 1f6c6ac9cc8b772ca256e6b22aaeed50c9350851
|
||||
F test/fts3expr.test 5e745b2b6348499d9ef8d59015de3182072c564c
|
||||
F test/fts3expr2.test 18da930352e5693eaa163a3eacf96233b7290d1a
|
||||
F test/fts3expr3.test 1bfb762b53a794f990f3dffaae8bbea5736422f7
|
||||
F test/fts3expr3.test 9e91b8edbcb197bf2e92161aa7696446d96dce5f
|
||||
F test/fts3fault.test cb72dccb0a3b9f730f16c5240f3fcb9303eb1660
|
||||
F test/fts3fault2.test 3198eef2804deea7cac8403e771d9cbcb752d887
|
||||
F test/fts3first.test dbdedd20914c8d539aa3206c9b34a23775644641
|
||||
F test/fts3malloc.test b86ea33db9e8c58c0c2f8027a9fcadaf6a1568be
|
||||
F test/fts3matchinfo.test ecb08f586d027eb03941bcfcded6cb9d8ccb3a66
|
||||
F test/fts3malloc.test e1c629e1c42bfaa4e81502f0292fecb84175a525
|
||||
F test/fts3matchinfo.test 3f297e14e3f0d5be8595246f5fcd426625cc5881
|
||||
F test/fts3near.test 12895557870b0f9af7cc0be81a0171abb2d12f12
|
||||
F test/fts3prefix.test b36d4f00b128a51e7b386cc013a874246d9d7dc1
|
||||
F test/fts3prefix2.test 477ca96e67f60745b7ac931cfa6e9b080c562da5
|
||||
F test/fts3query.test 00b519001b42ea0bb65314103a395604880dd7cf
|
||||
F test/fts3prefix2.test e1f0a822ca661dced7f12ce392e14eaf65609dce
|
||||
F test/fts3query.test 4fefd43ff24993bc2c9b2778f2bec0cc7629e7ed
|
||||
F test/fts3rnd.test 1320d8826a845e38a96e769562bf83d7a92a15d0
|
||||
F test/fts3shared.test c2f60e152e8554549eb25f0a7593ea01389c5037
|
||||
F test/fts3snippet.test 8e956051221a34c7daeb504f023cb54d5fa5a8b2
|
||||
F test/fts3sort.test 95be0b19d7e41c44b29014f13ea8bddd495fd659
|
||||
F test/fts3tok1.test 4d9e7401679dc71f6b2f76416309b923210bfdbe
|
||||
F test/fts3tok_err.test 41e5413139c2ef536ffadfcd1584ee50b1665ec0
|
||||
F test/fts3shared.test 57e26a801f21027b7530da77db54286a6fe4997e
|
||||
F test/fts3snippet.test 24d6ff1920a70fd970c401a8525834b4ad12cece
|
||||
F test/fts3sort.test ed34c716a11cc2009a35210e84ad5f9c102362ca
|
||||
F test/fts3tok1.test b10d0a12a0ab5f905cea1200b745de233f37443f
|
||||
F test/fts3tok_err.test 52273cd193b9036282f7bacb43da78c6be87418d
|
||||
F test/fts4aa.test 95f448fb02c4a976968b08d1b4ce134e720946ae
|
||||
F test/fts4check.test 66fa274cab2b615f2fb338b257713aba8fad88a8
|
||||
F test/fts4content.test 6efc53b4fd03cab167e6998d2b0b7d4b7d419ee6
|
||||
F test/fts4content.test 2e7252557d6d24afa101d9ba1de710d6140e6d06
|
||||
F test/fts4langid.test 24a6e41063b416bbdf371ff6b4476fa41c194aa7
|
||||
F test/fts4merge.test c424309743fdd203f8e56a1f1cd7872cd66cc0ee
|
||||
F test/fts4merge2.test 5faa558d1b672f82b847d2a337465fa745e46891
|
||||
@ -573,20 +573,20 @@ F test/in4.test 64f3cc1acde1b9161ccdd8e5bde3daefdb5b2617
|
||||
F test/in5.test 99f9a40af01711b06d2d614ecfe96129f334fba3
|
||||
F test/incrblob.test e81846d214f3637622620fbde7cd526781cfe328
|
||||
F test/incrblob2.test edc3a96e557bd61fb39acc8d2edd43371fbbaa19
|
||||
F test/incrblob3.test aedbb35ea1b6450c33b98f2b6ed98e5020be8dc7
|
||||
F test/incrblob4.test 09be37d3dd996a31ea6993bba7837ece549414a8
|
||||
F test/incrblob3.test d8d036fde015d4a159cd3cbae9d29003b37227a4
|
||||
F test/incrblob4.test f26502a5697893e5acea268c910f16478c2f0fab
|
||||
F test/incrblob_err.test d2562d2771ebffd4b3af89ef64c140dd44371597
|
||||
F test/incrblobfault.test 917c0292224c64a56ef7215fd633a3a82f805be0
|
||||
F test/incrblobfault.test 280474078f6da9e732cd2a215d3d854969014b6e
|
||||
F test/incrvacuum.test d2a6ddf5e429720b5fe502766af747915ccf6c32
|
||||
F test/incrvacuum2.test 379eeb8740b0ef60c372c439ad4cbea20b34bb9b
|
||||
F test/incrvacuum3.test 2ffa9e4a23f072bd7902b9ae6471f8822a6522a7
|
||||
F test/incrvacuum3.test 75256fb1377e7c39ef2de62bfc42bbff67be295a
|
||||
F test/incrvacuum_ioerr.test 6ae2f783424e47a0033304808fe27789cf93e635
|
||||
F test/index.test b5429732b3b983fa810e3ac867d7ca85dae35097
|
||||
F test/index2.test ee83c6b5e3173a3d7137140d945d9a5d4fdfb9d6
|
||||
F test/index3.test 423a25c789fc8cc51aaf2a4370bbdde2d9e9eed7
|
||||
F test/index4.test 2983216eb8c86ee62d9ed7cb206b5cc3331c0026
|
||||
F test/index5.test fc07c14193c0430814e7a08b5da46888ee795c33
|
||||
F test/indexedby.test be501e381b82b2f8ab406309ba7aac46e221f4ad
|
||||
F test/indexedby.test e06e1bf5a933b53f7dbeedf45749d0d37c7067ff
|
||||
F test/indexfault.test 31d4ab9a7d2f6e9616933eb079722362a883eb1d
|
||||
F test/init.test 15c823093fdabbf7b531fe22cf037134d09587a7
|
||||
F test/insert.test 489aa12a027c83d291f5034a83c8c32e6be1dca2
|
||||
@ -598,13 +598,13 @@ F test/instr.test a34e1d46a9eefb098a7167ef0e730a4a3d82fba0
|
||||
F test/intarray.test 066b7d7ac38d25bf96f87f1b017bfc687551cdd4
|
||||
F test/interrupt.test dfe9a67a94b0b2d8f70545ba1a6cca10780d71cc
|
||||
F test/intpkey.test a9674fc6195e0952e4e6105a9981ce1e48e7f215
|
||||
F test/io.test ecf44cc81664ad54d8253e2d88fc705b6554abe3
|
||||
F test/io.test 3a7abcef18727cc0f2399e04b0e8903eccae50f8
|
||||
F test/ioerr.test 40bb2cfcab63fb6aa7424cd97812a84bc16b5fb8
|
||||
F test/ioerr2.test 9d71166f8466eda510f1af6137bdabaa82b5408d
|
||||
F test/ioerr3.test d3cec5e1a11ad6d27527d0d38573fbff14c71bdd
|
||||
F test/ioerr4.test f130fe9e71008577b342b8874d52984bd04ede2c
|
||||
F test/ioerr5.test 2edfa4fb0f896f733071303b42224df8bedd9da4
|
||||
F test/ioerr6.test cf25523b921d1a6a0e5b536cd4acb3c3d979ea52
|
||||
F test/ioerr6.test a395a6ab144b26a9e3e21059a1ab6a7149cca65b
|
||||
F test/join.test 8d63cc4d230a7affafa4b6ab0b97c49b8ccb365c
|
||||
F test/join2.test f2171c265e57ee298a27e57e7051d22962f9f324
|
||||
F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0
|
||||
@ -631,7 +631,7 @@ F test/lock3.test f271375930711ae044080f4fe6d6eda930870d00
|
||||
F test/lock4.test e175ae13865bc87680607563bafba21f31a26f12
|
||||
F test/lock5.test 5ad6a1f536036ff1be915cfdd41481aeafda3273
|
||||
F test/lock6.test ad5b387a3a8096afd3c68a55b9535056431b0cf5
|
||||
F test/lock7.test 64006c84c1c616657e237c7ad6532b765611cf64
|
||||
F test/lock7.test 49f1eaff1cdc491cc5dee3669f3c671d9f172431
|
||||
F test/lock_common.tcl 0c270b121d40959fa2f3add382200c27045b3d95
|
||||
F test/lookaside.test 93f07bac140c5bb1d49f3892d2684decafdc7af2
|
||||
F test/main.test 39c4bb8a157f57298ed1659d6df89d9f35aaf2c8
|
||||
@ -673,7 +673,7 @@ F test/misc3.test fe55130a43e444ee75e2156ff75dc96e964b5738
|
||||
F test/misc4.test 9c078510fbfff05a9869a0b6d8b86a623ad2c4f6
|
||||
F test/misc5.test 528468b26d03303b1f047146e5eefc941b9069f5
|
||||
F test/misc6.test 953cc693924d88e6117aeba16f46f0bf5abede91
|
||||
F test/misc7.test dd82ec9250b89178b96cd28b2aca70639d21e5b3
|
||||
F test/misc7.test 50c02c35ef7924c246eb3d8d71dfbf90ba352f8f
|
||||
F test/misuse.test ba4fb5d1a6101d1c171ea38b3c613d0661c83054
|
||||
F test/mmap1.test 93d167b328255cbe6679fe1e1a23be1b1197d07b
|
||||
F test/mmap2.test 9d6dd9ddb4ad2379f29cc78f38ce1e63ed418022
|
||||
@ -686,7 +686,7 @@ F test/mutex2.test bfeaeac2e73095b2ac32285d2756e3a65e681660
|
||||
F test/nan.test e9648b9d007c7045242af35e11a984d4b169443a
|
||||
F test/notify1.test 669b2b743618efdc18ca4b02f45423d5d2304abf
|
||||
F test/notify2.test ce23eb522c9e1fff6443f96376fe67872202061c
|
||||
F test/notify3.test a86259abbfb923aa27d30f0fc038c88e5251488a
|
||||
F test/notify3.test 10ff25cde502e72a92053a2f215d64bece4ef934
|
||||
F test/notnull.test 2afad748d18fd66d01f66463de73b3e2501fb226
|
||||
F test/null.test a8b09b8ed87852742343b33441a9240022108993
|
||||
F test/numcast.test 5d126f7f581432e86a90d1e35cac625164aec4a1
|
||||
@ -696,12 +696,12 @@ F test/orderby2.test bc11009f7cd99d96b1b11e57b199b00633eb5b04
|
||||
F test/orderby3.test 8619d06a3debdcd80a27c0fdea5c40b468854b99
|
||||
F test/orderby4.test 4d39bfbaaa3ae64d026ca2ff166353d2edca4ba4
|
||||
F test/oserror.test 50417780d0e0d7cd23cf12a8277bb44024765df3
|
||||
F test/pager1.test 30e63afd425fea12285e9ec5fa1fd000808031f1
|
||||
F test/pager1.test 16b649c8f0b38d446acbcff8a7bf055a9be43276
|
||||
F test/pager2.test 67b8f40ae98112bcdba1f2b2d03ea83266418c71
|
||||
F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f
|
||||
F test/pagerfault.test 8483e65d33d5636e5b7656204bb274d826e728d9
|
||||
F test/pagerfault2.test 1f79ea40d1133b2683a2f811b00f2399f7ec2401
|
||||
F test/pagerfault3.test f16e2efcb5fc9996d1356f7cbc44c998318ae1d7
|
||||
F test/pagerfault.test 7285379906ab2f1108b8e82bbdf2d386cc8ff3ff
|
||||
F test/pagerfault2.test caf4c7facb914fd3b03a17b31ae2b180c8d6ca1f
|
||||
F test/pagerfault3.test 1003fcda009bf48a8e22a516e193b6ef0dd1bbd8
|
||||
F test/pageropt.test 6b8f6a123a5572c195ad4ae40f2987007923bbd6
|
||||
F test/pagesize.test 1dd51367e752e742f58e861e65ed7390603827a0
|
||||
F test/pcache.test 065aa286e722ab24f2e51792c1f093bf60656b16
|
||||
@ -743,7 +743,7 @@ F test/schema3.test 1bc1008e1f8cb5654b248c55f27249366eb7ed38
|
||||
F test/schema4.test e6a66e20cc69f0e306667c08be7fda3d11707dc5
|
||||
F test/schema5.test 0103e4c0313b3725b5ae5600bdca53006ab53db3
|
||||
F test/securedel.test 87a2561151af1f1e349071a89fdd77059f50113c
|
||||
F test/securedel2.test f13a916155f790a6b9de835049641b14ef312986
|
||||
F test/securedel2.test 2d54c28e46eb1fd6902089958b20b1b056c6f1c5
|
||||
F test/select1.test deba017eed9daa5af33de868676c997e7eebb931
|
||||
F test/select2.test 352480e0e9c66eda9c3044e412abdf5be0215b56
|
||||
F test/select3.test 2ce595f8fb8e2ac10071d3b4e424cadd4634a054
|
||||
@ -765,11 +765,11 @@ F test/shared3.test ebf77f023f4bdaa8f74f65822b559e86ce5c6257
|
||||
F test/shared4.test 72d90821e8d2fc918a08f16d32880868d8ee8e9d
|
||||
F test/shared6.test 866bb4982c45ce216c61ded5e8fde4e7e2f3ffa9
|
||||
F test/shared7.test 960760bc8d03e1419e70dea69cf41db62853616e
|
||||
F test/shared8.test b27befbefbe7f4517f1d6b7ff8f64a41ec74165d
|
||||
F test/shared8.test 00a07bf5e1337ecf72e94542bdefdc330d7a2538
|
||||
F test/shared9.test 5f2a8f79b4d6c7d107a01ffa1ed05ae7e6333e21
|
||||
F test/sharedA.test 0cdf1a76dfa00e6beee66af5b534b1e8df2720f5
|
||||
F test/shared_err.test 0079c05c97d88cfa03989b7c20a8b266983087aa
|
||||
F test/sharedlock.test ffa0a3c4ac192145b310f1254f8afca4d553eabf
|
||||
F test/sharedlock.test 927a4b6da11978c82b857dbdb20a932aad732123
|
||||
F test/shell1.test 4a2f57952719972c6f862134463f8712e953c038
|
||||
F test/shell2.test 037d6ad16e873354195d30bb2dc4b5321788154a
|
||||
F test/shell3.test 9196c42772d575685e722c92b4b39053c6ebba59
|
||||
@ -826,11 +826,11 @@ F test/tkt-2d1a5c67d.test d371279946622698ab393ff88cad9f5f6d82960b
|
||||
F test/tkt-2ea2425d34.test 1cf13e6f75d149b3209a0cb32927a82d3d79fb28
|
||||
F test/tkt-31338dca7e.test 6fb8807851964da0d24e942f2e19c7c705b9fb58
|
||||
F test/tkt-313723c356.test c47f8a9330523e6f35698bf4489bcb29609b53ac
|
||||
F test/tkt-385a5b56b9.test 7782a382912a51f09f1d1a1442bca1e75f9c549b
|
||||
F test/tkt-385a5b56b9.test c0a06ada41d7f06b1686da0e718553f853771d1e
|
||||
F test/tkt-38cb5df375.test f3cc8671f1eb604d4ae9cf886ed4366bec656678
|
||||
F test/tkt-3998683a16.test 6d1d04d551ed1704eb3396ca87bb9ccc8c5c1eb7
|
||||
F test/tkt-3a77c9714e.test 32bb28afa8c63fc76e972e996193139b63551ed9
|
||||
F test/tkt-3fe897352e.test 10de1a67bd5c66b238a4c96abe55531b37bb4f00
|
||||
F test/tkt-3a77c9714e.test b08bca26de1140bdf004a37716582a43d7bd8be8
|
||||
F test/tkt-3fe897352e.test 27e26eb0f1811aeba4d65aba43a4c52e99da5e70
|
||||
F test/tkt-4a03edc4c8.test 2865e4edbc075b954daa82f8da7cc973033ec76e
|
||||
F test/tkt-4dd95f6943.test 3d0ce415d2ee15d3d564121960016b9c7be79407
|
||||
F test/tkt-54844eea3f.test a12b851128f46a695e4e378cca67409b9b8f5894
|
||||
@ -839,9 +839,9 @@ F test/tkt-5e10420e8d.test 904d1687b3c06d43e5b3555bbcf6802e7c0ffd84
|
||||
F test/tkt-5ee23731f.test 9db6e1d7209dc0794948b260d6f82b2b1de83a9f
|
||||
F test/tkt-6bfb98dfc0.test 24780633627b5cfc0635a5500c2389ebfb563336
|
||||
F test/tkt-752e1646fc.test ea78d88d14fe9866bdd991c634483334639e13bf
|
||||
F test/tkt-78e04e52ea.test 703e0bfb23d543edf0426a97e3bbd0ca346508ec
|
||||
F test/tkt-7a31705a7e6.test 5a7889fdb095ffbe1622413e0145de1637d421bd
|
||||
F test/tkt-7bbfb7d442.test dfa5c8097a8c353ae40705d6cddeb1f99c18b81a
|
||||
F test/tkt-78e04e52ea.test 787b70cfb0488c356266bb8d5ad8a657f9efceb8
|
||||
F test/tkt-7a31705a7e6.test e75a2bba4eec801b92c8040eb22096ac6d35e844
|
||||
F test/tkt-7bbfb7d442.test 7b2cd79c7a17ae6750e75ec1a7846712a69c9d18
|
||||
F test/tkt-80ba201079.test 105a721e6aad0ae3c5946d7615d1e4d03f6145b8
|
||||
F test/tkt-80e031a00f.test 9a154173461a4dbe2de49cda73963e04842d52f7
|
||||
F test/tkt-8454a207b9.test c583a9f814a82a2b5ba95207f55001c9f0cd816c
|
||||
@ -854,15 +854,15 @@ F test/tkt-b351d95f9.test d14a503c414c5c58fdde3e80f9a3cfef986498c0
|
||||
F test/tkt-b72787b1.test a95e8cdad0b98af1853ac7f0afd4ab27b77bf5f3
|
||||
F test/tkt-bd484a090c.test 60460bf946f79a79712b71f202eda501ca99b898
|
||||
F test/tkt-bdc6bbbb38.test fc38bb09bdd440e3513a1f5f98fc60a075182d7d
|
||||
F test/tkt-c48d99d690.test bed446e3513ae10eec1b86fdd186ef750226c408
|
||||
F test/tkt-c48d99d690.test ba61977d62ab612fc515b3c488a6fbd6464a2447
|
||||
F test/tkt-cbd054fa6b.test 9c27ed07b333eed458e5d4543f91ecdcf05aeb19
|
||||
F test/tkt-d11f09d36e.test fb44f7961aa6d4b632fb7b9768239832210b5fc7
|
||||
F test/tkt-d11f09d36e.test d999b548fef885d1d1afa49a0e8544ecf436869d
|
||||
F test/tkt-d635236375.test 9d37e988b47d87505bc9445be0ca447002df5d09
|
||||
F test/tkt-d82e3f3721.test bcc0dfba658d15bab30fd4a9320c9e35d214ce30
|
||||
F test/tkt-f3e5abed55.test 669bb076f2ac573c7398ce00f40cd0ca502043a9
|
||||
F test/tkt-f3e5abed55.test d5a0126118142d13e27f6ce9f4c47096e9321c00
|
||||
F test/tkt-f777251dc7a.test af6531446c64bfd268416f07b4df7be7f9c749d2
|
||||
F test/tkt-f7b4edec.test d998a08ff2b18b7f62edce8e3044317c45efe6c7
|
||||
F test/tkt-f973c7ac31.test 1da0ed15ec2c7749fb5ce2828cd69d07153ad9f4
|
||||
F test/tkt-f973c7ac31.test 28ef85c7f015477916795246d8286aeda39d4ead
|
||||
F test/tkt-fa7bf5ec.test 9102dfea58aa371d78969da735f9392c57e2e035
|
||||
F test/tkt-fc62af4523.test 72825d3febdedcd5593a27989fc05accdbfc2bb4
|
||||
F test/tkt-fc7bd6358f.test 634bb4af7d661e82d6b61b80c86727bad698e08f
|
||||
@ -914,7 +914,7 @@ F test/tkt3346.test 6f67c3ed7db94dfc5df4f5f0b63809a1f611e01a
|
||||
F test/tkt3357.test 77c37c6482b526fe89941ce951c22d011f5922ed
|
||||
F test/tkt3419.test 1bbf36d7ea03b638c15804251287c2391f5c1f6b
|
||||
F test/tkt3424.test 61f831bd2b071bd128fa5d00fbda57e656ca5812
|
||||
F test/tkt3442.test 0adb70e9fe9cb750a702065a68ad647409dbc158
|
||||
F test/tkt3442.test 53840ec5325bb94544792aad4c20476f81dc26b1
|
||||
F test/tkt3457.test 44e980fe5334753dcc27b94fa4deabc485a92f74
|
||||
F test/tkt3461.test 228ea328a5a21e8663f80ee3d212a6ad92549a19
|
||||
F test/tkt3493.test 1686cbde85f8721fc1bdc0ee72f2ef2f63139218
|
||||
@ -942,9 +942,9 @@ F test/tkt3841.test 4659845bc53f809a5932c61c6ce8c5bb9d6b947f
|
||||
F test/tkt3871.test 43ecbc8d90dc83908e2a454aef345acc9d160c6f
|
||||
F test/tkt3879.test 2ad5bef2c87e9991ce941e054c31abe26ef7fb90
|
||||
F test/tkt3911.test 74cd324f3ba653040cc6d94cc4857b290d12d633
|
||||
F test/tkt3918.test e6cdf6bfcfe9ba939d86a4238a9dc55d6eec5d42
|
||||
F test/tkt3918.test ea78bf164e4d55cbde0d83c671ef6fbe930a0032
|
||||
F test/tkt3922.test f26be40ab4fe6c00795629bd2006d96e270d9b1a
|
||||
F test/tkt3929.test 75a862e45bcb39e9a7944c89b92afa531304afca
|
||||
F test/tkt3929.test cdf67acf5aa936ec4ffead81db87f8a71fe40e59
|
||||
F test/tkt3935.test e15261fedb9e30a4305a311da614a5d8e693c767
|
||||
F test/tkt3992.test f3e7d548ac26f763b47bc0f750da3d03c81071da
|
||||
F test/tkt3997.test a335fa41ca3985660a139df7b734a26ef53284bd
|
||||
@ -975,7 +975,7 @@ F test/types2.test 3555aacf8ed8dc883356e59efc314707e6247a84
|
||||
F test/types3.test 99e009491a54f4dc02c06bdbc0c5eea56ae3e25a
|
||||
F test/unique.test cadb172bbd5a2e83cd644d186ccd602085e54edc
|
||||
F test/unixexcl.test a9870e46cc6f8390a494513d4f2bf55b5a8b3e46
|
||||
F test/unordered.test 93dce7b6c97a817a4fe26980c484605a4511f614
|
||||
F test/unordered.test 08b4ea1c273891ebc10d5e5c3a352ac5c62a6fbf
|
||||
F test/update.test 8bc86fd7ef1a00014f76dc6a6a7c974df4aef172
|
||||
F test/uri.test 63e03df051620a18f794b4f4adcdefb3c23b6751
|
||||
F test/utf16align.test 54cd35a27c005a9b6e7815d887718780b6a462ae
|
||||
@ -984,7 +984,7 @@ F test/vacuum2.test af432e6e3bfc0ea20a80cb86a03c7d9876d38324
|
||||
F test/vacuum3.test 77ecdd54592b45a0bcb133339f99f1ae0ae94d0d
|
||||
F test/vacuum4.test d3f8ecff345f166911568f397d2432c16d2867d9
|
||||
F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102
|
||||
F test/veryquick.test 7701bb609fe8bf6535514e8b849a309e8f00573b
|
||||
F test/veryquick.test 57ab846bacf7b90cf4e9a672721ea5c5b669b661
|
||||
F test/view.test 4057630287bfa5955628fe90a13d4c225d1c7352
|
||||
F test/vtab1.test 4403f987860ebddef1ce2de6db7216421035339d
|
||||
F test/vtab2.test 7bcffc050da5c68f4f312e49e443063e2d391c0d
|
||||
@ -1011,37 +1011,37 @@ F test/wal4.test 4744e155cd6299c6bd99d3eab1c82f77db9cdb3c
|
||||
F test/wal5.test 8f888b50f66b78821e61ed0e233ded5de378224b
|
||||
F test/wal6.test 2e3bc767d9c2ce35c47106148d43fcbd072a93b3
|
||||
F test/wal7.test 2ae8f427d240099cc4b2dfef63cff44e2a68a1bd
|
||||
F test/wal8.test b3ee739fe8f7586aaebdc2367f477ebcf3e3b034
|
||||
F test/wal8.test 75c42e1bc4545c277fed212f8fc9b7723cd02216
|
||||
F test/wal9.test 378e76a9ad09cd9bee06c172ad3547b0129a6750
|
||||
F test/wal_common.tcl a98f17fba96206122eff624db0ab13ec377be4fe
|
||||
F test/walbak.test b9f68e39646375c2b877be906babcc15d38b4877
|
||||
F test/walbig.test f437473a16cfb314867c6b5d1dbcd519e73e3434
|
||||
F test/walcksum.test f5447800a157c9e2234fbb8e80243f0813941bde
|
||||
F test/walcrash.test 4457436593be8c136f9148487c7dccd5e9013af2
|
||||
F test/walcrash2.test 019d60b89d96c1937adb2b30b850ac7e86e5a142
|
||||
F test/walcrash3.test 595e44c6197f0d0aa509fc135be2fd0209d11a2c
|
||||
F test/walcksum.test 9afeb96240296c08c72fc524d199c912cfe34daa
|
||||
F test/walcrash.test 451d79e528add5c42764cea74aa2750754171b25
|
||||
F test/walcrash2.test a0edab4e5390f03b99a790de89aad15d6ec70b36
|
||||
F test/walcrash3.test e426aa58122d20f2b9fbe9a507f9eb8cab85b8af
|
||||
F test/walfault.test 54ad6e849c727f4da463964b9eb8c8e8e155cf82
|
||||
F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483
|
||||
F test/walmode.test 4022fe03ae6e830583672caa101f046438a0473c
|
||||
F test/walnoshm.test 84ca10c544632a756467336b7c3b864d493ee496
|
||||
F test/walpersist.test 8c6b7e3ec1ba91b5e4dc4e0921d6d3f87cd356a6
|
||||
F test/walro.test a31deb621033442a76c3a61e44929250d06f81b1
|
||||
F test/walshared.test 6dda2293880c300baf5d791c307f653094585761
|
||||
F test/walro.test 6cc247a0cc9b36aeea2057dd28a922a1cdfbd630
|
||||
F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417
|
||||
F test/walslow.test e7be6d9888f83aa5d3d3c7c08aa9b5c28b93609a
|
||||
F test/walthread.test de8dbaf6d9e41481c460ba31ca61e163d7348f8e
|
||||
F test/where.test 054a6b6f7933c5a5f50d0bcd650b5eccb450cc81
|
||||
F test/where2.test 116fb0d6e98a423d12eb9a65906218ce09936674
|
||||
F test/where3.test 311c04e16f72816616d05d96dd354db7bce545eb
|
||||
F test/where3.test 1f2a9c997243dc39c67d38fe6d73254ab2f880b8
|
||||
F test/where4.test e9b9e2f2f98f00379e6031db6a6fca29bae782a2
|
||||
F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
|
||||
F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
|
||||
F test/where7.test 5c566388f0cc318b0032ce860f4ac5548e3c265a
|
||||
F test/where7.test e0741d85b6069effe53c6ed7682e18aa078f4b11
|
||||
F test/where8.test d6a283eb7348a8967d44e2a753f117ab0d21d4f3
|
||||
F test/where8m.test da346596e19d54f0aba35ebade032a7c47d79739
|
||||
F test/where9.test 1b4387c6eacc9a32b28b4d837c27f857c785d0d8
|
||||
F test/where9.test 4094299aea1c5a1ebe172ad832c2467cba23133a
|
||||
F test/whereA.test 24c234263c8fe358f079d5e57d884fb569d2da0a
|
||||
F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5
|
||||
F test/whereC.test 13ff5ec0dba407c0e0c075980c75b3275a6774e5
|
||||
F test/whereC.test d6f4ecd4fa2d9429681a5b22a25d2bda8e86ab8a
|
||||
F test/whereD.test 6c2feb79ef1f68381b07f39017fe5f9b96da8d62
|
||||
F test/whereE.test 7bd34945797efef15819368479bacc34215e4e1d
|
||||
F test/whereF.test a0e296643cabe5278379bc1a0aa158cf3c54a1c9
|
||||
@ -1093,8 +1093,9 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
|
||||
F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
|
||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
||||
F tool/wherecosttest.c 4d0393bdbe7230adb712e925863744dd2b7ffc5b
|
||||
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
|
||||
P 9e8109673c3a87e379f5a5a97a8b0d5a1afe853d
|
||||
R 6b6adbb839b36bd753eb8d10af218a35
|
||||
P 69cf877283d362915edddf1822fbf7a9f86278b3
|
||||
R 6bac639abb86e2ec49ce16ea155e2dc3
|
||||
U drh
|
||||
Z 0c1be235257af3633fe6569a03c10208
|
||||
Z f81162c822de40652566c68321ce2c25
|
||||
|
@ -1 +1 @@
|
||||
69cf877283d362915edddf1822fbf7a9f86278b3
|
||||
aa580e368e3c398b8377b80342dfdd906324c248
|
12
src/where.c
12
src/where.c
@ -4058,13 +4058,13 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
|
||||
goto whereLoopInsert_noop;
|
||||
}
|
||||
}
|
||||
whereLoopXfer(db, p, pTemplate);
|
||||
#if WHERETRACE_ENABLED
|
||||
if( sqlite3WhereTrace & 0x8 ){
|
||||
sqlite3DebugPrintf("ins-best: ");
|
||||
sqlite3DebugPrintf(p->maskSelf==0 ? "ins-init: " : "ins-best: ");
|
||||
whereLoopPrint(pTemplate, pWInfo->pTabList);
|
||||
}
|
||||
#endif
|
||||
whereLoopXfer(db, p, pTemplate);
|
||||
return SQLITE_OK;
|
||||
}
|
||||
|
||||
@ -4138,7 +4138,7 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
|
||||
whereLoopInsert_noop:
|
||||
#if WHERETRACE_ENABLED
|
||||
if( sqlite3WhereTrace & 0x8 ){
|
||||
sqlite3DebugPrintf("ins-noop: ");
|
||||
sqlite3DebugPrintf(pBuilder->pBest ? "ins-skip: " : "ins-noop: ");
|
||||
whereLoopPrint(pTemplate, pWInfo->pTabList);
|
||||
}
|
||||
#endif
|
||||
@ -4283,9 +4283,8 @@ static int whereLoopAddBtreeIndex(
|
||||
}else{
|
||||
/* Each row involves a step of the index, then a binary search of
|
||||
** the main table */
|
||||
pNew->rRun = rLogSize>90 ?
|
||||
whereCostAdd(pNew->rRun, pNew->nOut+rLogSize-90) :
|
||||
pNew->rRun;
|
||||
WhereCost rStepAndSearch = rLogSize>80 ? rLogSize-80 : 1;
|
||||
pNew->rRun = whereCostAdd(pNew->rRun, rStepAndSearch);
|
||||
}
|
||||
/* TBD: Adjust nOut for additional constraints */
|
||||
rc = whereLoopInsert(pBuilder, pNew);
|
||||
@ -5255,6 +5254,7 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){
|
||||
Index *pIdx;
|
||||
|
||||
pWInfo = pBuilder->pWInfo;
|
||||
if( pWInfo->wctrlFlags & WHERE_FORCE_TABLE ) return 0;
|
||||
assert( pWInfo->pTabList->nSrc>=1 );
|
||||
pItem = pWInfo->pTabList->a;
|
||||
pTab = pItem->pTab;
|
||||
|
@ -48,5 +48,3 @@ if {$::tcl_platform(platform)=="unix"} {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
|
@ -97,10 +97,10 @@ do_test analyze3-1.1.1 {
|
||||
|
||||
do_eqp_test analyze3-1.1.2 {
|
||||
SELECT sum(y) FROM t1 WHERE x>200 AND x<300
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (x>? AND x<?) (~179 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (x>? AND x<?)}}
|
||||
do_eqp_test analyze3-1.1.3 {
|
||||
SELECT sum(y) FROM t1 WHERE x>0 AND x<1100
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (x>? AND x<?) (~959 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (x>? AND x<?)}}
|
||||
|
||||
do_test analyze3-1.1.4 {
|
||||
sf_execsql { SELECT sum(y) FROM t1 WHERE x>200 AND x<300 }
|
||||
@ -146,10 +146,10 @@ do_test analyze3-1.2.1 {
|
||||
} {}
|
||||
do_eqp_test analyze3-1.2.2 {
|
||||
SELECT sum(y) FROM t2 WHERE x>1 AND x<2
|
||||
} {0 0 0 {SEARCH TABLE t2 USING INDEX i2 (x>? AND x<?) (~196 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t2 USING INDEX i2 (x>? AND x<?)}}
|
||||
do_eqp_test analyze3-1.2.3 {
|
||||
SELECT sum(y) FROM t2 WHERE x>0 AND x<99
|
||||
} {0 0 0 {SEARCH TABLE t2 USING INDEX i2 (x>? AND x<?) (~968 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t2 USING INDEX i2 (x>? AND x<?)}}
|
||||
do_test analyze3-1.2.4 {
|
||||
sf_execsql { SELECT sum(y) FROM t2 WHERE x>12 AND x<20 }
|
||||
} {161 0 4760}
|
||||
@ -193,10 +193,10 @@ do_test analyze3-1.3.1 {
|
||||
} {}
|
||||
do_eqp_test analyze3-1.3.2 {
|
||||
SELECT sum(y) FROM t3 WHERE x>200 AND x<300
|
||||
} {0 0 0 {SEARCH TABLE t3 USING INDEX i3 (x>? AND x<?) (~156 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t3 USING INDEX i3 (x>? AND x<?)}}
|
||||
do_eqp_test analyze3-1.3.3 {
|
||||
SELECT sum(y) FROM t3 WHERE x>0 AND x<1100
|
||||
} {0 0 0 {SEARCH TABLE t3 USING INDEX i3 (x>? AND x<?) (~989 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t3 USING INDEX i3 (x>? AND x<?)}}
|
||||
|
||||
do_test analyze3-1.3.4 {
|
||||
sf_execsql { SELECT sum(y) FROM t3 WHERE x>200 AND x<300 }
|
||||
@ -248,10 +248,10 @@ do_test analyze3-2.1 {
|
||||
} {}
|
||||
do_eqp_test analyze3-2.2 {
|
||||
SELECT count(a) FROM t1 WHERE b LIKE 'a%'
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (b>? AND b<?) (~31250 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (b>? AND b<?)}}
|
||||
do_eqp_test analyze3-2.3 {
|
||||
SELECT count(a) FROM t1 WHERE b LIKE '%a'
|
||||
} {0 0 0 {SCAN TABLE t1 (~500000 rows)}}
|
||||
} {0 0 0 {SCAN TABLE t1}}
|
||||
|
||||
do_test analyze3-2.4 {
|
||||
sf_execsql { SELECT count(*) FROM t1 WHERE b LIKE 'a%' }
|
||||
@ -330,7 +330,7 @@ do_test analyze3-3.2.5 {
|
||||
do_test analyze3-3.2.6 {
|
||||
sqlite3_bind_text $S 1 "abc" 3
|
||||
sqlite3_expired $S
|
||||
} {0}
|
||||
} {1}
|
||||
do_test analyze3-3.2.7 {
|
||||
sqlite3_finalize $S
|
||||
} {SQLITE_OK}
|
||||
|
@ -38,7 +38,7 @@ do_test analyze4-1.0 {
|
||||
|
||||
# Should choose the t1a index since it is more specific than t1b.
|
||||
db eval {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=5 AND b IS NULL}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
|
||||
# Verify that the t1b index shows that it does not narrow down the
|
||||
# search any at all.
|
||||
|
@ -61,14 +61,14 @@ do_test analyze6-1.0 {
|
||||
#
|
||||
do_test analyze6-1.1 {
|
||||
eqp {SELECT count(*) FROM ev, cat WHERE x=y}
|
||||
} {0 0 1 {SCAN TABLE cat USING COVERING INDEX catx (~16 rows)} 0 1 0 {SEARCH TABLE ev USING COVERING INDEX evy (y=?) (~32 rows)}}
|
||||
} {0 0 1 {SCAN TABLE cat USING COVERING INDEX catx} 0 1 0 {SEARCH TABLE ev USING COVERING INDEX evy (y=?)}}
|
||||
|
||||
# The same plan is chosen regardless of the order of the tables in the
|
||||
# FROM clause.
|
||||
#
|
||||
do_test analyze6-1.2 {
|
||||
eqp {SELECT count(*) FROM cat, ev WHERE x=y}
|
||||
} {0 0 0 {SCAN TABLE cat USING COVERING INDEX catx (~16 rows)} 0 1 1 {SEARCH TABLE ev USING COVERING INDEX evy (y=?) (~32 rows)}}
|
||||
} {0 0 0 {SCAN TABLE cat USING COVERING INDEX catx} 0 1 1 {SEARCH TABLE ev USING COVERING INDEX evy (y=?)}}
|
||||
|
||||
|
||||
# Ticket [83ea97620bd3101645138b7b0e71c12c5498fe3d] 2011-03-30
|
||||
@ -82,26 +82,26 @@ do_test analyze6-2.1 {
|
||||
ANALYZE;
|
||||
}
|
||||
eqp {SELECT * FROM t201 WHERE z=5}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX t201z (z=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX t201z (z=?)}}
|
||||
do_test analyze6-2.2 {
|
||||
eqp {SELECT * FROM t201 WHERE y=5}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)}}
|
||||
do_test analyze6-2.3 {
|
||||
eqp {SELECT * FROM t201 WHERE x=5}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)}}
|
||||
do_test analyze6-2.4 {
|
||||
execsql {
|
||||
INSERT INTO t201 VALUES(1,2,3);
|
||||
ANALYZE t201;
|
||||
}
|
||||
eqp {SELECT * FROM t201 WHERE z=5}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX t201z (z=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX t201z (z=?)}}
|
||||
do_test analyze6-2.5 {
|
||||
eqp {SELECT * FROM t201 WHERE y=5}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)}}
|
||||
do_test analyze6-2.6 {
|
||||
eqp {SELECT * FROM t201 WHERE x=5}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)}}
|
||||
do_test analyze6-2.7 {
|
||||
execsql {
|
||||
INSERT INTO t201 VALUES(4,5,7);
|
||||
@ -111,12 +111,12 @@ do_test analyze6-2.7 {
|
||||
ANALYZE t201;
|
||||
}
|
||||
eqp {SELECT * FROM t201 WHERE z=5}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX t201z (z=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX t201z (z=?)}}
|
||||
do_test analyze6-2.8 {
|
||||
eqp {SELECT * FROM t201 WHERE y=5}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)}}
|
||||
do_test analyze6-2.9 {
|
||||
eqp {SELECT * FROM t201 WHERE x=5}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)}}
|
||||
|
||||
finish_test
|
||||
|
@ -37,13 +37,13 @@ do_test analyze7-1.0 {
|
||||
WHERE value BETWEEN 1 AND 256;
|
||||
EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123;
|
||||
}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
do_test analyze7-1.1 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=123;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
|
||||
do_test analyze7-1.2 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
|
||||
|
||||
# Run an analyze on one of the three indices. Verify that this
|
||||
# effects the row-count estimate on the one query that uses that
|
||||
@ -53,20 +53,20 @@ do_test analyze7-2.0 {
|
||||
execsql {ANALYZE t1a;}
|
||||
db cache flush
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
do_test analyze7-2.1 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=123;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
|
||||
do_test analyze7-2.2 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
|
||||
|
||||
# Verify that since the query planner now things that t1a is more
|
||||
# selective than t1b, it prefers to use t1a.
|
||||
#
|
||||
do_test analyze7-2.3 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123 AND b=123}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
|
||||
# Run an analysis on another of the three indices. Verify that this
|
||||
# new analysis works and does not disrupt the previous analysis.
|
||||
@ -75,39 +75,39 @@ do_test analyze7-3.0 {
|
||||
execsql {ANALYZE t1cd;}
|
||||
db cache flush;
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
do_test analyze7-3.1 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=123;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
|
||||
do_test analyze7-3.2.1 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=?;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?) (~86 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
|
||||
ifcapable stat3 {
|
||||
# If ENABLE_STAT3 is defined, SQLite comes up with a different estimated
|
||||
# row count for (c=2) than it does for (c=?).
|
||||
do_test analyze7-3.2.2 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?) (~57 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
|
||||
} else {
|
||||
# If ENABLE_STAT3 is not defined, the expected row count for (c=2) is the
|
||||
# same as that for (c=?).
|
||||
do_test analyze7-3.2.3 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?) (~86 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
|
||||
}
|
||||
do_test analyze7-3.3 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123 AND b=123}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
ifcapable {!stat3} {
|
||||
do_test analyze7-3.4 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=123 AND b=123}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
|
||||
do_test analyze7-3.5 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123 AND c=123}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
}
|
||||
do_test analyze7-3.6 {
|
||||
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=123 AND d=123 AND b=123}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=? AND d=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=? AND d=?)}}
|
||||
|
||||
finish_test
|
||||
|
@ -61,25 +61,25 @@ do_test 1.0 {
|
||||
#
|
||||
do_test 1.1 {
|
||||
eqp {SELECT * FROM t1 WHERE a=100 AND b=55}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
|
||||
do_test 1.2 {
|
||||
eqp {SELECT * FROM t1 WHERE a=99 AND b=55}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
do_test 1.3 {
|
||||
eqp {SELECT * FROM t1 WHERE a=101 AND b=55}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
do_test 1.4 {
|
||||
eqp {SELECT * FROM t1 WHERE a=100 AND b=56}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
|
||||
do_test 1.5 {
|
||||
eqp {SELECT * FROM t1 WHERE a=99 AND b=56}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
do_test 1.6 {
|
||||
eqp {SELECT * FROM t1 WHERE a=101 AND b=56}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
do_test 2.1 {
|
||||
eqp {SELECT * FROM t1 WHERE a=100 AND b BETWEEN 50 AND 54}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?)}}
|
||||
|
||||
# There are many more values of c between 0 and 100000 than there are
|
||||
# between 800000 and 900000. So t1c is more selective for the latter
|
||||
@ -87,17 +87,17 @@ do_test 2.1 {
|
||||
#
|
||||
do_test 3.1 {
|
||||
eqp {SELECT * FROM t1 WHERE b BETWEEN 50 AND 54 AND c BETWEEN 0 AND 100000}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?) (~6 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?)}}
|
||||
do_test 3.2 {
|
||||
eqp {SELECT * FROM t1
|
||||
WHERE b BETWEEN 50 AND 54 AND c BETWEEN 800000 AND 900000}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1c (c>? AND c<?) (~4 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1c (c>? AND c<?)}}
|
||||
do_test 3.3 {
|
||||
eqp {SELECT * FROM t1 WHERE a=100 AND c BETWEEN 0 AND 100000}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?) (~63 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
|
||||
do_test 3.4 {
|
||||
eqp {SELECT * FROM t1
|
||||
WHERE a=100 AND c BETWEEN 800000 AND 900000}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1c (c>? AND c<?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX t1c (c>? AND c<?)}}
|
||||
|
||||
finish_test
|
||||
|
@ -66,4 +66,3 @@ sqlite3async_control halt never
|
||||
sqlite3async_shutdown
|
||||
set sqlite3async_trace 0
|
||||
finish_test
|
||||
|
||||
|
@ -147,18 +147,18 @@ do_execsql_test autoindex1-500 {
|
||||
SELECT b FROM t501
|
||||
WHERE t501.a IN (SELECT x FROM t502 WHERE y=?);
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?) (~25 rows)}
|
||||
0 0 0 {SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
0 0 0 {EXECUTE LIST SUBQUERY 1}
|
||||
1 0 0 {SCAN TABLE t502 (~100000 rows)}
|
||||
1 0 0 {SCAN TABLE t502}
|
||||
}
|
||||
do_execsql_test autoindex1-501 {
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT b FROM t501
|
||||
WHERE t501.a IN (SELECT x FROM t502 WHERE y=t501.b);
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t501 (~500000 rows)}
|
||||
0 0 0 {SCAN TABLE t501}
|
||||
0 0 0 {EXECUTE CORRELATED LIST SUBQUERY 1}
|
||||
1 0 0 {SEARCH TABLE t502 USING AUTOMATIC COVERING INDEX (y=?) (~7 rows)}
|
||||
1 0 0 {SEARCH TABLE t502 USING AUTOMATIC COVERING INDEX (y=?)}
|
||||
}
|
||||
do_execsql_test autoindex1-502 {
|
||||
EXPLAIN QUERY PLAN
|
||||
@ -166,9 +166,9 @@ do_execsql_test autoindex1-502 {
|
||||
WHERE t501.a=123
|
||||
AND t501.a IN (SELECT x FROM t502 WHERE y=t501.b);
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
0 0 0 {EXECUTE CORRELATED LIST SUBQUERY 1}
|
||||
1 0 0 {SCAN TABLE t502 (~100000 rows)}
|
||||
1 0 0 {SCAN TABLE t502}
|
||||
}
|
||||
|
||||
|
||||
@ -240,12 +240,12 @@ do_execsql_test autoindex1-600 {
|
||||
WHERE y.sheep_no IS NULL
|
||||
ORDER BY x.registering_flock;
|
||||
} {
|
||||
1 0 0 {SCAN TABLE sheep AS s (~1000000 rows)}
|
||||
1 1 1 {SEARCH TABLE flock_owner AS prev USING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date<?) (~2 rows)}
|
||||
1 0 0 {SCAN TABLE sheep AS s}
|
||||
1 1 1 {SEARCH TABLE flock_owner AS prev USING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date<?)}
|
||||
1 0 0 {EXECUTE CORRELATED SCALAR SUBQUERY 2}
|
||||
2 0 0 {SEARCH TABLE flock_owner AS later USING COVERING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date>? AND owner_change_date<?) (~1 rows)}
|
||||
0 0 0 {SCAN TABLE sheep AS x USING INDEX sheep_reg_flock_index (~1000000 rows)}
|
||||
0 1 1 {SEARCH SUBQUERY 1 AS y USING AUTOMATIC COVERING INDEX (sheep_no=?) (~8 rows)}
|
||||
2 0 0 {SEARCH TABLE flock_owner AS later USING COVERING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date>? AND owner_change_date<?)}
|
||||
0 0 0 {SCAN TABLE sheep AS x USING INDEX sheep_reg_flock_index}
|
||||
0 1 1 {SEARCH SUBQUERY 1 AS y USING AUTOMATIC COVERING INDEX (sheep_no=?)}
|
||||
}
|
||||
|
||||
|
||||
@ -253,7 +253,7 @@ do_execsql_test autoindex1-700 {
|
||||
CREATE TABLE t5(a, b, c);
|
||||
EXPLAIN QUERY PLAN SELECT a FROM t5 WHERE b=10 ORDER BY c;
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t5 (~100000 rows)}
|
||||
0 0 0 {SCAN TABLE t5}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
|
||||
|
@ -101,4 +101,3 @@ do_test 3.3 {
|
||||
do_test 3.4 { file size test.db2 } 0
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -55,4 +55,3 @@ do_faultsim_test 1 -prep {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -60,7 +60,7 @@ proc utf8 {str} {
|
||||
db close
|
||||
|
||||
# here's the list of file names we're testing
|
||||
set names {t 1 t. 1. t.d 1.d t-1 1-1 t.db <EFBFBD>.db <EFBFBD>.db <EFBFBD>.db <EFBFBD>.db <EFBFBD>.db}
|
||||
set names {t 1 t. 1. t.d 1.d t-1 1-1 t.db ä.db ë.db ö.db ü.db ÿ.db}
|
||||
|
||||
set i 0
|
||||
foreach name $names {
|
||||
|
@ -76,4 +76,3 @@ do_test 1.4.4 {
|
||||
} {SQLITE_OK}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -147,4 +147,3 @@ for {set i 127} {$i >= 0} {incr i -1} {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -1368,13 +1368,13 @@ do_execsql_test 4.10.0 {
|
||||
}
|
||||
do_createtable_tests 4.10 {
|
||||
1 "EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b = 5"
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (b=?) (~1 rows)}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (b=?)}}
|
||||
|
||||
2 "EXPLAIN QUERY PLAN SELECT * FROM t2 ORDER BY b, c"
|
||||
{0 0 0 {SCAN TABLE t2 USING INDEX sqlite_autoindex_t2_1 (~1000000 rows)}}
|
||||
{0 0 0 {SCAN TABLE t2 USING INDEX sqlite_autoindex_t2_1}}
|
||||
|
||||
3 "EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE b=10 AND c>10"
|
||||
{0 0 0 {SEARCH TABLE t2 USING INDEX sqlite_autoindex_t2_1 (b=? AND c>?) (~2 rows)}}
|
||||
{0 0 0 {SEARCH TABLE t2 USING INDEX sqlite_autoindex_t2_1 (b=? AND c>?)}}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-45493-35653 A CHECK constraint may be attached to a
|
||||
|
@ -974,15 +974,15 @@ do_execsql_test e_fkey-25.2 {
|
||||
EXPLAIN QUERY PLAN DELETE FROM artist WHERE 1;
|
||||
EXPLAIN QUERY PLAN SELECT rowid FROM track WHERE trackartist = ?;
|
||||
} {
|
||||
0 0 0 {SCAN TABLE artist (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE track (~100000 rows)}
|
||||
0 0 0 {SCAN TABLE artist}
|
||||
0 0 0 {SCAN TABLE track}
|
||||
}
|
||||
do_execsql_test e_fkey-25.3 {
|
||||
PRAGMA foreign_keys = ON;
|
||||
EXPLAIN QUERY PLAN DELETE FROM artist WHERE 1;
|
||||
} {
|
||||
0 0 0 {SCAN TABLE artist (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE track (~100000 rows)}
|
||||
0 0 0 {SCAN TABLE artist}
|
||||
0 0 0 {SCAN TABLE track}
|
||||
}
|
||||
do_test e_fkey-25.4 {
|
||||
execsql {
|
||||
@ -1099,15 +1099,15 @@ do_test e_fkey-27.2 {
|
||||
do_execsql_test e_fkey-27.3 {
|
||||
EXPLAIN QUERY PLAN UPDATE artist SET artistid = ?, artistname = ?
|
||||
} {
|
||||
0 0 0 {SCAN TABLE artist (~1000000 rows)}
|
||||
0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?) (~10 rows)}
|
||||
0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?) (~10 rows)}
|
||||
0 0 0 {SCAN TABLE artist}
|
||||
0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?)}
|
||||
0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?)}
|
||||
}
|
||||
do_execsql_test e_fkey-27.4 {
|
||||
EXPLAIN QUERY PLAN DELETE FROM artist
|
||||
} {
|
||||
0 0 0 {SCAN TABLE artist (~1000000 rows)}
|
||||
0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?) (~10 rows)}
|
||||
0 0 0 {SCAN TABLE artist}
|
||||
0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?)}
|
||||
}
|
||||
|
||||
|
||||
|
256
test/eqp.test
256
test/eqp.test
@ -43,37 +43,37 @@ do_execsql_test 1.1 {
|
||||
do_eqp_test 1.2 {
|
||||
SELECT * FROM t2, t1 WHERE t1.a=1 OR t1.b=2;
|
||||
} {
|
||||
0 0 1 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~10 rows)}
|
||||
0 0 1 {SEARCH TABLE t1 USING INDEX i2 (b=?) (~10 rows)}
|
||||
0 1 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
0 0 1 {SEARCH TABLE t1 USING INDEX i1 (a=?)}
|
||||
0 0 1 {SEARCH TABLE t1 USING INDEX i2 (b=?)}
|
||||
0 1 0 {SCAN TABLE t2}
|
||||
}
|
||||
do_eqp_test 1.3 {
|
||||
SELECT * FROM t2 CROSS JOIN t1 WHERE t1.a=1 OR t1.b=2;
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
0 1 1 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~10 rows)}
|
||||
0 1 1 {SEARCH TABLE t1 USING INDEX i2 (b=?) (~10 rows)}
|
||||
0 0 0 {SCAN TABLE t2}
|
||||
0 1 1 {SEARCH TABLE t1 USING INDEX i1 (a=?)}
|
||||
0 1 1 {SEARCH TABLE t1 USING INDEX i2 (b=?)}
|
||||
}
|
||||
do_eqp_test 1.3 {
|
||||
SELECT a FROM t1 ORDER BY a
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1}
|
||||
}
|
||||
do_eqp_test 1.4 {
|
||||
SELECT a FROM t1 ORDER BY +a
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
do_eqp_test 1.5 {
|
||||
SELECT a FROM t1 WHERE a=4
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?) (~10 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?)}
|
||||
}
|
||||
do_eqp_test 1.6 {
|
||||
SELECT DISTINCT count(*) FROM t3 GROUP BY a;
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t3 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t3}
|
||||
0 0 0 {USE TEMP B-TREE FOR GROUP BY}
|
||||
0 0 0 {USE TEMP B-TREE FOR DISTINCT}
|
||||
}
|
||||
@ -81,40 +81,40 @@ do_eqp_test 1.6 {
|
||||
do_eqp_test 1.7 {
|
||||
SELECT * FROM t3 JOIN (SELECT 1)
|
||||
} {
|
||||
0 0 1 {SCAN SUBQUERY 1 (~1 rows)}
|
||||
0 1 0 {SCAN TABLE t3 (~1000000 rows)}
|
||||
0 0 1 {SCAN SUBQUERY 1}
|
||||
0 1 0 {SCAN TABLE t3}
|
||||
}
|
||||
do_eqp_test 1.8 {
|
||||
SELECT * FROM t3 JOIN (SELECT 1 UNION SELECT 2)
|
||||
} {
|
||||
1 0 0 {COMPOUND SUBQUERIES 2 AND 3 USING TEMP B-TREE (UNION)}
|
||||
0 0 1 {SCAN SUBQUERY 1 (~2 rows)}
|
||||
0 1 0 {SCAN TABLE t3 (~1000000 rows)}
|
||||
0 0 1 {SCAN SUBQUERY 1}
|
||||
0 1 0 {SCAN TABLE t3}
|
||||
}
|
||||
do_eqp_test 1.9 {
|
||||
SELECT * FROM t3 JOIN (SELECT 1 EXCEPT SELECT a FROM t3 LIMIT 17)
|
||||
} {
|
||||
3 0 0 {SCAN TABLE t3 (~1000000 rows)}
|
||||
3 0 0 {SCAN TABLE t3}
|
||||
1 0 0 {COMPOUND SUBQUERIES 2 AND 3 USING TEMP B-TREE (EXCEPT)}
|
||||
0 0 1 {SCAN SUBQUERY 1 (~17 rows)}
|
||||
0 1 0 {SCAN TABLE t3 (~1000000 rows)}
|
||||
0 0 1 {SCAN SUBQUERY 1}
|
||||
0 1 0 {SCAN TABLE t3}
|
||||
}
|
||||
do_eqp_test 1.10 {
|
||||
SELECT * FROM t3 JOIN (SELECT 1 INTERSECT SELECT a FROM t3 LIMIT 17)
|
||||
} {
|
||||
3 0 0 {SCAN TABLE t3 (~1000000 rows)}
|
||||
3 0 0 {SCAN TABLE t3}
|
||||
1 0 0 {COMPOUND SUBQUERIES 2 AND 3 USING TEMP B-TREE (INTERSECT)}
|
||||
0 0 1 {SCAN SUBQUERY 1 (~1 rows)}
|
||||
0 1 0 {SCAN TABLE t3 (~1000000 rows)}
|
||||
0 0 1 {SCAN SUBQUERY 1}
|
||||
0 1 0 {SCAN TABLE t3}
|
||||
}
|
||||
|
||||
do_eqp_test 1.11 {
|
||||
SELECT * FROM t3 JOIN (SELECT 1 UNION ALL SELECT a FROM t3 LIMIT 17)
|
||||
} {
|
||||
3 0 0 {SCAN TABLE t3 (~1000000 rows)}
|
||||
3 0 0 {SCAN TABLE t3}
|
||||
1 0 0 {COMPOUND SUBQUERIES 2 AND 3 (UNION ALL)}
|
||||
0 0 1 {SCAN SUBQUERY 1 (~17 rows)}
|
||||
0 1 0 {SCAN TABLE t3 (~1000000 rows)}
|
||||
0 0 1 {SCAN SUBQUERY 1}
|
||||
0 1 0 {SCAN TABLE t3}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -129,48 +129,48 @@ do_execsql_test 2.1 {
|
||||
}
|
||||
|
||||
det 2.2.1 "SELECT DISTINCT min(x), max(x) FROM t1 GROUP BY x ORDER BY 1" {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {USE TEMP B-TREE FOR GROUP BY}
|
||||
0 0 0 {USE TEMP B-TREE FOR DISTINCT}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
det 2.2.2 "SELECT DISTINCT min(x), max(x) FROM t2 GROUP BY x ORDER BY 1" {
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1}
|
||||
0 0 0 {USE TEMP B-TREE FOR DISTINCT}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
det 2.2.3 "SELECT DISTINCT * FROM t1" {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {USE TEMP B-TREE FOR DISTINCT}
|
||||
}
|
||||
det 2.2.4 "SELECT DISTINCT * FROM t1, t2" {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 1 1 {SCAN TABLE t2 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 1 1 {SCAN TABLE t2}
|
||||
0 0 0 {USE TEMP B-TREE FOR DISTINCT}
|
||||
}
|
||||
det 2.2.5 "SELECT DISTINCT * FROM t1, t2 ORDER BY t1.x" {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 1 1 {SCAN TABLE t2 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 1 1 {SCAN TABLE t2}
|
||||
0 0 0 {USE TEMP B-TREE FOR DISTINCT}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
det 2.2.6 "SELECT DISTINCT t2.x FROM t1, t2 ORDER BY t2.x" {
|
||||
0 0 1 {SCAN TABLE t2 USING COVERING INDEX t2i1 (~1000000 rows)}
|
||||
0 1 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 0 1 {SCAN TABLE t2 USING COVERING INDEX t2i1}
|
||||
0 1 0 {SCAN TABLE t1}
|
||||
}
|
||||
|
||||
det 2.3.1 "SELECT max(x) FROM t2" {
|
||||
0 0 0 {SEARCH TABLE t2 USING COVERING INDEX t2i1 (~1 rows)}
|
||||
0 0 0 {SEARCH TABLE t2 USING COVERING INDEX t2i1}
|
||||
}
|
||||
det 2.3.2 "SELECT min(x) FROM t2" {
|
||||
0 0 0 {SEARCH TABLE t2 USING COVERING INDEX t2i1 (~1 rows)}
|
||||
0 0 0 {SEARCH TABLE t2 USING COVERING INDEX t2i1}
|
||||
}
|
||||
det 2.3.3 "SELECT min(x), max(x) FROM t2" {
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1}
|
||||
}
|
||||
|
||||
det 2.4.1 "SELECT * FROM t1 WHERE rowid=?" {
|
||||
0 0 0 {SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
|
||||
|
||||
@ -181,39 +181,39 @@ det 2.4.1 "SELECT * FROM t1 WHERE rowid=?" {
|
||||
do_eqp_test 3.1.1 {
|
||||
SELECT (SELECT x FROM t1 AS sub) FROM t1;
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {EXECUTE SCALAR SUBQUERY 1}
|
||||
1 0 0 {SCAN TABLE t1 AS sub (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1 AS sub}
|
||||
}
|
||||
do_eqp_test 3.1.2 {
|
||||
SELECT * FROM t1 WHERE (SELECT x FROM t1 AS sub);
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {EXECUTE SCALAR SUBQUERY 1}
|
||||
1 0 0 {SCAN TABLE t1 AS sub (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1 AS sub}
|
||||
}
|
||||
do_eqp_test 3.1.3 {
|
||||
SELECT * FROM t1 WHERE (SELECT x FROM t1 AS sub ORDER BY y);
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {EXECUTE SCALAR SUBQUERY 1}
|
||||
1 0 0 {SCAN TABLE t1 AS sub (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1 AS sub}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
do_eqp_test 3.1.4 {
|
||||
SELECT * FROM t1 WHERE (SELECT x FROM t2 ORDER BY x);
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {EXECUTE SCALAR SUBQUERY 1}
|
||||
1 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1}
|
||||
}
|
||||
|
||||
det 3.2.1 {
|
||||
SELECT * FROM (SELECT * FROM t1 ORDER BY x LIMIT 10) ORDER BY y LIMIT 5
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {SCAN SUBQUERY 1 (~10 rows)}
|
||||
0 0 0 {SCAN SUBQUERY 1}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
det 3.2.2 {
|
||||
@ -222,34 +222,34 @@ det 3.2.2 {
|
||||
(SELECT * FROM t2 ORDER BY x LIMIT 10) AS x2
|
||||
ORDER BY x2.y LIMIT 5
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
2 0 0 {SCAN TABLE t2 USING INDEX t2i1 (~1000000 rows)}
|
||||
0 0 0 {SCAN SUBQUERY 1 AS x1 (~10 rows)}
|
||||
0 1 1 {SCAN SUBQUERY 2 AS x2 (~10 rows)}
|
||||
2 0 0 {SCAN TABLE t2 USING INDEX t2i1}
|
||||
0 0 0 {SCAN SUBQUERY 1 AS x1}
|
||||
0 1 1 {SCAN SUBQUERY 2 AS x2}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
|
||||
det 3.3.1 {
|
||||
SELECT * FROM t1 WHERE y IN (SELECT y FROM t2)
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 (~100000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {EXECUTE LIST SUBQUERY 1}
|
||||
1 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t2}
|
||||
}
|
||||
det 3.3.2 {
|
||||
SELECT * FROM t1 WHERE y IN (SELECT y FROM t2 WHERE t1.x!=t2.x)
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 (~500000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {EXECUTE CORRELATED LIST SUBQUERY 1}
|
||||
1 0 0 {SCAN TABLE t2 (~500000 rows)}
|
||||
1 0 0 {SCAN TABLE t2}
|
||||
}
|
||||
det 3.3.3 {
|
||||
SELECT * FROM t1 WHERE EXISTS (SELECT y FROM t2 WHERE t1.x!=t2.x)
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 (~500000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {EXECUTE CORRELATED SCALAR SUBQUERY 1}
|
||||
1 0 0 {SCAN TABLE t2 (~500000 rows)}
|
||||
1 0 0 {SCAN TABLE t2}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -258,43 +258,43 @@ det 3.3.3 {
|
||||
do_eqp_test 4.1.1 {
|
||||
SELECT * FROM t1 UNION ALL SELECT * FROM t2
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
2 0 0 {SCAN TABLE t2}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (UNION ALL)}
|
||||
}
|
||||
do_eqp_test 4.1.2 {
|
||||
SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY 2
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
2 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2}
|
||||
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (UNION ALL)}
|
||||
}
|
||||
do_eqp_test 4.1.3 {
|
||||
SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY 2
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
2 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2}
|
||||
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (UNION)}
|
||||
}
|
||||
do_eqp_test 4.1.4 {
|
||||
SELECT * FROM t1 INTERSECT SELECT * FROM t2 ORDER BY 2
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
2 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2}
|
||||
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (INTERSECT)}
|
||||
}
|
||||
do_eqp_test 4.1.5 {
|
||||
SELECT * FROM t1 EXCEPT SELECT * FROM t2 ORDER BY 2
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
2 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2}
|
||||
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (EXCEPT)}
|
||||
}
|
||||
@ -302,35 +302,35 @@ do_eqp_test 4.1.5 {
|
||||
do_eqp_test 4.2.2 {
|
||||
SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY 1
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
2 0 0 {SCAN TABLE t2 USING INDEX t2i1 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2 USING INDEX t2i1}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (UNION ALL)}
|
||||
}
|
||||
do_eqp_test 4.2.3 {
|
||||
SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY 1
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
2 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2}
|
||||
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (UNION)}
|
||||
}
|
||||
do_eqp_test 4.2.4 {
|
||||
SELECT * FROM t1 INTERSECT SELECT * FROM t2 ORDER BY 1
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
2 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2}
|
||||
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (INTERSECT)}
|
||||
}
|
||||
do_eqp_test 4.2.5 {
|
||||
SELECT * FROM t1 EXCEPT SELECT * FROM t2 ORDER BY 1
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
1 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
2 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2}
|
||||
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (EXCEPT)}
|
||||
}
|
||||
@ -338,28 +338,28 @@ do_eqp_test 4.2.5 {
|
||||
do_eqp_test 4.3.1 {
|
||||
SELECT x FROM t1 UNION SELECT x FROM t2
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1}
|
||||
2 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 USING TEMP B-TREE (UNION)}
|
||||
}
|
||||
|
||||
do_eqp_test 4.3.2 {
|
||||
SELECT x FROM t1 UNION SELECT x FROM t2 UNION SELECT x FROM t1
|
||||
} {
|
||||
2 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
3 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t1}
|
||||
3 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1}
|
||||
1 0 0 {COMPOUND SUBQUERIES 2 AND 3 USING TEMP B-TREE (UNION)}
|
||||
4 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
4 0 0 {SCAN TABLE t1}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 4 USING TEMP B-TREE (UNION)}
|
||||
}
|
||||
do_eqp_test 4.3.3 {
|
||||
SELECT x FROM t1 UNION SELECT x FROM t2 UNION SELECT x FROM t1 ORDER BY 1
|
||||
} {
|
||||
2 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t1}
|
||||
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
3 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1 (~1000000 rows)}
|
||||
3 0 0 {SCAN TABLE t2 USING COVERING INDEX t2i1}
|
||||
1 0 0 {COMPOUND SUBQUERIES 2 AND 3 (UNION)}
|
||||
4 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
4 0 0 {SCAN TABLE t1}
|
||||
4 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 4 (UNION)}
|
||||
}
|
||||
@ -371,127 +371,127 @@ do_eqp_test 4.3.3 {
|
||||
drop_all_tables
|
||||
|
||||
# EVIDENCE-OF: R-64208-08323 sqlite> EXPLAIN QUERY PLAN SELECT a, b
|
||||
# FROM t1 WHERE a=1; 0|0|0|SCAN TABLE t1 (~100000 rows)
|
||||
# FROM t1 WHERE a=1; 0|0|0|SCAN TABLE t1
|
||||
do_execsql_test 5.1.0 { CREATE TABLE t1(a, b) }
|
||||
det 5.1.1 "SELECT a, b FROM t1 WHERE a=1" {
|
||||
0 0 0 {SCAN TABLE t1 (~100000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-09022-44606 sqlite> CREATE INDEX i1 ON t1(a);
|
||||
# sqlite> EXPLAIN QUERY PLAN SELECT a, b FROM t1 WHERE a=1;
|
||||
# 0|0|0|SEARCH TABLE t1 USING INDEX i1 (a=?) (~10 rows)
|
||||
# 0|0|0|SEARCH TABLE t1 USING INDEX i1 (a=?)
|
||||
do_execsql_test 5.2.0 { CREATE INDEX i1 ON t1(a) }
|
||||
det 5.2.1 "SELECT a, b FROM t1 WHERE a=1" {
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~10 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-62228-34103 sqlite> CREATE INDEX i2 ON t1(a, b);
|
||||
# sqlite> EXPLAIN QUERY PLAN SELECT a, b FROM t1 WHERE a=1;
|
||||
# 0|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=?) (~10 rows)
|
||||
# 0|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)
|
||||
do_execsql_test 5.3.0 { CREATE INDEX i2 ON t1(a, b) }
|
||||
det 5.3.1 "SELECT a, b FROM t1 WHERE a=1" {
|
||||
0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=?) (~10 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-22253-05302 sqlite> EXPLAIN QUERY PLAN SELECT t1.*,
|
||||
# t2.* FROM t1, t2 WHERE t1.a=1 AND t1.b>2; 0|0|0|SEARCH TABLE t1
|
||||
# USING COVERING INDEX i2 (a=? AND b>?) (~3 rows) 0|1|1|SCAN TABLE t2
|
||||
# (~1000000 rows)
|
||||
# USING COVERING INDEX i2 (a=? AND b>?) 0|1|1|SCAN TABLE t2
|
||||
#
|
||||
do_execsql_test 5.4.0 {CREATE TABLE t2(c, d)}
|
||||
det 5.4.1 "SELECT t1.*, t2.* FROM t1, t2 WHERE t1.a=1 AND t1.b>2" {
|
||||
0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=? AND b>?) (~2 rows)}
|
||||
0 1 1 {SCAN TABLE t2 (~1000000 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=? AND b>?)}
|
||||
0 1 1 {SCAN TABLE t2}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-21040-07025 sqlite> EXPLAIN QUERY PLAN SELECT t1.*,
|
||||
# t2.* FROM t2, t1 WHERE t1.a=1 AND t1.b>2; 0|0|1|SEARCH TABLE t1
|
||||
# USING COVERING INDEX i2 (a=? AND b>?) (~3 rows) 0|1|0|SCAN TABLE t2
|
||||
# (~1000000 rows)
|
||||
# USING COVERING INDEX i2 (a=? AND b>?) 0|1|0|SCAN TABLE t2
|
||||
#
|
||||
det 5.5 "SELECT t1.*, t2.* FROM t2, t1 WHERE t1.a=1 AND t1.b>2" {
|
||||
0 0 1 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=? AND b>?) (~2 rows)}
|
||||
0 1 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
0 0 1 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=? AND b>?)}
|
||||
0 1 0 {SCAN TABLE t2}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-39007-61103 sqlite> CREATE INDEX i3 ON t1(b);
|
||||
# sqlite> EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=1 OR b=2;
|
||||
# 0|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=?) (~10 rows)
|
||||
# 0|0|0|SEARCH TABLE t1 USING INDEX i3 (b=?) (~10 rows)
|
||||
# 0|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)
|
||||
# 0|0|0|SEARCH TABLE t1 USING INDEX i3 (b=?)
|
||||
do_execsql_test 5.5.0 {CREATE INDEX i3 ON t1(b)}
|
||||
det 5.6.1 "SELECT * FROM t1 WHERE a=1 OR b=2" {
|
||||
0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=?) (~10 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX i3 (b=?) (~10 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX i3 (b=?)}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-33025-54904 sqlite> EXPLAIN QUERY PLAN SELECT c, d
|
||||
# FROM t2 ORDER BY c; 0|0|0|SCAN TABLE t2 (~1000000 rows) 0|0|0|USE TEMP
|
||||
# FROM t2 ORDER BY c; 0|0|0|SCAN TABLE t2 0|0|0|USE TEMP
|
||||
# B-TREE FOR ORDER BY
|
||||
det 5.7 "SELECT c, d FROM t2 ORDER BY c" {
|
||||
0 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t2}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-38854-22809 sqlite> CREATE INDEX i4 ON t2(c);
|
||||
# sqlite> EXPLAIN QUERY PLAN SELECT c, d FROM t2 ORDER BY c;
|
||||
# 0|0|0|SCAN TABLE t2 USING INDEX i4 (~1000000 rows)
|
||||
# 0|0|0|SCAN TABLE t2 USING INDEX i4
|
||||
do_execsql_test 5.8.0 {CREATE INDEX i4 ON t2(c)}
|
||||
det 5.8.1 "SELECT c, d FROM t2 ORDER BY c" {
|
||||
0 0 0 {SCAN TABLE t2 USING INDEX i4 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t2 USING INDEX i4}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-29884-43993 sqlite> EXPLAIN QUERY PLAN SELECT
|
||||
# (SELECT b FROM t1 WHERE a=0), (SELECT a FROM t1 WHERE b=t2.c) FROM t2;
|
||||
# 0|0|0|SCAN TABLE t2 (~1000000 rows) 0|0|0|EXECUTE SCALAR SUBQUERY 1
|
||||
# 1|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=?) (~10 rows)
|
||||
# 0|0|0|SCAN TABLE t2 0|0|0|EXECUTE SCALAR SUBQUERY 1
|
||||
# 1|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)
|
||||
# 0|0|0|EXECUTE CORRELATED SCALAR SUBQUERY 2 2|0|0|SEARCH TABLE t1 USING
|
||||
# INDEX i3 (b=?) (~10 rows)
|
||||
# INDEX i3 (b=?)
|
||||
det 5.9 {
|
||||
SELECT (SELECT b FROM t1 WHERE a=0), (SELECT a FROM t1 WHERE b=t2.c) FROM t2
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX i4 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX i4}
|
||||
0 0 0 {EXECUTE SCALAR SUBQUERY 1}
|
||||
1 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=?) (~10 rows)}
|
||||
1 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)}
|
||||
0 0 0 {EXECUTE CORRELATED SCALAR SUBQUERY 2}
|
||||
2 0 0 {SEARCH TABLE t1 USING INDEX i3 (b=?) (~10 rows)}
|
||||
2 0 0 {SEARCH TABLE t1 USING INDEX i3 (b=?)}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-17911-16445 sqlite> EXPLAIN QUERY PLAN SELECT
|
||||
# count(*) FROM (SELECT max(b) AS x FROM t1 GROUP BY a) GROUP BY x;
|
||||
# 1|0|0|SCAN TABLE t1 USING COVERING INDEX i2 (~1000000 rows) 0|0|0|SCAN
|
||||
# SUBQUERY 1 (~1000000 rows) 0|0|0|USE TEMP B-TREE FOR GROUP BY
|
||||
# 1|0|0|SCAN TABLE t1 USING COVERING INDEX i2 0|0|0|SCAN
|
||||
# SUBQUERY 1 0|0|0|USE TEMP B-TREE FOR GROUP BY
|
||||
det 5.10 {
|
||||
SELECT count(*) FROM (SELECT max(b) AS x FROM t1 GROUP BY a) GROUP BY x
|
||||
} {
|
||||
1 0 0 {SCAN TABLE t1 USING COVERING INDEX i2 (~1000000 rows)}
|
||||
0 0 0 {SCAN SUBQUERY 1 (~100 rows)}
|
||||
1 0 0 {SCAN TABLE t1 USING COVERING INDEX i2}
|
||||
0 0 0 {SCAN SUBQUERY 1}
|
||||
0 0 0 {USE TEMP B-TREE FOR GROUP BY}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-18544-33103 sqlite> EXPLAIN QUERY PLAN SELECT * FROM
|
||||
# (SELECT * FROM t2 WHERE c=1), t1; 0|0|0|SEARCH TABLE t2 USING INDEX i4
|
||||
# (c=?) (~10 rows) 0|1|1|SCAN TABLE t1 (~1000000 rows)
|
||||
# (c=?) 0|1|1|SCAN TABLE t1
|
||||
det 5.11 "SELECT * FROM (SELECT * FROM t2 WHERE c=1), t1" {
|
||||
0 0 0 {SEARCH TABLE t2 USING INDEX i4 (c=?) (~10 rows)}
|
||||
0 1 1 {SCAN TABLE t1 USING COVERING INDEX i2 (~1000000 rows)}
|
||||
0 0 0 {SEARCH TABLE t2 USING INDEX i4 (c=?)}
|
||||
0 1 1 {SCAN TABLE t1 USING COVERING INDEX i2}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-40701-42164 sqlite> EXPLAIN QUERY PLAN SELECT a FROM
|
||||
# t1 UNION SELECT c FROM t2; 1|0|0|SCAN TABLE t1 (~1000000 rows)
|
||||
# 2|0|0|SCAN TABLE t2 (~1000000 rows) 0|0|0|COMPOUND SUBQUERIES 1 AND 2
|
||||
# t1 UNION SELECT c FROM t2; 1|0|0|SCAN TABLE t1
|
||||
# 2|0|0|SCAN TABLE t2 0|0|0|COMPOUND SUBQUERIES 1 AND 2
|
||||
# USING TEMP B-TREE (UNION)
|
||||
det 5.12 "SELECT a FROM t1 UNION SELECT c FROM t2" {
|
||||
1 0 0 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2 USING COVERING INDEX i4 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1 USING COVERING INDEX i1}
|
||||
2 0 0 {SCAN TABLE t2 USING COVERING INDEX i4}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 USING TEMP B-TREE (UNION)}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-61538-24748 sqlite> EXPLAIN QUERY PLAN SELECT a FROM
|
||||
# t1 EXCEPT SELECT d FROM t2 ORDER BY 1; 1|0|0|SCAN TABLE t1 USING
|
||||
# COVERING INDEX i2 (~1000000 rows) 2|0|0|SCAN TABLE t2 (~1000000 rows)
|
||||
# COVERING INDEX i2 2|0|0|SCAN TABLE t2
|
||||
# 2|0|0|USE TEMP B-TREE FOR ORDER BY 0|0|0|COMPOUND SUBQUERIES 1 AND 2
|
||||
# (EXCEPT)
|
||||
det 5.13 "SELECT a FROM t1 EXCEPT SELECT d FROM t2 ORDER BY 1" {
|
||||
1 0 0 {SCAN TABLE t1 USING COVERING INDEX i2 (~1000000 rows)}
|
||||
2 0 0 {SCAN TABLE t2 (~1000000 rows)}
|
||||
1 0 0 {SCAN TABLE t1 USING COVERING INDEX i2}
|
||||
2 0 0 {SCAN TABLE t2}
|
||||
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (EXCEPT)}
|
||||
}
|
||||
@ -531,8 +531,8 @@ proc do_peqp_test {tn sql res} {
|
||||
do_peqp_test 6.1 {
|
||||
SELECT a FROM t1 EXCEPT SELECT d FROM t2 ORDER BY 1
|
||||
} [string trimleft {
|
||||
1 0 0 SCAN TABLE t1 USING COVERING INDEX i2 (~1000000 rows)
|
||||
2 0 0 SCAN TABLE t2 (~1000000 rows)
|
||||
1 0 0 SCAN TABLE t1 USING COVERING INDEX i2
|
||||
2 0 0 SCAN TABLE t2
|
||||
2 0 0 USE TEMP B-TREE FOR ORDER BY
|
||||
0 0 0 COMPOUND SUBQUERIES 1 AND 2 (EXCEPT)
|
||||
}]
|
||||
@ -550,7 +550,7 @@ do_execsql_test 7.0 {
|
||||
}
|
||||
|
||||
det 7.1 "SELECT count(*) FROM t1" {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
}
|
||||
|
||||
det 7.2 "SELECT count(*) FROM t2" {
|
||||
@ -572,7 +572,7 @@ db close
|
||||
sqlite3 db test.db
|
||||
|
||||
det 7.4 "SELECT count(*) FROM t1" {
|
||||
0 0 0 {SCAN TABLE t1 (~2 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
}
|
||||
|
||||
det 7.5 "SELECT count(*) FROM t2" {
|
||||
|
@ -506,4 +506,3 @@ do_execsql_test exclusive-6.5 {
|
||||
} {exclusive}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -143,4 +143,3 @@ if {!$skipwaltests} {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -248,4 +248,3 @@ do_test filefmt-4.4 {
|
||||
db2 close
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -224,4 +224,3 @@ do_catchsql_test fts3aa-7.5 {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -220,4 +220,3 @@ do_execsql_test 5.2 {
|
||||
} {0 6}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -193,5 +193,3 @@ do_test fts3token-internal {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
|
@ -707,4 +707,3 @@ foreach {tn create} {
|
||||
|
||||
set sqlite_fts3_enable_parentheses $sfep
|
||||
finish_test
|
||||
|
||||
|
@ -105,10 +105,10 @@ db func rec rec
|
||||
#
|
||||
do_execsql_test 2.1.1.1 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term='braid'
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 1: (~25 rows)} }
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 1:} }
|
||||
do_execsql_test 2.1.1.2 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term='braid'
|
||||
} {0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0: (~25 rows)}}
|
||||
} {0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:}}
|
||||
|
||||
# Now show that using "term='braid'" means the virtual table returns
|
||||
# only 1 row to SQLite, but "+term='braid'" means all 19 are returned.
|
||||
@ -154,24 +154,24 @@ do_execsql_test 2.1.5 { SELECT * FROM terms WHERE term=NULL } {}
|
||||
|
||||
do_execsql_test 2.2.1.1 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term>'brain'
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 2: (~25 rows)} }
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 2:} }
|
||||
do_execsql_test 2.2.1.2 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term>'brain'
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0: (~25 rows)} }
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:} }
|
||||
|
||||
do_execsql_test 2.2.1.3 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term<'brain'
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 4: (~25 rows)} }
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 4:} }
|
||||
do_execsql_test 2.2.1.4 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term<'brain'
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0: (~25 rows)} }
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:} }
|
||||
|
||||
do_execsql_test 2.2.1.5 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term BETWEEN 'brags' AND 'brain'
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 6: (~25 rows)} }
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 6:} }
|
||||
do_execsql_test 2.2.1.6 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term BETWEEN 'brags' AND 'brain'
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0: (~25 rows)} }
|
||||
} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:} }
|
||||
|
||||
do_test 2.2.2.1 {
|
||||
set cnt 0
|
||||
@ -335,7 +335,7 @@ foreach {tn sort orderby} {
|
||||
9 1 "ORDER BY occurrences DESC"
|
||||
} {
|
||||
|
||||
set res [list 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0: (~25 rows)}]
|
||||
set res [list 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:}]
|
||||
if {$sort} { lappend res 0 0 0 {USE TEMP B-TREE FOR ORDER BY} }
|
||||
|
||||
set sql "SELECT * FROM terms $orderby"
|
||||
@ -410,32 +410,32 @@ proc do_plansql_test {tn sql r} {
|
||||
do_plansql_test 4.2 {
|
||||
SELECT y FROM x2, terms WHERE y = term AND col = '*'
|
||||
} {
|
||||
0 0 0 {SCAN TABLE x2 (~1000000 rows)}
|
||||
0 1 1 {SCAN TABLE terms VIRTUAL TABLE INDEX 1: (~25 rows)}
|
||||
0 0 0 {SCAN TABLE x2}
|
||||
0 1 1 {SCAN TABLE terms VIRTUAL TABLE INDEX 1:}
|
||||
a b c d e f g h i j k l
|
||||
}
|
||||
|
||||
do_plansql_test 4.3 {
|
||||
SELECT y FROM terms, x2 WHERE y = term AND col = '*'
|
||||
} {
|
||||
0 0 1 {SCAN TABLE x2 (~1000000 rows)}
|
||||
0 1 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 1: (~25 rows)}
|
||||
0 0 1 {SCAN TABLE x2}
|
||||
0 1 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 1:}
|
||||
a b c d e f g h i j k l
|
||||
}
|
||||
|
||||
do_plansql_test 4.4 {
|
||||
SELECT y FROM x3, terms WHERE y = term AND col = '*'
|
||||
} {
|
||||
0 0 1 {SCAN TABLE terms VIRTUAL TABLE INDEX 0: (~25 rows)}
|
||||
0 1 0 {SEARCH TABLE x3 USING COVERING INDEX i1 (y=?) (~10 rows)}
|
||||
0 0 1 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:}
|
||||
0 1 0 {SEARCH TABLE x3 USING COVERING INDEX i1 (y=?)}
|
||||
a b c d e f g h i j k l
|
||||
}
|
||||
|
||||
do_plansql_test 4.5 {
|
||||
SELECT y FROM terms, x3 WHERE y = term AND occurrences>1 AND col = '*'
|
||||
} {
|
||||
0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0: (~25 rows)}
|
||||
0 1 1 {SEARCH TABLE x3 USING COVERING INDEX i1 (y=?) (~10 rows)}
|
||||
0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:}
|
||||
0 1 1 {SEARCH TABLE x3 USING COVERING INDEX i1 (y=?)}
|
||||
a k l
|
||||
}
|
||||
|
||||
|
@ -166,4 +166,3 @@ do_test 5.3.1 { sqlite3_extended_errcode db } SQLITE_CORRUPT_VTAB
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -153,4 +153,3 @@ foreach {tn sql} {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -204,7 +204,3 @@ do_faultsim_test fts3expr3-fault-1 -faults oom-* -body {
|
||||
|
||||
set sqlite_fts3_enable_parentheses 0
|
||||
finish_test
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -301,4 +301,3 @@ do_write_test fts3_malloc-5.3 ft_content {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -427,4 +427,3 @@ do_execsql_test 8.3 {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -59,4 +59,3 @@ do_execsql_test 1.3 {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -118,26 +118,26 @@ do_test fts3query-4.1 {
|
||||
do_eqp_test fts3query-4.2 {
|
||||
SELECT t1.number FROM t1, ft WHERE t1.number=ft.rowid ORDER BY t1.date
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)}
|
||||
0 1 1 {SCAN TABLE ft VIRTUAL TABLE INDEX 1: (~25 rows)}
|
||||
0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1}
|
||||
0 1 1 {SCAN TABLE ft VIRTUAL TABLE INDEX 1:}
|
||||
}
|
||||
do_eqp_test fts3query-4.3 {
|
||||
SELECT t1.number FROM ft, t1 WHERE t1.number=ft.rowid ORDER BY t1.date
|
||||
} {
|
||||
0 0 1 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)}
|
||||
0 1 0 {SCAN TABLE ft VIRTUAL TABLE INDEX 1: (~25 rows)}
|
||||
0 0 1 {SCAN TABLE t1 USING COVERING INDEX i1}
|
||||
0 1 0 {SCAN TABLE ft VIRTUAL TABLE INDEX 1:}
|
||||
}
|
||||
do_eqp_test fts3query-4.4 {
|
||||
SELECT t1.number FROM t1, bt WHERE t1.number=bt.rowid ORDER BY t1.date
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)}
|
||||
0 1 1 {SEARCH TABLE bt USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1}
|
||||
0 1 1 {SEARCH TABLE bt USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
do_eqp_test fts3query-4.5 {
|
||||
SELECT t1.number FROM bt, t1 WHERE t1.number=bt.rowid ORDER BY t1.date
|
||||
} {
|
||||
0 0 1 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)}
|
||||
0 1 0 {SEARCH TABLE bt USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 1 {SCAN TABLE t1 USING COVERING INDEX i1}
|
||||
0 1 0 {SEARCH TABLE bt USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
|
||||
|
||||
|
@ -174,4 +174,3 @@ dbW close
|
||||
dbR close
|
||||
sqlite3_enable_shared_cache $::enable_shared_cache
|
||||
finish_test
|
||||
|
||||
|
@ -432,10 +432,10 @@ foreach {DO_MALLOC_TEST enc} {
|
||||
{2 2 1 3 3 3 6 3 0 0 0 2 3 2}
|
||||
}]
|
||||
|
||||
# EVIDENCE-OF: R-40630-02268 If used within a SELECT that uses the
|
||||
# "query by rowid" or "linear scan" strategies, then the snippet and
|
||||
# offsets both return an empty string, and the matchinfo function
|
||||
# returns a blob value zero bytes in size.
|
||||
# EVIDENCE-OF: R-40630-02268 If used within a SELECT that uses the
|
||||
# "query by rowid" or "linear scan" strategies, then the snippet and
|
||||
# offsets both return an empty string, and the matchinfo function
|
||||
# returns a blob value zero bytes in size.
|
||||
#
|
||||
set r 1000000 ;# A rowid that exists in table ft
|
||||
do_select_test $T.10.0 { SELECT rowid FROM ft WHERE rowid = $r } $r
|
||||
|
@ -182,4 +182,3 @@ do_execsql_test 3.2 {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -113,5 +113,3 @@ do_catchsql_test 2.1 {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
|
@ -45,5 +45,3 @@ do_faultsim_test fts3tok_err-2 -faults oom* -prep {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
|
@ -623,4 +623,3 @@ do_execsql_test 10.7 {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -269,4 +269,3 @@ db close
|
||||
tvfs delete
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -87,4 +87,3 @@ do_test 3.3 {
|
||||
} {}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -67,4 +67,3 @@ do_faultsim_test 3 -prep {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -151,4 +151,3 @@ foreach {T jrnl_mode} {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -42,15 +42,15 @@ proc EQP {sql} {
|
||||
#
|
||||
do_execsql_test indexedby-1.2 {
|
||||
EXPLAIN QUERY PLAN select * from t1 WHERE a = 10;
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
|
||||
do_execsql_test indexedby-1.3 {
|
||||
EXPLAIN QUERY PLAN select * from t1 ;
|
||||
} {0 0 0 {SCAN TABLE t1 (~1000000 rows)}}
|
||||
} {0 0 0 {SCAN TABLE t1}}
|
||||
do_execsql_test indexedby-1.4 {
|
||||
EXPLAIN QUERY PLAN select * from t1, t2 WHERE c = 10;
|
||||
} {
|
||||
0 0 1 {SEARCH TABLE t2 USING INDEX i3 (c=?) (~10 rows)}
|
||||
0 1 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 0 1 {SEARCH TABLE t2 USING INDEX i3 (c=?)}
|
||||
0 1 0 {SCAN TABLE t1}
|
||||
}
|
||||
|
||||
# Parser tests. Test that an INDEXED BY or NOT INDEX clause can be
|
||||
@ -85,15 +85,15 @@ do_test indexedby-2.7 {
|
||||
#
|
||||
do_execsql_test indexedby-3.1 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM t1 NOT INDEXED WHERE a = 'one' AND b = 'two'
|
||||
} {0 0 0 {SCAN TABLE t1 (~10000 rows)}}
|
||||
} {0 0 0 {SCAN TABLE t1}}
|
||||
do_execsql_test indexedby-3.2 {
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT * FROM t1 INDEXED BY i1 WHERE a = 'one' AND b = 'two'
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
|
||||
do_execsql_test indexedby-3.3 {
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT * FROM t1 INDEXED BY i2 WHERE a = 'one' AND b = 'two'
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i2 (b=?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i2 (b=?)}}
|
||||
do_test indexedby-3.4 {
|
||||
catchsql { SELECT * FROM t1 INDEXED BY i2 WHERE a = 'one' }
|
||||
} {1 {cannot use index: i2}}
|
||||
@ -110,11 +110,11 @@ do_test indexedby-3.7 {
|
||||
do_execsql_test indexedby-3.8 {
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT * FROM t3 INDEXED BY sqlite_autoindex_t3_1 ORDER BY e
|
||||
} {0 0 0 {SCAN TABLE t3 USING INDEX sqlite_autoindex_t3_1 (~1000000 rows)}}
|
||||
} {0 0 0 {SCAN TABLE t3 USING INDEX sqlite_autoindex_t3_1}}
|
||||
do_execsql_test indexedby-3.9 {
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT * FROM t3 INDEXED BY sqlite_autoindex_t3_1 WHERE e = 10
|
||||
} {0 0 0 {SEARCH TABLE t3 USING INDEX sqlite_autoindex_t3_1 (e=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t3 USING INDEX sqlite_autoindex_t3_1 (e=?)}}
|
||||
do_test indexedby-3.10 {
|
||||
catchsql { SELECT * FROM t3 INDEXED BY sqlite_autoindex_t3_1 WHERE f = 10 }
|
||||
} {1 {cannot use index: sqlite_autoindex_t3_1}}
|
||||
@ -127,14 +127,14 @@ do_test indexedby-3.11 {
|
||||
do_execsql_test indexedby-4.1 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM t1, t2 WHERE a = c
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t1 (~1000000 rows)}
|
||||
0 1 1 {SEARCH TABLE t2 USING INDEX i3 (c=?) (~10 rows)}
|
||||
0 0 0 {SCAN TABLE t1}
|
||||
0 1 1 {SEARCH TABLE t2 USING INDEX i3 (c=?)}
|
||||
}
|
||||
do_execsql_test indexedby-4.2 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM t1 INDEXED BY i1, t2 WHERE a = c
|
||||
} {
|
||||
0 0 1 {SCAN TABLE t2 (~1000000 rows)}
|
||||
0 1 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~10 rows)}
|
||||
0 0 1 {SCAN TABLE t2}
|
||||
0 1 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}
|
||||
}
|
||||
do_test indexedby-4.3 {
|
||||
catchsql {
|
||||
@ -154,10 +154,10 @@ do_test indexedby-4.4 {
|
||||
do_execsql_test indexedby-5.1 {
|
||||
CREATE VIEW v2 AS SELECT * FROM t1 INDEXED BY i1 WHERE a > 5;
|
||||
EXPLAIN QUERY PLAN SELECT * FROM v2
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a>?) (~250000 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a>?)}}
|
||||
do_execsql_test indexedby-5.2 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM v2 WHERE b = 10
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a>?) (~25000 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a>?)}}
|
||||
do_test indexedby-5.3 {
|
||||
execsql { DROP INDEX i1 }
|
||||
catchsql { SELECT * FROM v2 }
|
||||
@ -178,28 +178,28 @@ do_test indexedby-5.5 {
|
||||
#
|
||||
do_execsql_test indexedby-6.1 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b = 10 ORDER BY rowid
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i2 (b=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i2 (b=?)}}
|
||||
do_execsql_test indexedby-6.2 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM t1 NOT INDEXED WHERE b = 10 ORDER BY rowid
|
||||
} {0 0 0 {SCAN TABLE t1 USING INTEGER PRIMARY KEY (~100000 rows)}}
|
||||
} {0 0 0 {SCAN TABLE t1 USING INTEGER PRIMARY KEY}}
|
||||
|
||||
# Test that "INDEXED BY" can be used in a DELETE statement.
|
||||
#
|
||||
do_execsql_test indexedby-7.1 {
|
||||
EXPLAIN QUERY PLAN DELETE FROM t1 WHERE a = 5
|
||||
} {0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?)}}
|
||||
do_execsql_test indexedby-7.2 {
|
||||
EXPLAIN QUERY PLAN DELETE FROM t1 NOT INDEXED WHERE a = 5
|
||||
} {0 0 0 {SCAN TABLE t1 (~100000 rows)}}
|
||||
} {0 0 0 {SCAN TABLE t1}}
|
||||
do_execsql_test indexedby-7.3 {
|
||||
EXPLAIN QUERY PLAN DELETE FROM t1 INDEXED BY i1 WHERE a = 5
|
||||
} {0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?)}}
|
||||
do_execsql_test indexedby-7.4 {
|
||||
EXPLAIN QUERY PLAN DELETE FROM t1 INDEXED BY i1 WHERE a = 5 AND b = 10
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
|
||||
do_execsql_test indexedby-7.5 {
|
||||
EXPLAIN QUERY PLAN DELETE FROM t1 INDEXED BY i2 WHERE a = 5 AND b = 10
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i2 (b=?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i2 (b=?)}}
|
||||
do_test indexedby-7.6 {
|
||||
catchsql { DELETE FROM t1 INDEXED BY i2 WHERE a = 5}
|
||||
} {1 {cannot use index: i2}}
|
||||
@ -208,21 +208,21 @@ do_test indexedby-7.6 {
|
||||
#
|
||||
do_execsql_test indexedby-8.1 {
|
||||
EXPLAIN QUERY PLAN UPDATE t1 SET rowid=rowid+1 WHERE a = 5
|
||||
} {0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?)}}
|
||||
do_execsql_test indexedby-8.2 {
|
||||
EXPLAIN QUERY PLAN UPDATE t1 NOT INDEXED SET rowid=rowid+1 WHERE a = 5
|
||||
} {0 0 0 {SCAN TABLE t1 (~100000 rows)}}
|
||||
} {0 0 0 {SCAN TABLE t1}}
|
||||
do_execsql_test indexedby-8.3 {
|
||||
EXPLAIN QUERY PLAN UPDATE t1 INDEXED BY i1 SET rowid=rowid+1 WHERE a = 5
|
||||
} {0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?)}}
|
||||
do_execsql_test indexedby-8.4 {
|
||||
EXPLAIN QUERY PLAN
|
||||
UPDATE t1 INDEXED BY i1 SET rowid=rowid+1 WHERE a = 5 AND b = 10
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
|
||||
do_execsql_test indexedby-8.5 {
|
||||
EXPLAIN QUERY PLAN
|
||||
UPDATE t1 INDEXED BY i2 SET rowid=rowid+1 WHERE a = 5 AND b = 10
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i2 (b=?) (~2 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t1 USING INDEX i2 (b=?)}}
|
||||
do_test indexedby-8.6 {
|
||||
catchsql { UPDATE t1 INDEXED BY i2 SET rowid=rowid+1 WHERE a = 5}
|
||||
} {1 {cannot use index: i2}}
|
||||
|
@ -641,4 +641,3 @@ foreach {tn sql} {
|
||||
|
||||
sqlite3_simulate_device -char {} -sectorsize 0
|
||||
finish_test
|
||||
|
||||
|
@ -89,4 +89,3 @@ do_faultsim_test 3 -faults full* -prep {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -58,4 +58,3 @@ db1 close
|
||||
db2 close
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -269,17 +269,17 @@ ifcapable explain {
|
||||
CREATE TABLE abc(a PRIMARY KEY, b, c);
|
||||
EXPLAIN QUERY PLAN SELECT * FROM abc AS t2 WHERE rowid = 1;
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE abc AS t2 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SEARCH TABLE abc AS t2 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
do_execsql_test misc7-14.2 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM abc AS t2 WHERE a = 1;
|
||||
} {0 0 0
|
||||
{SEARCH TABLE abc AS t2 USING INDEX sqlite_autoindex_abc_1 (a=?) (~1 rows)}
|
||||
{SEARCH TABLE abc AS t2 USING INDEX sqlite_autoindex_abc_1 (a=?)}
|
||||
}
|
||||
do_execsql_test misc7-14.3 {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM abc AS t2 ORDER BY a;
|
||||
} {0 0 0
|
||||
{SCAN TABLE abc AS t2 USING INDEX sqlite_autoindex_abc_1 (~1000000 rows)}
|
||||
{SCAN TABLE abc AS t2 USING INDEX sqlite_autoindex_abc_1}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -150,4 +150,3 @@ catch { db2 close }
|
||||
|
||||
sqlite3_enable_shared_cache $esc
|
||||
finish_test
|
||||
|
||||
|
@ -2815,4 +2815,3 @@ do_test 43.3 {
|
||||
} {0 1 0}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -1546,4 +1546,3 @@ sqlite3_shutdown
|
||||
sqlite3_config_uri 0
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -96,4 +96,3 @@ do_faultsim_test pagerfault2-2 -faults oom-transient -prep {
|
||||
|
||||
sqlite3_memdebug_vfs_oom_test 1
|
||||
finish_test
|
||||
|
||||
|
@ -61,4 +61,3 @@ do_faultsim_test pagerfault3-1 -faults ioerr-transient -prep {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -92,4 +92,3 @@ do_test 1.6.2 {
|
||||
} {0}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -110,4 +110,3 @@ do_test 1.8 {
|
||||
foreach db {db1 db2 db3 db4} { catch { $db close } }
|
||||
sqlite3_enable_shared_cache $::enable_shared_cache
|
||||
finish_test
|
||||
|
||||
|
@ -52,4 +52,3 @@ db2 close
|
||||
|
||||
sqlite3_enable_shared_cache $::enable_shared_cache
|
||||
finish_test
|
||||
|
||||
|
@ -35,19 +35,19 @@ do_execsql_test 2.0 {
|
||||
}
|
||||
|
||||
do_eqp_test 2.1 { SELECT DISTINCT x FROM t2 } {
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX t2x (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX t2x}
|
||||
}
|
||||
|
||||
do_eqp_test 2.2 { SELECT DISTINCT y FROM t2 } {
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX t2y (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t2 USING COVERING INDEX t2y}
|
||||
}
|
||||
|
||||
do_eqp_test 2.3 { SELECT DISTINCT x, y FROM t2 WHERE y=10 } {
|
||||
0 0 0 {SEARCH TABLE t2 USING INDEX t2y (y=?) (~1 rows)}
|
||||
0 0 0 {SEARCH TABLE t2 USING INDEX t2y (y=?)}
|
||||
}
|
||||
|
||||
do_eqp_test 2.4 { SELECT DISTINCT x, y FROM t2 WHERE x=10 } {
|
||||
0 0 0 {SEARCH TABLE t2 USING INDEX t2x (x=?) (~1 rows)}
|
||||
0 0 0 {SEARCH TABLE t2 USING INDEX t2x (x=?)}
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
@ -70,4 +70,3 @@ do_execsql_test 2.2 {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -16,9 +16,9 @@
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
|
||||
# The following tests use hex_to_utf16be() and hex_to_utf16le() which
|
||||
# which are only available if SQLite is built with UTF16 support.
|
||||
|
||||
# The following tests use hex_to_utf16be() and hex_to_utf16le() which
|
||||
# which are only available if SQLite is built with UTF16 support.
|
||||
ifcapable {!utf16} {
|
||||
finish_test
|
||||
return
|
||||
|
@ -44,7 +44,7 @@ do_test tkt-78e04-1.4 {
|
||||
execsql {
|
||||
EXPLAIN QUERY PLAN SELECT * FROM "" WHERE "" LIKE 'abc%';
|
||||
}
|
||||
} {0 0 0 {SCAN TABLE USING COVERING INDEX i1 (~500000 rows)}}
|
||||
} {0 0 0 {SCAN TABLE USING COVERING INDEX i1}}
|
||||
do_test tkt-78e04-1.5 {
|
||||
execsql {
|
||||
DROP TABLE "";
|
||||
@ -57,12 +57,12 @@ do_test tkt-78e04-2.1 {
|
||||
CREATE INDEX "" ON t2(x);
|
||||
EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE x=5;
|
||||
}
|
||||
} {0 0 0 {SEARCH TABLE t2 USING COVERING INDEX (x=?) (~10 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE t2 USING COVERING INDEX (x=?)}}
|
||||
do_test tkt-78e04-2.2 {
|
||||
execsql {
|
||||
DROP INDEX "";
|
||||
EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE x=2;
|
||||
}
|
||||
} {0 0 0 {SCAN TABLE t2 (~100000 rows)}}
|
||||
} {0 0 0 {SCAN TABLE t2}}
|
||||
|
||||
finish_test
|
||||
|
@ -23,4 +23,3 @@ do_execsql_test tkt-7a31705a7e6-1.1 {
|
||||
CREATE TABLE t2x (b INTEGER PRIMARY KEY);
|
||||
SELECT t1.a FROM ((t1 JOIN t2 ON t1.a=t2.a) AS x JOIN t2x ON x.b=t2x.b) as y;
|
||||
} {}
|
||||
|
||||
|
@ -152,5 +152,3 @@ do_execsql_test 2.3 {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
|
@ -23,4 +23,3 @@ do_test 1.1 {
|
||||
do_test 1.2 { execsql VACUUM } {}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -59,4 +59,3 @@ do_test tkt-d11f09d36e.5 {
|
||||
} {ok}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -114,4 +114,3 @@ if {[permutation]!="inmemory_journal"} {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -84,4 +84,3 @@ foreach {tn sql} {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -49,10 +49,10 @@ proc EQP {sql} {
|
||||
ifcapable explain {
|
||||
do_test tkt3442-1.2 {
|
||||
EQP { SELECT node FROM listhash WHERE id='5000' LIMIT 1; }
|
||||
} {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?)}}
|
||||
do_test tkt3442-1.3 {
|
||||
EQP { SELECT node FROM listhash WHERE id="5000" LIMIT 1; }
|
||||
} {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?)}}
|
||||
}
|
||||
|
||||
|
||||
@ -61,7 +61,7 @@ ifcapable explain {
|
||||
ifcapable explain {
|
||||
do_test tkt3442-1.4 {
|
||||
EQP { SELECT node FROM listhash WHERE id=5000 LIMIT 1; }
|
||||
} {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?) (~1 rows)}}
|
||||
} {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?)}}
|
||||
}
|
||||
do_test tkt3442-1.5 {
|
||||
catchsql {
|
||||
|
@ -57,4 +57,3 @@ do_test tkt3918.5 {
|
||||
} {}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -50,4 +50,3 @@ do_test tkt3930-1.2 {
|
||||
|
||||
integrity_check tkt3930-1.3
|
||||
finish_test
|
||||
|
||||
|
@ -40,28 +40,28 @@ foreach idxmode {ordered unordered} {
|
||||
sqlite3 db test.db
|
||||
foreach {tn sql r(ordered) r(unordered)} {
|
||||
1 "SELECT * FROM t1 ORDER BY a"
|
||||
{0 0 0 {SCAN TABLE t1 USING INDEX i1 (~128 rows)}}
|
||||
{0 0 0 {SCAN TABLE t1 (~128 rows)} 0 0 0 {USE TEMP B-TREE FOR ORDER BY}}
|
||||
{0 0 0 {SCAN TABLE t1 USING INDEX i1}}
|
||||
{0 0 0 {SCAN TABLE t1} 0 0 0 {USE TEMP B-TREE FOR ORDER BY}}
|
||||
2 "SELECT * FROM t1 WHERE a >?"
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a>?) (~32 rows)}}
|
||||
{0 0 0 {SCAN TABLE t1 (~42 rows)}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a>?)}}
|
||||
{0 0 0 {SCAN TABLE t1}}
|
||||
3 "SELECT * FROM t1 WHERE a = ? ORDER BY rowid"
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~1 rows)}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~1 rows)}
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}}
|
||||
4 "SELECT max(a) FROM t1"
|
||||
{0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (~1 rows)}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1 (~1 rows)}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1}}
|
||||
5 "SELECT group_concat(b) FROM t1 GROUP BY a"
|
||||
{0 0 0 {SCAN TABLE t1 USING INDEX i1 (~128 rows)}}
|
||||
{0 0 0 {SCAN TABLE t1 (~128 rows)} 0 0 0 {USE TEMP B-TREE FOR GROUP BY}}
|
||||
{0 0 0 {SCAN TABLE t1 USING INDEX i1}}
|
||||
{0 0 0 {SCAN TABLE t1} 0 0 0 {USE TEMP B-TREE FOR GROUP BY}}
|
||||
|
||||
6 "SELECT * FROM t1 WHERE a = ?"
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~1 rows)}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?) (~1 rows)}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
|
||||
{0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
|
||||
7 "SELECT count(*) FROM t1"
|
||||
{0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1(~128 rows)}}
|
||||
{0 0 0 {SCAN TABLE t1 (~128 rows)}}
|
||||
{0 0 0 {SCAN TABLE t1}}
|
||||
} {
|
||||
do_eqp_test 1.$idxmode.$tn $sql $r($idxmode)
|
||||
}
|
||||
|
@ -16,4 +16,3 @@ source $testdir/permutations.test
|
||||
run_test_suite veryquick
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -88,4 +88,3 @@ do_execsql_test 3.1 {
|
||||
} {t1}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -390,4 +390,3 @@ foreach incr {1 2 3 20 40 60 80 100 120 140 160 180 200 220 240 253 254 255} {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -293,4 +293,3 @@ for {set i 1} {$i < $REPEATS} {incr i} {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -96,4 +96,3 @@ do_test walcrash2-1.3 {
|
||||
catch { db2 close }
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -126,4 +126,3 @@ for {set i 2} {$i<10000 && [set_test_counter errors]==$nInitialErr} {incr i} {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
@ -291,5 +291,3 @@ do_multiclient_test tn {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
|
@ -60,4 +60,3 @@ do_test walshared-1.4 {
|
||||
|
||||
sqlite3_enable_shared_cache $::enable_shared_cache
|
||||
finish_test
|
||||
|
||||
|
@ -236,15 +236,15 @@ do_execsql_test where3-3.0 {
|
||||
ANALYZE;
|
||||
explain query plan SELECT * FROM t302, t301 WHERE t302.x=5 AND t301.a=t302.y;
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t302 (~1 rows)}
|
||||
0 1 1 {SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SCAN TABLE t302}
|
||||
0 1 1 {SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
do_execsql_test where3-3.1 {
|
||||
explain query plan
|
||||
SELECT * FROM t301, t302 WHERE t302.x=5 AND t301.a=t302.y;
|
||||
} {
|
||||
0 0 1 {SCAN TABLE t302 (~1 rows)}
|
||||
0 1 0 {SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 1 {SCAN TABLE t302}
|
||||
0 1 0 {SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
}
|
||||
|
||||
# Verify that when there are multiple tables in a join which must be
|
||||
@ -258,25 +258,25 @@ do_execsql_test where3-4.0 {
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT * FROM t400, t401, t402 WHERE t402.z GLOB 'abc*';
|
||||
} {
|
||||
0 0 2 {SCAN TABLE t402 (~500000 rows)}
|
||||
0 1 0 {SCAN TABLE t400 (~1000000 rows)}
|
||||
0 2 1 {SCAN TABLE t401 (~1000000 rows)}
|
||||
0 0 2 {SCAN TABLE t402}
|
||||
0 1 0 {SCAN TABLE t400}
|
||||
0 2 1 {SCAN TABLE t401}
|
||||
}
|
||||
do_execsql_test where3-4.1 {
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT * FROM t400, t401, t402 WHERE t401.r GLOB 'abc*';
|
||||
} {
|
||||
0 0 1 {SCAN TABLE t401 (~500000 rows)}
|
||||
0 1 0 {SCAN TABLE t400 (~1000000 rows)}
|
||||
0 2 2 {SCAN TABLE t402 (~1000000 rows)}
|
||||
0 0 1 {SCAN TABLE t401}
|
||||
0 1 0 {SCAN TABLE t400}
|
||||
0 2 2 {SCAN TABLE t402}
|
||||
}
|
||||
do_execsql_test where3-4.2 {
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT * FROM t400, t401, t402 WHERE t400.c GLOB 'abc*';
|
||||
} {
|
||||
0 0 0 {SCAN TABLE t400 (~500000 rows)}
|
||||
0 1 1 {SCAN TABLE t401 (~1000000 rows)}
|
||||
0 2 2 {SCAN TABLE t402 (~1000000 rows)}
|
||||
0 0 0 {SCAN TABLE t400}
|
||||
0 1 1 {SCAN TABLE t401}
|
||||
0 2 2 {SCAN TABLE t402}
|
||||
}
|
||||
|
||||
# Verify that a performance regression encountered by firefox
|
||||
@ -308,8 +308,8 @@ do_execsql_test where3-5.0 {
|
||||
AND bbb.parent = 4
|
||||
ORDER BY bbb.title COLLATE NOCASE ASC;
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?) (~10 rows)}
|
||||
0 1 1 {SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)}
|
||||
0 1 1 {SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
do_execsql_test where3-5.1 {
|
||||
@ -321,8 +321,8 @@ do_execsql_test where3-5.1 {
|
||||
AND bbb.parent = 4
|
||||
ORDER BY bbb.title COLLATE NOCASE ASC;
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?) (~10 rows)}
|
||||
0 1 1 {SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 0 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)}
|
||||
0 1 1 {SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
do_execsql_test where3-5.2 {
|
||||
@ -334,8 +334,8 @@ do_execsql_test where3-5.2 {
|
||||
AND bbb.parent = 4
|
||||
ORDER BY bbb.title COLLATE NOCASE ASC;
|
||||
} {
|
||||
0 0 1 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?) (~10 rows)}
|
||||
0 1 0 {SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 1 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)}
|
||||
0 1 0 {SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
do_execsql_test where3-5.3 {
|
||||
@ -347,8 +347,8 @@ do_execsql_test where3-5.3 {
|
||||
AND bbb.parent = 4
|
||||
ORDER BY bbb.title COLLATE NOCASE ASC;
|
||||
} {
|
||||
0 0 1 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?) (~10 rows)}
|
||||
0 1 0 {SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 0 1 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)}
|
||||
0 1 0 {SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
|
||||
|
@ -23339,9 +23339,9 @@ do_execsql_test where7-3.1 {
|
||||
OR t301.c8 = 1407424651264000)
|
||||
ORDER BY t302.c5 LIMIT 200;
|
||||
} {
|
||||
0 0 1 {SEARCH TABLE t301 USING COVERING INDEX t301_c4 (c4=?) (~10 rows)}
|
||||
0 0 1 {SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 1 0 {SEARCH TABLE t302 USING INDEX t302_c8_c3 (c8=? AND c3>?) (~2 rows)}
|
||||
0 0 1 {SEARCH TABLE t301 USING COVERING INDEX t301_c4 (c4=?)}
|
||||
0 0 1 {SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
0 1 0 {SEARCH TABLE t302 USING INDEX t302_c8_c3 (c8=? AND c3>?)}
|
||||
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
|
||||
}
|
||||
|
||||
|
@ -362,9 +362,9 @@ ifcapable explain {
|
||||
SELECT t2.a FROM t1, t2
|
||||
WHERE t1.a=80 AND ((t1.c=t2.c AND t1.d=t2.d) OR t1.f=t2.f)
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 1 1 {SEARCH TABLE t2 USING INDEX t2d (d=?) (~2 rows)}
|
||||
0 1 1 {SEARCH TABLE t2 USING COVERING INDEX t2f (f=?) (~10 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
0 1 1 {SEARCH TABLE t2 USING INDEX t2d (d=?)}
|
||||
0 1 1 {SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)}
|
||||
}
|
||||
do_execsql_test where9-3.2 {
|
||||
EXPLAIN QUERY PLAN
|
||||
@ -372,9 +372,9 @@ ifcapable explain {
|
||||
FROM t1 LEFT JOIN t2 ON (t1.c+1=t2.c AND t1.d=t2.d) OR (t1.f||'x')=t2.f
|
||||
WHERE t1.a=80
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
||||
0 1 1 {SEARCH TABLE t2 USING INDEX t2d (d=?) (~2 rows)}
|
||||
0 1 1 {SEARCH TABLE t2 USING COVERING INDEX t2f (f=?) (~10 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)}
|
||||
0 1 1 {SEARCH TABLE t2 USING INDEX t2d (d=?)}
|
||||
0 1 1 {SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)}
|
||||
}
|
||||
}
|
||||
|
||||
@ -453,8 +453,8 @@ ifcapable explain {
|
||||
do_execsql_test where9-5.1 {
|
||||
EXPLAIN QUERY PLAN SELECT a FROM t1 WHERE b>1000 AND (c=31031 OR d IS NULL)
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX t1c (c=?) (~3 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX t1d (d=?) (~3 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX t1c (c=?)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX t1d (d=?)}
|
||||
}
|
||||
|
||||
# In contrast, b=1000 is preferred over any OR-clause.
|
||||
@ -462,7 +462,7 @@ ifcapable explain {
|
||||
do_execsql_test where9-5.2 {
|
||||
EXPLAIN QUERY PLAN SELECT a FROM t1 WHERE b=1000 AND (c=31031 OR d IS NULL)
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?) (~5 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}
|
||||
}
|
||||
|
||||
# Likewise, inequalities in an AND are preferred over inequalities in
|
||||
@ -471,7 +471,7 @@ ifcapable explain {
|
||||
do_execsql_test where9-5.3 {
|
||||
EXPLAIN QUERY PLAN SELECT a FROM t1 WHERE b>1000 AND (c>=31031 OR d IS NULL)
|
||||
} {
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b>?) (~125000 rows)}
|
||||
0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b>?)}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,4 +67,3 @@ foreach {tn sql res} {
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
111
tool/wherecosttest.c
Normal file
111
tool/wherecosttest.c
Normal file
@ -0,0 +1,111 @@
|
||||
/*
|
||||
** 2013-06-10
|
||||
**
|
||||
** The author disclaims copyright to this source code. In place of
|
||||
** a legal notice, here is a blessing:
|
||||
**
|
||||
** May you do good and not evil.
|
||||
** May you find forgiveness for yourself and forgive others.
|
||||
** May you share freely, never taking more than you give.
|
||||
**
|
||||
*************************************************************************
|
||||
** This file contains a simple command-line utility for converting from
|
||||
** integers and WhereCost values and back again and for doing simple
|
||||
** arithmetic operations (multiple and add) on WhereCost values.
|
||||
**
|
||||
** Usage:
|
||||
**
|
||||
** ./wherecosttest ARGS
|
||||
**
|
||||
** Arguments:
|
||||
**
|
||||
** 'x' Multiple the top two elements of the stack
|
||||
** '+' Add the top two elements of the stack
|
||||
** NUM Convert NUM from integer to WhereCost and push onto the stack
|
||||
** ^NUM Interpret NUM as a WhereCost and push onto stack.
|
||||
**
|
||||
** Examples:
|
||||
**
|
||||
** To convert 123 from WhereCost to integer:
|
||||
**
|
||||
** ./wherecosttest ^123
|
||||
**
|
||||
** To convert 123456 from integer to WhereCost:
|
||||
**
|
||||
** ./wherecosttest 123456
|
||||
**
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
|
||||
typedef unsigned short int WhereCost; /* 10 times log2() */
|
||||
|
||||
WhereCost whereCostMultiply(WhereCost a, WhereCost b){ return a+b; }
|
||||
WhereCost whereCostAdd(WhereCost a, WhereCost b){
|
||||
static const unsigned char x[] = {
|
||||
10, 10, /* 0,1 */
|
||||
9, 9, /* 2,3 */
|
||||
8, 8, /* 4,5 */
|
||||
7, 7, 7, /* 6,7,8 */
|
||||
6, 6, 6, /* 9,10,11 */
|
||||
5, 5, 5, /* 12-14 */
|
||||
4, 4, 4, 4, /* 15-18 */
|
||||
3, 3, 3, 3, 3, 3, /* 19-24 */
|
||||
2, 2, 2, 2, 2, 2, 2, /* 25-31 */
|
||||
};
|
||||
if( a<b ){ WhereCost t = a; a = b; b = t; }
|
||||
if( a>b+49 ) return a;
|
||||
if( a>b+31 ) return a+1;
|
||||
return a+x[a-b];
|
||||
}
|
||||
WhereCost whereCostFromInteger(int x){
|
||||
static WhereCost a[] = { 0, 2, 3, 5, 6, 7, 8, 9 };
|
||||
WhereCost y = 40;
|
||||
if( x<8 ){
|
||||
if( x<2 ) return 0;
|
||||
while( x<8 ){ y -= 10; x <<= 1; }
|
||||
}else{
|
||||
while( x>255 ){ y += 40; x >>= 4; }
|
||||
while( x>15 ){ y += 10; x >>= 1; }
|
||||
}
|
||||
return a[x&7] + y - 10;
|
||||
}
|
||||
static unsigned long int whereCostToInt(WhereCost x){
|
||||
unsigned long int n;
|
||||
if( x<=10 ) return 1;
|
||||
n = x%10;
|
||||
x /= 10;
|
||||
if( n>=5 ) n -= 2;
|
||||
else if( n>=1 ) n -= 1;
|
||||
if( x>=3 ) return (n+8)<<(x-3);
|
||||
return (n+8)>>(3-x);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv){
|
||||
int i;
|
||||
int n = 0;
|
||||
WhereCost a[100];
|
||||
for(i=1; i<argc; i++){
|
||||
const char *z = argv[i];
|
||||
if( z[0]=='+' ){
|
||||
if( n>=2 ){
|
||||
a[n-2] = whereCostAdd(a[n-2],a[n-1]);
|
||||
n--;
|
||||
}
|
||||
}else if( z[0]=='x' ){
|
||||
if( n>=2 ){
|
||||
a[n-2] = whereCostMultiply(a[n-2],a[n-1]);
|
||||
n--;
|
||||
}
|
||||
}else if( z[0]=='^' ){
|
||||
a[n++] = atoi(z+1);
|
||||
}else{
|
||||
a[n++] = whereCostFromInteger(atoi(z));
|
||||
}
|
||||
}
|
||||
for(i=n-1; i>=0; i--){
|
||||
printf("%d (%lu)\n", a[i], whereCostToInt(a[i]));
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user