## Summary **No review yet** ## Minimized query ```sql .timeout -1 BEGIN; PRAGMA case_sensitive_like = OFF; .eqp full ATTACH DATABASE ':memory:' AS aux5; .stats vmstep PRAGMA wal_checkpoint('PASSIVE'); .prompt 'IPA eli isopropanoli on loistava puhdistusaine joka irrataa' .width -(-((x'ff77' + jsonb_array(CAST(pi() AS DOUB))))) hex(unlikely(replace(x'449094d71496db26fb', '', 'x'))) NULL CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT, c INT, d INT); -- PRAGMA empty_result_callbacks; INSERT INTO t1 VALUES (CAST(nullif(-(-(1 ->> '$[0]')), NULL) AS CHAR(10)), 'Wernher', 10, 100); INSERT INTO t1 VALUES (2, 'von', 20, 200); INSERT INTO t1 VALUES (3, 'Braun', 30, 300); CREATE INDEX t1bc ON t1(b, c); PRAGMA writable_schema = ON; .imposter t1bc t2 WITH _m AS MATERIALIZED (SELECT * FROM T2) SELECT * FROM t2; SELECT b, c FROM t1 ORDER BY b, c; .quit .dump CREATE TABLE T ( a INTEGER, b REAL ); INSERT INTO T VALUES (cosh(1),1.5), (2,-2.5), (3,0.0); CREATE INDEX c ON T(b); SELECT * FROM T WHERE NOT NOT (NOT NOT (NOT b >= -2.5 AND b < 2.0)) ; REINDEX T; UPDATE T SET b = CURRENT_TIMESTAMP WHERE 1 RETURNING *; INSERT INTO T SELECT * FROM T; SELECT * FROM T WHERE EXISTS (SELECT 1 FROM T WHERE +a > 0); CREATE TABLE T ( A VARCHAR(10) PRIMARY KEY, B VARCHAR(15), C BIGINT, UNIQUE (B, C) ); INSERT INTO T VALUES ('a', 'p', -9223372036854775808); INSERT INTO T VALUES ('b', 'q', 4000); INSERT INTO T VALUES ('c', 'r', 1700); INSERT INTO T VALUES ('d', 'r', 9223372036854775807); INSERT INTO T VALUES ('e', 's', 0); SELECT A, C FROM T WHERE +C > 1200 AND C < 9999999999 ORDER BY C; WITH m AS MATERIALIZED (SELECT * FROM T) SELECT m.a FROM m NATURAL JOIN m AS m2 ON m.a = m2.a; ALTER TABLE T ADD COLUMN extra_7396 FLOA COLLATE NOCASE; ALTER TABLE T ADD COLUMN extra_5763 BIGINT DEFAULT NULL; SELECT * FROM T WHERE a IN (SELECT DISTINCT a FROM T); DELETE FROM T WHERE +rowid = 52; DELETE FROM T WHERE 1; SELECT STRING_AGG(b) FROM T; CREATE UNIQUE INDEX IF NOT EXISTS idx_T_150 ON T((a + 1)); ALTER TABLE T RENAME COLUMN B TO B_r1410; ALTER TABLE t1 DROP COLUMN a; INSERT INTO t1 VALUES (NULL, NULL, NULL, NULL); ALTER TABLE t1 DROP COLUMN d; VACUUM; INSERT INTO T SELECT * FROM T; CREATE UNIQUE INDEX IF NOT EXISTS idx_T_2079 ON T(C COLLATE NOCASE) WHERE C IS NOT NULL; INSERT INTO T VALUES (1, 1, 'x') ON CONFLICT(A) DO UPDATE SET A = excluded.A, B = excluded.B, C = excluded.C; SELECT * FROM t1; ANALYZE; CREATE TABLE T1 ( A VARCHAR(15) PRIMARY KEY, B VARCHAR(30) NOT NULL UNIQUE ); CREATE TABLE _m ( A VARCHAR(10) PRIMARY KEY, X VARCHAR(15) NOT NULL, C BIGINT, FOREIGN KEY (X) REFERENCES T1(A) ); INSERT INTO T1 VALUES ('p', 'x'); INSERT INTO T1 VALUES ('q', 'y'); INSERT INTO T2 VALUES ('a', 'p', 9223372036854775807); INSERT INTO T2 VALUES ('b', 'q', -9223372036854775808); SELECT X, SUM(C) AS D, COUNT(*) AS E FROM T2 GROUP BY X; ANALYZE T2; VACUUM main; ALTER TABLE T ADD COLUMN extra_276 INT8 COLLATE RTRIM; DROP TABLE IF EXISTS t1; SELECT COUNT(*) FILTER (WHERE C IS NOT NULL), SUM(rowid) FILTER (WHERE C > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(C) FILTER (WHERE C > 0 AND C < 100), COUNT(*) FILTER (WHERE typeof(C) = "text") FROM T2; SELECT COUNT(*) FROM T; INSERT INTO T2 VALUES (NULL, NULL, NULL); ALTER TABLE T RENAME COLUMN A TO A_r7435; SELECT SUM(a) OVER (ORDER BY a) FROM t1; SELECT * FROM T2; CREATE TEMP VIEW IF NOT EXISTS v_T1_1714 AS SELECT B FROM T1; REINDEX; CREATE TABLE T ( a INTEGER, b REAL, c REAL ); INSERT INTO T VALUES (1,1.5,10.0), (2,-2.5,20.0), (3,-9e999,30.0); SELECT * FROM T WHERE b < 2.0 ORDER BY b; SELECT * FROM T1 AS a LEFT OUTER JOIN T AS b ON a.rowid = b.rowid; SELECT STRING_AGG(A, '|') FROM T2; REINDEX t1; INSERT INTO T VALUES (1, NULL, NULL) ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c; INSERT OR REPLACE INTO t1 VALUES (0, 7, 4, -10); CREATE TEMP VIEW IF NOT EXISTS v_T_4522 AS SELECT b FROM T; PRAGMA defer_foreign_keys = TRUE; ALTER TABLE T RENAME COLUMN c TO c_r3156; SELECT * FROM T AS a FULL JOIN T1 AS b ON a.rowid = b.rowid; DETACH DATABASE aux5; SELECT COUNT(*) FROM t1; INSERT INTO t1 VALUES (NULL, NULL, NULL, NULL); SELECT AVG(a) FROM t1; PRAGMA auto_vacuum = FULL; ALTER TABLE T ADD COLUMN extra_265 DOUB UNIQUE; DROP INDEX IF EXISTS t1; END TRANSACTION; WITH a AS (SELECT * FROM _m), b AS (SELECT * FROM _m) SELECT * FROM a UNION ALL SELECT * FROM b; ``` ## Actual output ```sql addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 1 0 0 Start at 1 1 String8 0 1 0 :memory: 0 r[1]=':memory:' 2 String8 0 2 0 aux5 0 r[2]='aux5' 3 Null 0 3 0 0 r[3]=NULL 4 Function 0 1 4 sqlite_attach(3) 0 r[4]=func(r[1..3]) 5 Expire 1 0 0 0 6 Halt 0 0 0 0 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 1 0 0 Start at 1 1 Expire 1 1 0 0 2 Checkpoint 12 0 1 0 3 ResultRow 1 3 0 0 output=r[1..3] 4 Halt 0 0 0 0 0|-1|-1 VM-steps: 5 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 28 0 0 Start at 28 1 ReadCookie 0 3 2 0 2 If 3 5 0 0 3 SetCookie 0 2 4 0 4 SetCookie 0 5 1 0 5 CreateBtree 0 2 1 0 r[2]=root iDb=0 flags=1 6 OpenWrite 0 1 0 5 0 root=1 iDb=0 7 NewRowid 0 1 0 0 r[1]=rowid 8 Blob 6 3 0  0 r[3]= (len=6) 9 Insert 0 3 1 8 intkey=r[1] data=r[3] 10 Close 0 0 0 0 11 Close 0 0 0 0 12 Null 0 4 5 0 r[4..5]=NULL 13 Noop 2 0 4 0 14 OpenWrite 1 1 0 5 0 root=1 iDb=0; sqlite_master 15 SeekRowid 1 17 1 0 intkey=r[1] 16 Rowid 1 5 0 0 r[5]=[P2]=PX rowid of P1 17 IsNull 5 25 0 0 if r[5]==NULL goto 25 18 String8 0 6 0 table 0 r[6]='table' 19 String8 0 7 0 t1 0 r[7]='t1' 20 String8 0 8 0 t1 0 r[8]='t1' 21 SCopy 2 9 0 0 r[9]=r[2] 22 String8 0 10 0 CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT, c INT, d INT) 0 r[10]='CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT, c INT, d INT)' 23 MakeRecord 6 5 4 BBBDB 0 r[4]=mkrec(r[6..10]) 24 Insert 1 4 5 0 intkey=r[5] data=r[4] 25 SetCookie 0 1 1 0 26 ParseSchema 0 0 0 tbl_name='t1' AND type!='trigger' 0 27 Halt 0 0 0 0 28 Transaction 0 1 0 0 1 usesStmtJournal=1 29 Goto 0 1 0 0 VM-steps: 30 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 28 0 0 Start at 28 1 OpenWrite 0 2 0 4 0 root=2 iDb=0; t1 2 SoftNull 2 0 0 0 r[2]=NULL 3 String8 0 3 0 Wernher 0 r[3]='Wernher' 4 Integer 10 4 0 0 r[4]=10 5 Integer 100 5 0 0 r[5]=100 6 Once 0 17 0 0 7 Integer 0 10 0 0 r[10]=0 8 Integer 0 12 0 0 r[12]=0 9 Integer 1 14 0 0 r[14]=1 10 String8 0 15 0 $[0] 0 r[15]='$[0]' 11 Function 3 14 13 ->>(2) 0 r[13]=func(r[14..15]) 12 Subtract 13 12 11 0 r[11]=r[12]-r[13] 13 Subtract 11 10 8 0 r[8]=r[10]-r[11] 14 Null 0 9 0 0 r[9]=NULL 15 CollSeq 0 0 0 BINARY-8 0 16 Function 3 8 7 nullif(2) 0 r[7]=func(r[8..9]) 17 SCopy 7 1 0 0 r[1]=r[7] 18 Cast 1 66 0 0 affinity(r[1]) 19 NotNull 1 21 0 0 if r[1]!=NULL goto 21 20 NewRowid 0 1 0 0 r[1]=rowid 21 MustBeInt 1 0 0 0 22 Noop 0 0 0 0 uniqueness check for ROWID 23 NotExists 0 25 1 0 intkey=r[1] 24 Halt 1555 2 0 t1.a 2 25 MakeRecord 2 4 6 DBDD 0 r[6]=mkrec(r[2..5]) 26 Insert 0 6 1 t1 49 intkey=r[1] data=r[6] 27 Halt 0 0 0 0 28 Transaction 0 1 1 0 1 usesStmtJournal=0 29 Goto 0 1 0 0 VM-steps: 29 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 16 0 0 Start at 16 1 OpenWrite 0 2 0 4 0 root=2 iDb=0; t1 2 SoftNull 2 0 0 0 r[2]=NULL 3 String8 0 3 0 von 0 r[3]='von' 4 Integer 20 4 0 0 r[4]=20 5 Integer 200 5 0 0 r[5]=200 6 Integer 2 1 0 0 r[1]=2 7 NotNull 1 9 0 0 if r[1]!=NULL goto 9 8 NewRowid 0 1 0 0 r[1]=rowid 9 MustBeInt 1 0 0 0 10 Noop 0 0 0 0 uniqueness check for ROWID 11 NotExists 0 13 1 0 intkey=r[1] 12 Halt 1555 2 0 t1.a 2 13 MakeRecord 2 4 6 DBDD 0 r[6]=mkrec(r[2..5]) 14 Insert 0 6 1 t1 49 intkey=r[1] data=r[6] 15 Halt 0 0 0 0 16 Transaction 0 1 1 0 1 usesStmtJournal=0 17 Goto 0 1 0 0 VM-steps: 16 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 16 0 0 Start at 16 1 OpenWrite 0 2 0 4 0 root=2 iDb=0; t1 2 SoftNull 2 0 0 0 r[2]=NULL 3 String8 0 3 0 Braun 0 r[3]='Braun' 4 Integer 30 4 0 0 r[4]=30 5 Integer 300 5 0 0 r[5]=300 6 Integer 3 1 0 0 r[1]=3 7 NotNull 1 9 0 0 if r[1]!=NULL goto 9 8 NewRowid 0 1 0 0 r[1]=rowid 9 MustBeInt 1 0 0 0 10 Noop 0 0 0 0 uniqueness check for ROWID 11 NotExists 0 13 1 0 intkey=r[1] 12 Halt 1555 2 0 t1.a 2 13 MakeRecord 2 4 6 DBDD 0 r[6]=mkrec(r[2..5]) 14 Insert 0 6 1 t1 49 intkey=r[1] data=r[6] 15 Halt 0 0 0 0 16 Transaction 0 1 1 0 1 usesStmtJournal=0 17 Goto 0 1 0 0 VM-steps: 16 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 34 0 0 Start at 34 1 Noop 0 33 0 0 2 CreateBtree 0 1 2 0 r[1]=root iDb=0 flags=2 3 OpenWrite 0 1 0 5 0 root=1 iDb=0; sqlite_master 4 String8 0 3 0 index 0 r[3]='index' 5 String8 0 4 0 t1bc 0 r[4]='t1bc' 6 String8 0 5 0 t1 0 r[5]='t1' 7 SCopy 1 6 0 0 r[6]=r[1] 8 String8 0 7 0 CREATE INDEX t1bc ON t1(b, c) 0 r[7]='CREATE INDEX t1bc ON t1(b, c)' 9 NewRowid 0 2 0 0 r[2]=rowid 10 MakeRecord 3 5 8 BBBDB 0 r[8]=mkrec(r[3..7]) 11 Insert 0 8 2 24 intkey=r[2] data=r[8] 12 SorterOpen 3 0 2 k(3,,,) 0 13 OpenRead 1 2 0 4 0 root=2 iDb=0; t1 14 Rewind 1 21 0 0 15 Column 1 1 10 0 r[10]=t1.b 16 Column 1 2 11 0 r[11]=t1.c 17 Rowid 1 12 0 0 r[12]=t1.rowid 18 MakeRecord 10 3 9 0 r[9]=mkrec(r[10..12]) 19 SorterInsert 3 9 0 0 key=r[9] 20 Next 1 15 0 0 21 OpenWrite 2 1 0 k(3,,,) 17 root=1 iDb=0 22 SorterSort 3 27 0 0 23 SorterData 3 9 2 0 r[9]=data 24 SeekEnd 2 0 0 0 25 IdxInsert 2 9 0 16 key=r[9] 26 SorterNext 3 23 0 0 27 Close 1 0 0 0 28 Close 2 0 0 0 29 Close 3 0 0 0 30 SetCookie 0 1 2 0 31 ParseSchema 0 0 0 name='t1bc' AND type='index' 0 32 Expire 0 1 0 0 33 Halt 0 0 0 0 34 Transaction 0 1 1 0 1 usesStmtJournal=1 35 Goto 0 1 0 0 VM-steps: 56 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 1 0 0 Start at 1 1 Expire 1 1 0 0 2 Expire 0 0 0 0 3 Halt 0 0 0 0 VM-steps: 4 CREATE TABLE "t2"("b","c","_ROWID_",PRIMARY KEY("b","c","_ROWID_"))WITHOUT ROWID; WARNING: writing to an imposter table will corrupt the "t1bc" index! QUERY PLAN `--SCAN t2 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 9 0 0 Start at 9 1 OpenRead 1 3 0 k(3,,,) 0 root=3 iDb=0; sqlite_autoindex_t2_1 2 Rewind 1 8 1 0 0 3 Column 1 0 1 0 r[1]=t2.b 4 Column 1 1 2 0 r[2]=t2.c 5 Column 1 2 3 0 r[3]=t2._ROWID_ 6 ResultRow 1 3 0 0 output=r[1..3] 7 Next 1 3 0 1 8 Halt 0 0 0 0 9 Transaction 0 0 2 0 1 usesStmtJournal=0 10 Goto 0 1 0 0 Braun|30|3 Wernher|10|1 von|20|2 VM-steps: 21 QUERY PLAN `--SCAN t1 USING COVERING INDEX t1bc addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 9 0 0 Start at 9 1 Noop 1 5 0 0 2 OpenRead 2 3 0 k(3,,,) 0 root=3 iDb=0; t1bc 3 Rewind 2 8 1 0 0 4 Column 2 0 1 0 r[1]=t1.b 5 Column 2 1 2 0 r[2]=t1.c 6 ResultRow 1 2 0 0 output=r[1..2] 7 Next 2 4 0 1 8 Halt 0 0 0 0 9 Transaction 0 0 2 0 1 usesStmtJournal=0 10 Goto 0 1 0 0 Braun|30 Wernher|10 von|20 VM-steps: 19 ``` ## Expectation ```sql addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 7 0 0 Start at 7 1 String8 0 1 0 :memory: 0 r[1]=':memory:' 2 String8 0 2 0 aux5 0 r[2]='aux5' 3 Null 0 3 0 0 r[3]=NULL 4 Function 0 1 4 sqlite_attach(3) 0 r[4]=func(r[1..3]) 5 Expire 1 0 0 0 6 Halt 0 0 0 0 7 Goto 0 1 0 0 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 5 0 0 Start at 5 1 Expire 1 1 0 0 2 Checkpoint 12 0 1 0 3 ResultRow 1 3 0 0 output=r[1..3] 4 Halt 0 0 0 0 5 Goto 0 1 0 0 0|-1|-1 VM-steps: 6 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 28 0 0 Start at 28 1 ReadCookie 0 3 2 0 2 If 3 5 0 0 3 SetCookie 0 2 4 0 4 SetCookie 0 5 1 0 5 CreateBtree 0 2 1 0 r[2]=root iDb=0 flags=1 6 OpenWrite 0 1 0 5 0 root=1 iDb=0 7 NewRowid 0 1 0 0 r[1]=rowid 8 Blob 6 3 0  0 r[3]= (len=6) 9 Insert 0 3 1 8 intkey=r[1] data=r[3] 10 Close 0 0 0 0 11 Close 0 0 0 0 12 Null 0 4 5 0 r[4..5]=NULL 13 Noop 2 0 4 0 14 OpenWrite 1 1 0 5 0 root=1 iDb=0; sqlite_master 15 SeekRowid 1 17 1 0 intkey=r[1] 16 Rowid 1 5 0 0 r[5]= rowid of 1 17 IsNull 5 25 0 0 if r[5]==NULL goto 25 18 String8 0 6 0 table 0 r[6]='table' 19 String8 0 7 0 t1 0 r[7]='t1' 20 String8 0 8 0 t1 0 r[8]='t1' 21 Copy 2 9 0 0 r[9]=r[2] 22 String8 0 10 0 CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT, c INT, d INT) 0 r[10]='CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT, c INT, d INT)' 23 MakeRecord 6 5 4 BBBDB 0 r[4]=mkrec(r[6..10]) 24 Insert 1 4 5 0 intkey=r[5] data=r[4] 25 SetCookie 0 1 1 0 26 ParseSchema 0 0 0 tbl_name='t1' AND type!='trigger' 0 27 Halt 0 0 0 0 28 Transaction 0 1 0 0 1 usesStmtJournal=1 29 Goto 0 1 0 0 VM-steps: 30 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 28 0 0 Start at 28 1 OpenWrite 0 2 0 4 0 root=2 iDb=0; t1 2 SoftNull 2 0 0 0 r[2]=NULL 3 String8 0 3 0 Wernher 0 r[3]='Wernher' 4 Integer 10 4 0 0 r[4]=10 5 Integer 100 5 0 0 r[5]=100 6 Once 0 17 0 0 7 Integer 0 10 0 0 r[10]=0 8 Integer 0 12 0 0 r[12]=0 9 Integer 1 14 0 0 r[14]=1 10 String8 0 15 0 $[0] 0 r[15]='$[0]' 11 Function 3 14 13 ->>(2) 0 r[13]=func(r[14..15]) 12 Subtract 13 12 11 0 r[11]=r[12]-r[13] 13 Subtract 11 10 8 0 r[8]=r[10]-r[11] 14 Null 0 9 0 0 r[9]=NULL 15 CollSeq 0 0 0 BINARY-8 0 16 Function 3 8 7 nullif(2) 0 r[7]=func(r[8..9]) 17 SCopy 7 1 0 0 r[1]=r[7] 18 Cast 1 66 0 0 affinity(r[1]) 19 NotNull 1 21 0 0 if r[1]!=NULL goto 21 20 NewRowid 0 1 0 0 r[1]=rowid 21 MustBeInt 1 0 0 0 22 Noop 0 0 0 0 uniqueness check for ROWID 23 NotExists 0 25 1 0 intkey=r[1] 24 Halt 1555 2 0 t1.a 2 25 MakeRecord 2 4 6 DBDD 0 r[6]=mkrec(r[2..5]) 26 Insert 0 6 1 t1 49 intkey=r[1] data=r[6] 27 Halt 0 0 0 0 28 Transaction 0 1 1 0 1 usesStmtJournal=0 29 Goto 0 1 0 0 VM-steps: 29 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 16 0 0 Start at 16 1 OpenWrite 0 2 0 4 0 root=2 iDb=0; t1 2 SoftNull 2 0 0 0 r[2]=NULL 3 String8 0 3 0 von 0 r[3]='von' 4 Integer 20 4 0 0 r[4]=20 5 Integer 200 5 0 0 r[5]=200 6 Integer 2 1 0 0 r[1]=2 7 NotNull 1 9 0 0 if r[1]!=NULL goto 9 8 NewRowid 0 1 0 0 r[1]=rowid 9 MustBeInt 1 0 0 0 10 Noop 0 0 0 0 uniqueness check for ROWID 11 NotExists 0 13 1 0 intkey=r[1] 12 Halt 1555 2 0 t1.a 2 13 MakeRecord 2 4 6 DBDD 0 r[6]=mkrec(r[2..5]) 14 Insert 0 6 1 t1 49 intkey=r[1] data=r[6] 15 Halt 0 0 0 0 16 Transaction 0 1 1 0 1 usesStmtJournal=0 17 Goto 0 1 0 0 VM-steps: 16 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 16 0 0 Start at 16 1 OpenWrite 0 2 0 4 0 root=2 iDb=0; t1 2 SoftNull 2 0 0 0 r[2]=NULL 3 String8 0 3 0 Braun 0 r[3]='Braun' 4 Integer 30 4 0 0 r[4]=30 5 Integer 300 5 0 0 r[5]=300 6 Integer 3 1 0 0 r[1]=3 7 NotNull 1 9 0 0 if r[1]!=NULL goto 9 8 NewRowid 0 1 0 0 r[1]=rowid 9 MustBeInt 1 0 0 0 10 Noop 0 0 0 0 uniqueness check for ROWID 11 NotExists 0 13 1 0 intkey=r[1] 12 Halt 1555 2 0 t1.a 2 13 MakeRecord 2 4 6 DBDD 0 r[6]=mkrec(r[2..5]) 14 Insert 0 6 1 t1 49 intkey=r[1] data=r[6] 15 Halt 0 0 0 0 16 Transaction 0 1 1 0 1 usesStmtJournal=0 17 Goto 0 1 0 0 VM-steps: 16 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 34 0 0 Start at 34 1 Noop 0 33 0 0 2 CreateBtree 0 1 2 0 r[1]=root iDb=0 flags=2 3 OpenWrite 0 1 0 5 0 root=1 iDb=0; sqlite_master 4 String8 0 3 0 index 0 r[3]='index' 5 String8 0 4 0 t1bc 0 r[4]='t1bc' 6 String8 0 5 0 t1 0 r[5]='t1' 7 SCopy 1 6 0 0 r[6]=r[1] 8 String8 0 7 0 CREATE INDEX t1bc ON t1(b, c) 0 r[7]='CREATE INDEX t1bc ON t1(b, c)' 9 NewRowid 0 2 0 0 r[2]=rowid 10 MakeRecord 3 5 8 BBBDB 0 r[8]=mkrec(r[3..7]) 11 Insert 0 8 2 24 intkey=r[2] data=r[8] 12 SorterOpen 3 0 2 k(3,,,) 0 13 OpenRead 1 2 0 4 0 root=2 iDb=0; t1 14 Rewind 1 21 0 0 15 Column 1 1 10 0 r[10]= cursor 1 column 1 16 Column 1 2 11 0 r[11]= cursor 1 column 2 17 Rowid 1 12 0 0 r[12]=t1.rowid 18 MakeRecord 10 3 9 0 r[9]=mkrec(r[10..12]) 19 SorterInsert 3 9 0 0 key=r[9] 20 Next 1 15 0 0 21 OpenWrite 2 1 0 k(3,,,) 17 root=1 iDb=0 22 SorterSort 3 27 0 0 23 SorterData 3 9 2 0 r[9]=data 24 SeekEnd 2 0 0 0 25 IdxInsert 2 9 0 16 key=r[9] 26 SorterNext 3 23 0 0 27 Close 1 0 0 0 28 Close 2 0 0 0 29 Close 3 0 0 0 30 SetCookie 0 1 2 0 31 ParseSchema 0 0 0 name='t1bc' AND type='index' 0 32 Expire 0 1 0 0 33 Halt 0 0 0 0 34 Transaction 0 1 1 0 1 usesStmtJournal=1 35 Goto 0 1 0 0 VM-steps: 56 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 4 0 0 Start at 4 1 Expire 1 1 0 0 2 Expire 0 0 0 0 3 Halt 0 0 0 0 4 Goto 0 1 0 0 VM-steps: 5 CREATE TABLE "t2"("b","c","_ROWID_",PRIMARY KEY("b","c","_ROWID_"))WITHOUT ROWID; QUERY PLAN `--SCAN t2 addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 10 0 0 Start at 10 1 OpenRead 1 3 0 k(3,,,) 0 root=3 iDb=0; sqlite_autoindex_t2_1 2 Explain 2 0 214 SCAN t2 0 3 Rewind 1 9 1 0 0 4 Column 1 0 1 0 r[1]= cursor 1 column 0 5 Column 1 1 2 0 r[2]= cursor 1 column 1 6 Column 1 2 3 0 r[3]= cursor 1 column 2 7 ResultRow 1 3 0 0 output=r[1..3] 8 Next 1 4 0 1 9 Halt 0 0 0 0 10 Transaction 0 0 2 0 1 usesStmtJournal=0 11 Goto 0 1 0 0 Braun|30|3 Wernher|10|1 von|20|2 VM-steps: 21 QUERY PLAN `--SCAN t1 USING COVERING INDEX t1bc addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 10 0 0 Start at 10 1 Noop 1 5 0 0 2 OpenRead 2 3 0 k(3,,,) 0 root=3 iDb=0; t1bc 3 Explain 3 0 215 SCAN t1 USING COVERING INDEX t1bc 0 4 Rewind 2 9 1 0 0 5 Column 2 0 1 0 r[1]= cursor 2 column 0 6 Column 2 1 2 0 r[2]= cursor 2 column 1 7 ResultRow 1 2 0 0 output=r[1..2] 8 Next 2 5 0 1 9 Halt 0 0 0 0 10 Transaction 0 0 2 0 1 usesStmtJournal=0 11 Goto 0 1 0 0 Braun|30 Wernher|10 von|20 VM-steps: 19 ``` ## Flag ``` ```