| # 2024-05-28 |
| # |
| # 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. |
| # |
| #*********************************************************************** |
| # |
| # Test cases for the ability of the query planner to cope with |
| # star-schema queries on databases with goofy indexes. |
| # |
| |
| set testdir [file dirname $argv0] |
| source $testdir/tester.tcl |
| set ::testprefix starschema1 |
| |
| do_execsql_test 1.1 { |
| CREATE TABLE t1( |
| a01 INT, a02 INT, a03 INT, a04 INT, a05 INT, a06 INT, a07 INT, a08 INT, |
| a09 INT, a10 INT, a11 INT, a12 INT, a13 INT, a14 INT, a15 INT, a16 INT, |
| a17 INT, a18 INT, a19 INT, a20 INT, a21 INT, a22 INT, a23 INT, a24 INT, |
| a25 INT, a26 INT, a27 INT, a28 INT, a29 INT, a30 INT, a31 INT, a32 INT, |
| a33 INT, a34 INT, a35 INT, a36 INT, a37 INT, a38 INT, a39 INT, a40 INT, |
| a41 INT, a42 INT, a43 INT, a44 INT, a45 INT, a46 INT, a47 INT, a48 INT, |
| a49 INT, a50 INT, a51 INT, a52 INT, a53 INT, a54 INT, a55 INT, a56 INT, |
| a57 INT, a58 INT, a59 INT, a60 INT, a61 INT, a62 INT, a63 INT, d TEXT); |
| CREATE TABLE x01(b01 INT, c01 TEXT); |
| CREATE TABLE x02(b02 INT, c02 TEXT); |
| CREATE TABLE x03(b03 INT, c03 TEXT); |
| CREATE TABLE x04(b04 INT, c04 TEXT); |
| CREATE TABLE x05(b05 INT, c05 TEXT); |
| CREATE TABLE x06(b06 INT, c06 TEXT); |
| CREATE TABLE x07(b07 INT, c07 TEXT); |
| CREATE TABLE x08(b08 INT, c08 TEXT); |
| CREATE TABLE x09(b09 INT, c09 TEXT); |
| CREATE TABLE x10(b10 INT, c10 TEXT); |
| CREATE TABLE x11(b11 INT, c11 TEXT); |
| CREATE TABLE x12(b12 INT, c12 TEXT); |
| CREATE TABLE x13(b13 INT, c13 TEXT); |
| CREATE TABLE x14(b14 INT, c14 TEXT); |
| CREATE TABLE x15(b15 INT, c15 TEXT); |
| CREATE TABLE x16(b16 INT, c16 TEXT); |
| CREATE TABLE x17(b17 INT, c17 TEXT); |
| CREATE TABLE x18(b18 INT, c18 TEXT); |
| CREATE TABLE x19(b19 INT, c19 TEXT); |
| CREATE TABLE x20(b20 INT, c20 TEXT); |
| CREATE TABLE x21(b21 INT, c21 TEXT); |
| CREATE TABLE x22(b22 INT, c22 TEXT); |
| CREATE TABLE x23(b23 INT, c23 TEXT); |
| CREATE TABLE x24(b24 INT, c24 TEXT); |
| CREATE TABLE x25(b25 INT, c25 TEXT); |
| CREATE TABLE x26(b26 INT, c26 TEXT); |
| CREATE TABLE x27(b27 INT, c27 TEXT); |
| CREATE TABLE x28(b28 INT, c28 TEXT); |
| CREATE TABLE x29(b29 INT, c29 TEXT); |
| CREATE TABLE x30(b30 INT, c30 TEXT); |
| CREATE TABLE x31(b31 INT, c31 TEXT); |
| CREATE TABLE x32(b32 INT, c32 TEXT); |
| CREATE TABLE x33(b33 INT, c33 TEXT); |
| CREATE TABLE x34(b34 INT, c34 TEXT); |
| CREATE TABLE x35(b35 INT, c35 TEXT); |
| CREATE TABLE x36(b36 INT, c36 TEXT); |
| CREATE TABLE x37(b37 INT, c37 TEXT); |
| CREATE TABLE x38(b38 INT, c38 TEXT); |
| CREATE TABLE x39(b39 INT, c39 TEXT); |
| CREATE TABLE x40(b40 INT, c40 TEXT); |
| CREATE TABLE x41(b41 INT, c41 TEXT); |
| CREATE TABLE x42(b42 INT, c42 TEXT); |
| CREATE TABLE x43(b43 INT, c43 TEXT); |
| CREATE TABLE x44(b44 INT, c44 TEXT); |
| CREATE TABLE x45(b45 INT, c45 TEXT); |
| CREATE TABLE x46(b46 INT, c46 TEXT); |
| CREATE TABLE x47(b47 INT, c47 TEXT); |
| CREATE TABLE x48(b48 INT, c48 TEXT); |
| CREATE TABLE x49(b49 INT, c49 TEXT); |
| CREATE TABLE x50(b50 INT, c50 TEXT); |
| CREATE TABLE x51(b51 INT, c51 TEXT); |
| CREATE TABLE x52(b52 INT, c52 TEXT); |
| CREATE TABLE x53(b53 INT, c53 TEXT); |
| CREATE TABLE x54(b54 INT, c54 TEXT); |
| CREATE TABLE x55(b55 INT, c55 TEXT); |
| CREATE TABLE x56(b56 INT, c56 TEXT); |
| CREATE TABLE x57(b57 INT, c57 TEXT); |
| CREATE TABLE x58(b58 INT, c58 TEXT); |
| CREATE TABLE x59(b59 INT, c59 TEXT); |
| CREATE TABLE x60(b60 INT, c60 TEXT); |
| CREATE TABLE x61(b61 INT, c61 TEXT); |
| CREATE TABLE x62(b62 INT, c62 TEXT); |
| CREATE TABLE x63(b63 INT, c63 TEXT); |
| /**** Uncomment to generate actual data ************************************ |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<172800) |
| INSERT INTO t1 |
| SELECT stmtrand()%12, stmtrand()%13, stmtrand()%14, stmtrand()%15, |
| stmtrand()%16, stmtrand()%17, stmtrand()%18, stmtrand()%19, |
| stmtrand()%20, stmtrand()%21, stmtrand()%22, stmtrand()%23, |
| stmtrand()%24, stmtrand()%25, stmtrand()%26, stmtrand()%27, |
| stmtrand()%28, stmtrand()%29, stmtrand()%30, stmtrand()%31, |
| stmtrand()%32, stmtrand()%33, stmtrand()%34, stmtrand()%35, |
| stmtrand()%36, stmtrand()%37, stmtrand()%38, stmtrand()%39, |
| stmtrand()%40, stmtrand()%41, stmtrand()%42, stmtrand()%43, |
| stmtrand()%28, stmtrand()%29, stmtrand()%30, stmtrand()%31, |
| stmtrand()%32, stmtrand()%33, stmtrand()%34, stmtrand()%35, |
| stmtrand()%36, stmtrand()%37, stmtrand()%38, stmtrand()%39, |
| stmtrand()%40, stmtrand()%41, stmtrand()%42, stmtrand()%43, |
| stmtrand()%28, stmtrand()%29, stmtrand()%30, stmtrand()%31, |
| stmtrand()%32, stmtrand()%33, stmtrand()%34, stmtrand()%35, |
| stmtrand()%36, stmtrand()%37, stmtrand()%38, stmtrand()%39, |
| stmtrand()%40, stmtrand()%41, stmtrand()%42, stmtrand() FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<8) |
| INSERT INTO x01 SELECT n%4, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<12) |
| INSERT INTO x02 SELECT n%6, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<16) |
| INSERT INTO x03 SELECT n%8, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<20) |
| INSERT INTO x04 SELECT n%10, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<24) |
| INSERT INTO x05 SELECT n%12, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<32) |
| INSERT INTO x06 SELECT n%16, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<36) |
| INSERT INTO x07 SELECT n%18, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<40) |
| INSERT INTO x08 SELECT n%20, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<44) |
| INSERT INTO x09 SELECT n%22, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<48) |
| INSERT INTO x10 SELECT n%24, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<52) |
| INSERT INTO x11 SELECT n%26, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<56) |
| INSERT INTO x12 SELECT n%28, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<60) |
| INSERT INTO x13 SELECT n%30, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<64) |
| INSERT INTO x14 SELECT n%32, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<72) |
| INSERT INTO x15 SELECT n%36, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<80) |
| INSERT INTO x16 SELECT n%40, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<8) |
| INSERT INTO x17 SELECT n%4, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<12) |
| INSERT INTO x18 SELECT n%6, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<16) |
| INSERT INTO x19 SELECT n%8, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<20) |
| INSERT INTO x20 SELECT n%10, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<24) |
| INSERT INTO x21 SELECT n%12, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<32) |
| INSERT INTO x22 SELECT n%16, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<36) |
| INSERT INTO x23 SELECT n%18, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<40) |
| INSERT INTO x24 SELECT n%20, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<44) |
| INSERT INTO x25 SELECT n%22, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<48) |
| INSERT INTO x26 SELECT n%24, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<52) |
| INSERT INTO x27 SELECT n%26, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<56) |
| INSERT INTO x28 SELECT n%28, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<60) |
| INSERT INTO x29 SELECT n%30, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<64) |
| INSERT INTO x30 SELECT n%32, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<72) |
| INSERT INTO x31 SELECT n%36, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<80) |
| INSERT INTO x32 SELECT n%40, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<8) |
| INSERT INTO x33 SELECT n%4, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<12) |
| INSERT INTO x34 SELECT n%6, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<16) |
| INSERT INTO x35 SELECT n%8, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<20) |
| INSERT INTO x36 SELECT n%10, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<24) |
| INSERT INTO x37 SELECT n%12, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<32) |
| INSERT INTO x38 SELECT n%16, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<36) |
| INSERT INTO x39 SELECT n%18, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<40) |
| INSERT INTO x40 SELECT n%20, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<44) |
| INSERT INTO x41 SELECT n%22, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<48) |
| INSERT INTO x42 SELECT n%24, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<52) |
| INSERT INTO x43 SELECT n%26, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<56) |
| INSERT INTO x44 SELECT n%28, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<60) |
| INSERT INTO x45 SELECT n%30, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<64) |
| INSERT INTO x46 SELECT n%32, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<72) |
| INSERT INTO x47 SELECT n%36, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<80) |
| INSERT INTO x48 SELECT n%40, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<8) |
| INSERT INTO x49 SELECT n%4, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<12) |
| INSERT INTO x50 SELECT n%6, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<16) |
| INSERT INTO x51 SELECT n%8, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<20) |
| INSERT INTO x52 SELECT n%10, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<24) |
| INSERT INTO x53 SELECT n%12, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<32) |
| INSERT INTO x54 SELECT n%16, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<36) |
| INSERT INTO x55 SELECT n%18, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<40) |
| INSERT INTO x56 SELECT n%20, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<44) |
| INSERT INTO x57 SELECT n%22, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<48) |
| INSERT INTO x58 SELECT n%24, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<52) |
| INSERT INTO x59 SELECT n%26, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<56) |
| INSERT INTO x60 SELECT n%28, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<60) |
| INSERT INTO x61 SELECT n%30, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<64) |
| INSERT INTO x62 SELECT n%32, format('%d-or-0x%04x',n,n) FROM c; |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<72) |
| INSERT INTO x63 SELECT n%36, format('%d-or-0x%04x',n,n) FROM c; |
| ****************************************************************************/ |
| CREATE INDEX t1a01 ON t1(a01); |
| CREATE INDEX t1a02 ON t1(a02); |
| CREATE INDEX t1a03 ON t1(a03); |
| CREATE INDEX t1a04 ON t1(a04); |
| CREATE INDEX t1a05 ON t1(a05); |
| CREATE INDEX t1a06 ON t1(a06); |
| CREATE INDEX t1a07 ON t1(a07); |
| CREATE INDEX t1a08 ON t1(a08); |
| CREATE INDEX t1a09 ON t1(a09); |
| CREATE INDEX t1a10 ON t1(a10); |
| CREATE INDEX t1a11 ON t1(a11); |
| CREATE INDEX t1a12 ON t1(a12); |
| CREATE INDEX t1a13 ON t1(a13); |
| CREATE INDEX t1a14 ON t1(a14); |
| CREATE INDEX t1a15 ON t1(a15); |
| CREATE INDEX t1a16 ON t1(a16); |
| CREATE INDEX t1a17 ON t1(a17); |
| CREATE INDEX t1a18 ON t1(a18); |
| CREATE INDEX t1a19 ON t1(a19); |
| CREATE INDEX t1a20 ON t1(a20); |
| CREATE INDEX t1a21 ON t1(a21); |
| CREATE INDEX t1a22 ON t1(a22); |
| CREATE INDEX t1a23 ON t1(a23); |
| CREATE INDEX t1a24 ON t1(a24); |
| CREATE INDEX t1a25 ON t1(a25); |
| CREATE INDEX t1a26 ON t1(a26); |
| CREATE INDEX t1a27 ON t1(a27); |
| CREATE INDEX t1a28 ON t1(a28); |
| CREATE INDEX t1a29 ON t1(a29); |
| CREATE INDEX t1a30 ON t1(a30); |
| CREATE INDEX t1a31 ON t1(a31); |
| CREATE INDEX t1a32 ON t1(a32); |
| CREATE INDEX t1a33 ON t1(a33); |
| CREATE INDEX t1a34 ON t1(a34); |
| CREATE INDEX t1a35 ON t1(a35); |
| CREATE INDEX t1a36 ON t1(a36); |
| CREATE INDEX t1a37 ON t1(a37); |
| CREATE INDEX t1a38 ON t1(a38); |
| CREATE INDEX t1a39 ON t1(a39); |
| CREATE INDEX t1a40 ON t1(a40); |
| CREATE INDEX t1a41 ON t1(a41); |
| CREATE INDEX t1a42 ON t1(a42); |
| CREATE INDEX t1a43 ON t1(a43); |
| CREATE INDEX t1a44 ON t1(a44); |
| CREATE INDEX t1a45 ON t1(a45); |
| CREATE INDEX t1a46 ON t1(a46); |
| CREATE INDEX t1a47 ON t1(a47); |
| CREATE INDEX t1a48 ON t1(a48); |
| CREATE INDEX t1a49 ON t1(a49); |
| CREATE INDEX t1a50 ON t1(a50); |
| CREATE INDEX t1a51 ON t1(a51); |
| CREATE INDEX t1a52 ON t1(a52); |
| CREATE INDEX t1a53 ON t1(a53); |
| CREATE INDEX t1a54 ON t1(a54); |
| CREATE INDEX t1a55 ON t1(a55); |
| CREATE INDEX t1a56 ON t1(a56); |
| CREATE INDEX t1a57 ON t1(a57); |
| CREATE INDEX t1a58 ON t1(a58); |
| CREATE INDEX t1a59 ON t1(a59); |
| CREATE INDEX t1a60 ON t1(a60); |
| CREATE INDEX t1a61 ON t1(a61); |
| CREATE INDEX t1a62 ON t1(a62); |
| CREATE INDEX t1a63 ON t1(a63); |
| CREATE INDEX x01x ON x01(b01); |
| CREATE INDEX x02x ON x02(b02); |
| CREATE INDEX x03x ON x03(b03); |
| CREATE INDEX x04x ON x04(b04); |
| CREATE INDEX x05x ON x05(b05); |
| CREATE INDEX x06x ON x06(b06); |
| CREATE INDEX x07x ON x07(b07); |
| CREATE INDEX x08x ON x08(b08); |
| CREATE INDEX x09x ON x09(b09); |
| CREATE INDEX x10x ON x10(b10); |
| CREATE INDEX x11x ON x11(b11); |
| CREATE INDEX x12x ON x12(b12); |
| CREATE INDEX x13x ON x13(b13); |
| CREATE INDEX x14x ON x14(b14); |
| CREATE INDEX x15x ON x15(b15); |
| CREATE INDEX x16x ON x16(b16); |
| CREATE INDEX x17x ON x17(b17); |
| CREATE INDEX x18x ON x18(b18); |
| CREATE INDEX x19x ON x19(b19); |
| CREATE INDEX x20x ON x20(b20); |
| CREATE INDEX x21x ON x21(b21); |
| CREATE INDEX x22x ON x22(b22); |
| CREATE INDEX x23x ON x23(b23); |
| CREATE INDEX x24x ON x24(b24); |
| CREATE INDEX x25x ON x25(b25); |
| CREATE INDEX x26x ON x26(b26); |
| CREATE INDEX x27x ON x27(b27); |
| CREATE INDEX x28x ON x28(b28); |
| CREATE INDEX x29x ON x29(b29); |
| CREATE INDEX x30x ON x30(b30); |
| CREATE INDEX x31x ON x31(b31); |
| CREATE INDEX x32x ON x32(b32); |
| CREATE INDEX x33x ON x33(b33); |
| CREATE INDEX x34x ON x34(b34); |
| CREATE INDEX x35x ON x35(b35); |
| CREATE INDEX x36x ON x36(b36); |
| CREATE INDEX x37x ON x37(b37); |
| CREATE INDEX x38x ON x38(b38); |
| CREATE INDEX x39x ON x39(b39); |
| CREATE INDEX x40x ON x40(b40); |
| CREATE INDEX x41x ON x41(b41); |
| CREATE INDEX x42x ON x42(b42); |
| CREATE INDEX x43x ON x43(b43); |
| CREATE INDEX x44x ON x44(b44); |
| CREATE INDEX x45x ON x45(b45); |
| CREATE INDEX x46x ON x46(b46); |
| CREATE INDEX x47x ON x47(b47); |
| CREATE INDEX x48x ON x48(b48); |
| CREATE INDEX x49x ON x49(b49); |
| CREATE INDEX x50x ON x50(b50); |
| CREATE INDEX x51x ON x51(b51); |
| CREATE INDEX x52x ON x52(b52); |
| CREATE INDEX x53x ON x53(b53); |
| CREATE INDEX x54x ON x54(b54); |
| CREATE INDEX x55x ON x55(b55); |
| CREATE INDEX x56x ON x56(b56); |
| CREATE INDEX x57x ON x57(b57); |
| CREATE INDEX x58x ON x58(b58); |
| CREATE INDEX x59x ON x59(b59); |
| CREATE INDEX x60x ON x60(b60); |
| CREATE INDEX x61x ON x61(b61); |
| CREATE INDEX x62x ON x62(b62); |
| CREATE INDEX x63x ON x63(b63); |
| ANALYZE sqlite_schema; |
| INSERT INTO sqlite_stat1(tbl,idx,stat) VALUES |
| ('t1','t1a01','172800 14400'), |
| ('t1','t1a02','172800 13293'), |
| ('t1','t1a03','172800 12343'), |
| ('t1','t1a04','172800 11520'), |
| ('t1','t1a05','172800 10800'), |
| ('t1','t1a06','172800 10165'), |
| ('t1','t1a07','172800 9600'), |
| ('t1','t1a08','172800 9095'), |
| ('t1','t1a09','172800 8640'), |
| ('t1','t1a10','172800 8229'), |
| ('t1','t1a11','172800 7855'), |
| ('t1','t1a12','172800 7514'), |
| ('t1','t1a13','172800 7200'), |
| ('t1','t1a14','172800 6912'), |
| ('t1','t1a15','172800 6647'), |
| ('t1','t1a16','172800 6400'), |
| ('t1','t1a17','172800 6172'), |
| ('t1','t1a18','172800 5959'), |
| ('t1','t1a19','172800 5760'), |
| ('t1','t1a20','172800 5575'), |
| ('t1','t1a21','172800 5400'), |
| ('t1','t1a22','172800 5237'), |
| ('t1','t1a23','172800 5083'), |
| ('t1','t1a24','172800 4938'), |
| ('t1','t1a25','172800 4800'), |
| ('t1','t1a26','172800 4671'), |
| ('t1','t1a27','172800 4548'), |
| ('t1','t1a28','172800 4431'), |
| ('t1','t1a29','172800 4320'), |
| ('t1','t1a30','172800 4215'), |
| ('t1','t1a31','172800 4115'), |
| ('t1','t1a32','172800 4019'), |
| ('t1','t1a33','172800 6172'), |
| ('t1','t1a34','172800 5959'), |
| ('t1','t1a35','172800 5760'), |
| ('t1','t1a36','172800 5575'), |
| ('t1','t1a37','172800 5400'), |
| ('t1','t1a38','172800 5237'), |
| ('t1','t1a39','172800 5083'), |
| ('t1','t1a40','172800 4938'), |
| ('t1','t1a41','172800 4800'), |
| ('t1','t1a42','172800 4671'), |
| ('t1','t1a43','172800 4548'), |
| ('t1','t1a44','172800 4431'), |
| ('t1','t1a45','172800 4320'), |
| ('t1','t1a46','172800 4215'), |
| ('t1','t1a47','172800 4115'), |
| ('t1','t1a48','172800 4019'), |
| ('t1','t1a49','172800 6172'), |
| ('t1','t1a50','172800 5959'), |
| ('t1','t1a51','172800 5760'), |
| ('t1','t1a52','172800 5575'), |
| ('t1','t1a53','172800 5400'), |
| ('t1','t1a54','172800 5237'), |
| ('t1','t1a55','172800 5083'), |
| ('t1','t1a56','172800 4938'), |
| ('t1','t1a57','172800 4800'), |
| ('t1','t1a58','172800 4671'), |
| ('t1','t1a59','172800 4548'), |
| ('t1','t1a60','172800 4431'), |
| ('t1','t1a61','172800 4320'), |
| ('t1','t1a62','172800 4215'), |
| ('t1','t1a63','172800 4115'), |
| ('x01','x01x','80 2'), |
| ('x02','x02x','120 2'), |
| ('x03','x03x','160 2'), |
| ('x04','x04x','20 2'), |
| ('x05','x05x','24 2'), |
| ('x06','x06x','32 2'), |
| ('x07','x07x','36 2'), |
| ('x08','x08x','40 2'), |
| ('x09','x09x','44 2'), |
| ('x10','x10x','48 2'), |
| ('x11','x11x','52 2'), |
| ('x12','x12x','56 2'), |
| ('x13','x13x','60 2'), |
| ('x14','x14x','64 2'), |
| ('x15','x15x','72 2'), |
| ('x16','x16x','80 2'), |
| ('x17','x17x','80 2'), |
| ('x18','x18x','120 2'), |
| ('x19','x19x','160 2'), |
| ('x20','x20x','20 2'), |
| ('x21','x21x','24 2'), |
| ('x22','x22x','32 2'), |
| ('x23','x23x','36 2'), |
| ('x24','x24x','40 2'), |
| ('x25','x25x','44 2'), |
| ('x26','x26x','48 2'), |
| ('x27','x27x','52 2'), |
| ('x28','x28x','56 2'), |
| ('x29','x29x','60 2'), |
| ('x30','x30x','64 2'), |
| ('x31','x31x','72 2'), |
| ('x32','x32x','80 2'), |
| ('x33','x33x','80 2'), |
| ('x34','x34x','120 2'), |
| ('x35','x35x','160 2'), |
| ('x36','x36x','20 2'), |
| ('x37','x37x','24 2'), |
| ('x38','x38x','32 2'), |
| ('x39','x39x','36 2'), |
| ('x40','x40x','40 2'), |
| ('x41','x41x','44 2'), |
| ('x42','x42x','48 2'), |
| ('x43','x43x','52 2'), |
| ('x44','x44x','56 2'), |
| ('x45','x45x','60 2'), |
| ('x46','x46x','64 2'), |
| ('x47','x47x','72 2'), |
| ('x48','x48x','80 2'), |
| ('x49','x49x','80 2'), |
| ('x50','x50x','120 2'), |
| ('x51','x51x','160 2'), |
| ('x52','x52x','20 2'), |
| ('x53','x53x','24 2'), |
| ('x54','x54x','32 2'), |
| ('x55','x55x','36 2'), |
| ('x56','x56x','40 2'), |
| ('x57','x57x','44 2'), |
| ('x58','x58x','48 2'), |
| ('x59','x59x','52 2'), |
| ('x60','x60x','56 2'), |
| ('x61','x61x','60 2'), |
| ('x62','x62x','64 2'), |
| ('x63','x63x','72 2'); |
| ANALYZE sqlite_schema; |
| } |
| do_execsql_test 1.2 { |
| EXPLAIN QUERY PLAN |
| SELECT c01, c02, c03 |
| FROM t1, x01, x02, x03 |
| WHERE a01=b01 AND a02=b02 AND a03=b03; |
| } {/SCAN t1.*SEARCH.*SEARCH.*SEARCH/} |
| do_execsql_test 1.3 { |
| EXPLAIN QUERY PLAN |
| SELECT c01, c02, c03, c04 |
| FROM t1, x01, x02, x03, x04 |
| WHERE a01=b01 AND a02=b02 AND a03=b03 AND a04=b04; |
| } {/SCAN .*SEARCH .*SEARCH .*SEARCH .*SEARCH /} |
| do_execsql_test 1.4 { |
| EXPLAIN QUERY PLAN |
| SELECT c01, c02, c03, c04, c05 |
| FROM t1, x01, x02, x03, x04, x05 |
| WHERE a01=b01 AND a02=b02 AND a03=b03 AND a04=b04 AND a05=b05; |
| } {/SCAN .*SEARCH .*SEARCH .*SEARCH .*SEARCH .*SEARCH/} |
| do_execsql_test 1.5 { |
| EXPLAIN QUERY PLAN |
| SELECT c01, c02, c03, c04, c05, c06 |
| FROM t1, x01, x02, x03, x04, x05, x06 |
| WHERE a01=b01 AND a02=b02 AND a03=b03 AND a04=b04 AND a05=b05 |
| AND a06=b06; |
| } {/SCAN .*SEARCH .*SEARCH .*SEARCH .*SEARCH .*SEARCH .*SEARCH/} |
| do_execsql_test 1.6 { |
| EXPLAIN QUERY PLAN |
| SELECT c01, c02, c03, c04, c05, c06, c07 |
| FROM t1, x01, x02, x03, x04, x05, x06, x07 |
| WHERE a01=b01 AND a02=b02 AND a03=b03 AND a04=b04 AND a05=b05 |
| AND a06=b06 AND a07=b07; |
| } {/SCAN .*SEARCH .*SEARCH .*SEARCH .*SEARCH .*SEARCH .*SEARCH .*SEARCH/} |
| do_execsql_test 1.7 { |
| EXPLAIN QUERY PLAN |
| SELECT c01, c02, c03, c04, c05, c06, c07, c08 |
| FROM t1, x01, x02, x03, x04, x05, x06, x07, x08 |
| WHERE a01=b01 AND a02=b02 AND a03=b03 AND a04=b04 AND a05=b05 |
| AND a06=b06 AND a07=b07 AND a08=b08; |
| } {~/SCAN.*SCAN/} |
| do_execsql_test 1.8 { |
| EXPLAIN QUERY PLAN |
| SELECT c01, c02, c03, c04, c05, c06, c07, c08, |
| c09, c10, c11, c12, c13, c14, c15, c16, |
| c17, c18, c19, c20, c21, c22, c23, c24, |
| c25, c26, c27, c28, c29, c30, c31, c32 |
| FROM t1, x01, x02, x03, x04, x05, x06, x07, x08, |
| x09, x10, x11, x12, x13, x14, x15, x16, |
| x17, x18, x19, x20, x21, x22, x23, x24, |
| x25, x26, x27, x28, x29, x30, x31, x32 |
| WHERE a01=b01 AND a02=b02 AND a03=b03 AND a04=b04 AND a05=b05 AND a06=b06 |
| AND a07=b07 AND a08=b08 AND a09=b09 AND a10=b10 AND a11=b11 AND a12=b12 |
| AND a13=b13 AND a14=b14 AND a15=b15 AND a16=b16 AND a17=b17 AND a18=b18 |
| AND a19=b19 AND a20=b20 AND a21=b21 AND a22=b22 AND a23=b23 AND a24=b24 |
| AND a25=b25 AND a26=b26 AND a27=b27 AND a28=b28 AND a29=b29 AND a30=b30 |
| AND a31=b31 AND a32=b32; |
| } {~/SCAN.*SCAN/} |
| do_execsql_test 1.9 { |
| EXPLAIN QUERY PLAN |
| SELECT c01, c02, c03, c04, c05, c06, c07, c08, |
| c09, c10, c11, c12, c13, c14, c15, c16, |
| c17, c18, c19, c20, c21, c22, c23, c24, |
| c25, c26, c27, c28, c29, c30, c31, c32, |
| c33, c34, c35, c36, c37, c38, c39, c40, |
| c41, c42, c43, c44, c45, c46, c47, c48, |
| c49, c50, c51, c52, c53, c54, c55, c56, |
| c57, c58, c59, c60, c61, c62, c63 |
| FROM t1, x01, x02, x03, x04, x05, x06, x07, x08, |
| x09, x10, x11, x12, x13, x14, x15, x16, |
| x17, x18, x19, x20, x21, x22, x23, x24, |
| x25, x26, x27, x28, x29, x30, x31, x32, |
| x33, x34, x35, x36, x37, x38, x39, x40, |
| x41, x42, x43, x44, x45, x46, x47, x48, |
| x49, x50, x51, x52, x53, x54, x55, x56, |
| x57, x58, x59, x60, x61, x62, x63 |
| WHERE a01=b01 AND a02=b02 AND a03=b03 AND a04=b04 AND a05=b05 AND a06=b06 |
| AND a07=b07 AND a08=b08 AND a09=b09 AND a10=b10 AND a11=b11 AND a12=b12 |
| AND a13=b13 AND a14=b14 AND a15=b15 AND a16=b16 AND a17=b17 AND a18=b18 |
| AND a19=b19 AND a20=b20 AND a21=b21 AND a22=b22 AND a23=b23 AND a24=b24 |
| AND a25=b25 AND a26=b26 AND a27=b27 AND a28=b28 AND a29=b29 AND a30=b30 |
| AND a31=b31 AND a32=b32 AND a33=b33 AND a34=b34 AND a35=b35 AND a36=b36 |
| AND a37=b37 AND a38=b38 AND a39=b39 AND a40=b40 AND a41=b41 AND a42=b42 |
| AND a43=b43 AND a44=b44 AND a45=b45 AND a46=b46 AND a47=b47 AND a48=b48 |
| AND a49=b49 AND a50=b50 AND a51=b51 AND a52=b52 AND a53=b53 AND a54=b54 |
| AND a55=b55 AND a56=b56 AND a57=b57 AND a58=b58 AND a59=b59 AND a60=b60 |
| AND a61=b61 AND a62=b62 AND a63=b63; |
| } {~/SCAN.*SCAN/} |
| |
| |
| |
| finish_test |