From: drh Date: Sat, 6 Aug 2011 01:22:50 +0000 (+0000) Subject: Fix a compiler warning when STAT2 is off. More test cases. Fix legacy tests X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=17eef8750e2608d3385975c24c38265a015a10f3;p=thirdparty%2Fsqlite.git Fix a compiler warning when STAT2 is off. More test cases. Fix legacy tests to deal with the new STAT2 logic. FossilOrigin-Name: 7e914aa999d9f3f7be58a4494d33a7876af56603 --- diff --git a/manifest b/manifest index 5d9c6e64e3..26fa848aca 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Bug\sfixes\sto\sthe\ssample-count\slogic\sfor\sSTAT2.\s\sA\sfew\stest\scases\sadded. -D 2011-08-05T22:31:19.378 +C Fix\sa\scompiler\swarning\swhen\sSTAT2\sis\soff.\s\sMore\stest\scases.\s\sFix\slegacy\stests\nto\sdeal\swith\sthe\snew\sSTAT2\slogic. +D 2011-08-06T01:22:50.386 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 1e6988b3c11dee9bd5edc0c804bd4468d74a9cdc F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -118,7 +118,7 @@ F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite3.1 6be1ad09113570e1fc8dcaff84c9b0b337db5ffc F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad F src/alter.c ac80a0f31189f8b4a524ebf661e47e84536ee7f5 -F src/analyze.c 533077e1a96a9a33464edb35573b2a80a043e0f4 +F src/analyze.c b1df43e5452fc6bcb14a6503c67bfcbdffddc2fe F src/attach.c 12c6957996908edc31c96d7c68d4942c2474405f F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34 F src/backup.c 986c15232757f2873dff35ee3b35cbf935fc573c @@ -261,13 +261,13 @@ F test/alter3.test 49c9d9fba2b8fcdce2dedeca97bbf1f369cc548d F test/alter4.test b2debc14d8cbe4c1d12ccd6a41eef88a8c1f15d5 F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc F test/analyze.test c8cb89e8736336f1f0646c8123e6028a14c7b55e -F test/analyze2.test 6a5c1420bdbfadd47556fcd88deeb27ab3853a36 +F test/analyze2.test b2c53cf72aa65383da991d97b9d3ec7b45f72c03 F test/analyze3.test d61f55d8b472fc6e713160b1e577f7a68e63f38b F test/analyze4.test 757b37875cf9bb528d46f74497bc789c88365045 F test/analyze5.test 1de8d66b11aae5a1453aa042d62e834a476bac9c F test/analyze6.test c125622a813325bba1b4999040ddc213773c2290 F test/analyze7.test 5508e7828164ea0b518ed219bed7320a481863d4 -F test/analyze8.test e78fb00274ca3c4eb9dc906a83bd13d5793d4641 +F test/analyze8.test ff7a3b4631c896a51e7404268796c61d74117e9f F test/async.test 1d0e056ba1bb9729283a0f22718d3a25e82c277b F test/async2.test c0a9bd20816d7d6a2ceca7b8c03d3d69c28ffb8b F test/async3.test d73a062002376d7edc1fe3edff493edbec1fc2f7 @@ -734,7 +734,7 @@ F test/tkt-9d68c883.test 458f7d82a523d7644b54b497c986378a7d8c8b67 F test/tkt-b351d95f9.test d14a503c414c5c58fdde3e80f9a3cfef986498c0 F test/tkt-b72787b1.test e6b62b2b2785c04d0d698d6a603507e384165049 F test/tkt-bd484a090c.test 60460bf946f79a79712b71f202eda501ca99b898 -F test/tkt-cbd054fa6b.test f14f97ea43662e6f70c9e63287081e8be5d9d589 +F test/tkt-cbd054fa6b.test 2263389efa52207e8527dac7314f839e5edeccda F test/tkt-d11f09d36e.test fb44f7961aa6d4b632fb7b9768239832210b5fc7 F test/tkt-d635236375.test 9d37e988b47d87505bc9445be0ca447002df5d09 F test/tkt-d82e3f3721.test 731359dfdcdb36fea0559cd33fec39dd0ceae8e6 @@ -956,7 +956,7 @@ F tool/symbols.sh caaf6ccc7300fd43353318b44524853e222557d5 F tool/tostr.awk 11760e1b94a5d3dcd42378f3cc18544c06cfa576 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings.sh 2ebae31e1eb352696f3c2f7706a34c084b28c262 -P eb434228277c4bbbb1ad153ed3e6e3eeffe799a4 -R 5e934c2ca6d03f0d8b0d9f4d06ff655c +P e93c248c8470622944cf7f9e5af4f10c4e4809e3 +R 4c0da7c33e60748bbef1bc20f3ff5e64 U drh -Z 98e2c68261b7b8ef26e19fbc93ef8bb3 +Z d7b9f3f4715d72ce86f406011b991106 diff --git a/manifest.uuid b/manifest.uuid index 078676bf98..9cb64d118c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e93c248c8470622944cf7f9e5af4f10c4e4809e3 \ No newline at end of file +7e914aa999d9f3f7be58a4494d33a7876af56603 \ No newline at end of file diff --git a/src/analyze.c b/src/analyze.c index 43a337664d..bf8e59254c 100644 --- a/src/analyze.c +++ b/src/analyze.c @@ -133,12 +133,12 @@ static void analyzeOneTable( int regSample2 = iMem++; /* Number of samples to acquire times 2 */ int regCount = iMem++; /* Number of rows in the table */ int regCount2 = iMem++; /* regCount*2 */ + int once = 1; /* One-time initialization */ #endif int regCol = iMem++; /* Content of a column in analyzed table */ int regRec = iMem++; /* Register holding completed record */ int regTemp = iMem++; /* Temporary use register */ int regRowid = iMem++; /* Rowid for the inserted record */ - int once = 1; /* One-time initialization */ v = sqlite3GetVdbe(pParse); diff --git a/test/analyze2.test b/test/analyze2.test index 3e48a42239..2aecef274b 100644 --- a/test/analyze2.test +++ b/test/analyze2.test @@ -73,25 +73,25 @@ do_test analyze2-1.1 { ANALYZE; SELECT tbl, idx, sampleno, sample FROM sqlite_stat2; } -} [list t1 sqlite_autoindex_t1_1 0 49 \ - t1 sqlite_autoindex_t1_1 1 149 \ - t1 sqlite_autoindex_t1_1 2 249 \ - t1 sqlite_autoindex_t1_1 3 349 \ - t1 sqlite_autoindex_t1_1 4 449 \ - t1 sqlite_autoindex_t1_1 5 549 \ - t1 sqlite_autoindex_t1_1 6 649 \ - t1 sqlite_autoindex_t1_1 7 749 \ - t1 sqlite_autoindex_t1_1 8 849 \ - t1 sqlite_autoindex_t1_1 9 949 \ +} [list t1 sqlite_autoindex_t1_1 0 50 \ + t1 sqlite_autoindex_t1_1 1 150 \ + t1 sqlite_autoindex_t1_1 2 250 \ + t1 sqlite_autoindex_t1_1 3 350 \ + t1 sqlite_autoindex_t1_1 4 450 \ + t1 sqlite_autoindex_t1_1 5 550 \ + t1 sqlite_autoindex_t1_1 6 650 \ + t1 sqlite_autoindex_t1_1 7 750 \ + t1 sqlite_autoindex_t1_1 8 850 \ + t1 sqlite_autoindex_t1_1 9 950 \ ] do_test analyze2-1.2 { execsql { - DELETE FROM t1 WHERE x>9; + DELETE FROM t1 WHERE x>20; ANALYZE; SELECT tbl, idx, group_concat(sample, ' ') FROM sqlite_stat2; } -} {t1 sqlite_autoindex_t1_1 {0 1 2 3 4 5 6 7 8 9}} +} {t1 sqlite_autoindex_t1_1 {1 3 5 7 9 11 13 15 17 19}} do_test analyze2-1.3 { execsql { DELETE FROM t1 WHERE x>8; @@ -189,7 +189,7 @@ do_test analyze2-3.1 { WHERE idx = 't1_x' GROUP BY tbl,idx } -} {t1 t1_x {99 299 499 699 899 ajj cjj ejj gjj ijj}} +} {t1 t1_x {100 300 500 700 900 baa daa faa haa jaa}} do_test analyze2-3.2 { execsql { SELECT tbl,idx,group_concat(sample,' ') @@ -197,12 +197,12 @@ do_test analyze2-3.2 { WHERE idx = 't1_y' GROUP BY tbl,idx } -} {t1 t1_y {99 299 499 699 899 ajj cjj ejj gjj ijj}} +} {t1 t1_y {100 300 500 700 900 baa daa faa haa jaa}} do_eqp_test 3.3 { SELECT * FROM t1 WHERE x BETWEEN 100 AND 500 AND y BETWEEN 'a' AND 'b' } { - 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>? AND y? AND y'h' } { - 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>?) (~66 rows)} + 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>?) (~133 rows)} } do_eqp_test 3.6 { SELECT * FROM t1 WHERE x<444 AND y>'h' } { - 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>?) (~66 rows)} + 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>?) (~133 rows)} } do_eqp_test 3.7 { SELECT * FROM t1 WHERE x<221 AND y>'g' @@ -249,7 +249,7 @@ do_test analyze2-4.2 { GROUP BY tbl,idx; PRAGMA automatic_index=ON; } -} {t3 t3a {AfA bEj CEj dEj EEj fEj GEj hEj IEj jEj}} +} {t3 t3a {AfA bfA CfA dfA EfA ffA GfA hfA IfA jfA}} do_test analyze2-4.3 { execsql { SELECT tbl,idx,group_concat(sample,' ') @@ -257,7 +257,7 @@ do_test analyze2-4.3 { WHERE idx = 't3b' GROUP BY tbl,idx } -} {t3 t3b {AbA CIj EIj GIj IIj bIj dIj fIj hIj jIj}} +} {t3 t3b {AbA CbA EbA GbA IbA bbA dbA fbA hbA jbA}} do_eqp_test 4.4 { SELECT * FROM t3 WHERE a > 'A' AND a < 'C' AND b > 'A' AND b < 'C' @@ -297,7 +297,7 @@ ifcapable utf16 { WHERE tbl = 't4' GROUP BY tbl,idx } - } {t4 t4x {afa bej cej dej eej fej gej hej iej jej}} + } {t4 t4x {afa bfa cfa dfa efa ffa gfa hfa ifa jfa}} do_eqp_test 5.3 { SELECT * FROM t4 WHERE x>'ccc' } {0 0 0 {SEARCH TABLE t4 USING COVERING INDEX t4x (x>?) (~800 rows)}} diff --git a/test/analyze8.test b/test/analyze8.test index bad2a8285a..844f7fda0a 100644 --- a/test/analyze8.test +++ b/test/analyze8.test @@ -88,3 +88,76 @@ do_test analyze8-2.1 { SELECT sample, cnt FROM sqlite_stat2 WHERE idx='t1x' ORDER BY sampleno; } } {0 200 0 200 0 200 10 1 70 1 130 1 190 1 999 200 999 200 999 200} + +do_test analyze8-3.0 { + execsql { + BEGIN; + DROP TABLE t1; + CREATE TABLE t1(a,b); + CREATE INDEX t1all ON t1(a,b); + INSERT INTO t1 VALUES(0,1); + INSERT INTO t1 VALUES(0,2); + INSERT INTO t1 VALUES(0,3); + INSERT INTO t1 VALUES(1,4); + INSERT INTO t1 SELECT a+2, b+4 FROM t1; + INSERT INTO t1 SELECT a+4, b+8 FROM t1; + INSERT INTO t1 SELECT a+8, b+16 FROM t1; + COMMIT; + ANALYZE; + SELECT sample, cnt FROM sqlite_stat2 WHERE idx='t1all' ORDER BY sampleno; + } +} {0 3 2 3 4 3 5 1 6 3 8 3 10 3 12 3 13 1 14 3} +do_test analyze8-3.1 { + execsql { + DELETE FROM t1; + INSERT INTO t1 VALUES(1,1); + INSERT INTO t1 VALUES(2,2); + INSERT INTO t1 SELECT a+2, b+2 FROM t1; + INSERT INTO t1 SELECT a+4, b+4 FROM t1; + INSERT INTO t1 SELECT a+8, b+8 FROM t1; + INSERT INTO t1 SELECT a+16, b+16 FROM t1; + DELETE FROM t1 WHERE a>21; + ANALYZE; + SELECT sample, cnt FROM sqlite_stat2 WHERE idx='t1all' ORDER BY sampleno; + } +} {2 1 4 1 6 1 8 1 10 1 12 1 14 1 16 1 18 1 20 1} +do_test analyze8-3.2 { + execsql { + UPDATE t1 SET a=123; + ANALYZE; + SELECT sample, cnt FROM sqlite_stat2 WHERE idx='t1all' ORDER BY sampleno; + } +} {123 21 123 21 123 21 123 21 123 21 123 21 123 21 123 21 123 21 123 21} +do_test analyze8-3.3 { + execsql { + DELETE FROM t1 WHERE b=1 OR b=2; + ANALYZE; + SELECT count(*) FROM t1; + SELECT sample, cnt FROM sqlite_stat2 WHERE idx='t1all' ORDER BY sampleno; + } +} {19} +do_test analyze8-3.4 { + execsql { + UPDATE t1 SET a=b; + INSERT INTO t1 VALUES(1,1); + INSERT INTO t1 VALUES(2,2); + INSERT INTO t1 SELECT a, b FROM t1; + ANALYZE; + SELECT sample, cnt FROM sqlite_stat2 WHERE idx='t1all' ORDER BY sampleno; + } +} {2 2 4 2 6 2 8 2 10 2 12 2 14 2 16 2 18 2 20 2} +do_test analyze8-3.5 { + execsql { + UPDATE t1 SET a=1 WHERE b<20; + ANALYZE; + SELECT sample, cnt FROM sqlite_stat2 WHERE idx='t1all' ORDER BY sampleno; + } +} {1 38 1 38 1 38 1 38 1 38 1 38 1 38 1 38 1 38 20 2} +do_test analyze8-3.6 { + execsql { + UPDATE t1 SET a=b; + UPDATE t1 SET a=20 WHERE b>2; + ANALYZE; + SELECT sample, cnt FROM sqlite_stat2 WHERE idx='t1all' ORDER BY sampleno; + } +} {2 2 20 38 20 38 20 38 20 38 20 38 20 38 20 38 20 38 20 38} diff --git a/test/tkt-cbd054fa6b.test b/test/tkt-cbd054fa6b.test index 6e7455b3a3..043cecf8a3 100644 --- a/test/tkt-cbd054fa6b.test +++ b/test/tkt-cbd054fa6b.test @@ -35,9 +35,19 @@ do_test tkt-cbd05-1.1 { INSERT INTO t1 VALUES (NULL, 'G'); INSERT INTO t1 VALUES (NULL, 'H'); INSERT INTO t1 VALUES (NULL, 'I'); + INSERT INTO t1 VALUES (NULL, 'J'); + INSERT INTO t1 VALUES (NULL, 'K'); + INSERT INTO t1 VALUES (NULL, 'L'); + INSERT INTO t1 VALUES (NULL, 'M'); + INSERT INTO t1 VALUES (NULL, 'N'); + INSERT INTO t1 VALUES (NULL, 'O'); + INSERT INTO t1 VALUES (NULL, 'P'); + INSERT INTO t1 VALUES (NULL, 'Q'); + INSERT INTO t1 VALUES (NULL, 'R'); + INSERT INTO t1 VALUES (NULL, 'S'); SELECT count(*) FROM t1; } -} {10} +} {20} do_test tkt-cbd05-1.2 { db eval { ANALYZE; @@ -50,7 +60,7 @@ do_test tkt-cbd05-1.3 { WHERE idx = 't1_x' GROUP BY tbl,idx } -} {t1 t1_x { A B C D E F G H I}} +} {t1 t1_x {A C E G I K M O Q S}} do_test tkt-cbd05-2.1 { db eval { @@ -67,9 +77,19 @@ do_test tkt-cbd05-2.1 { INSERT INTO t1 VALUES(NULL, X'47'); INSERT INTO t1 VALUES(NULL, X'48'); INSERT INTO t1 VALUES(NULL, X'49'); + INSERT INTO t1 VALUES(NULL, X'4A'); + INSERT INTO t1 VALUES(NULL, X'4B'); + INSERT INTO t1 VALUES(NULL, X'4C'); + INSERT INTO t1 VALUES(NULL, X'4D'); + INSERT INTO t1 VALUES(NULL, X'4E'); + INSERT INTO t1 VALUES(NULL, X'4F'); + INSERT INTO t1 VALUES(NULL, X'50'); + INSERT INTO t1 VALUES(NULL, X'51'); + INSERT INTO t1 VALUES(NULL, X'52'); + INSERT INTO t1 VALUES(NULL, X'53'); SELECT count(*) FROM t1; } -} {10} +} {20} do_test tkt-cbd05-2.2 { db eval { ANALYZE; @@ -82,6 +102,6 @@ do_test tkt-cbd05-2.3 { WHERE idx = 't1_x' GROUP BY tbl,idx } -} {t1 t1_x { A B C D E F G H I}} +} {t1 t1_x {A C E G I K M O Q S}} finish_test