1647 lines
103 KiB
Markdown
1647 lines
103 KiB
Markdown
## Summary
|
|
<!--Explain briefly what goes wrong and explain why you believe this is a bug and not the intended behavior of SQLite (if it is not a crash).-->**No review yet**
|
|
|
|
## Minimized query
|
|
|
|
```sql
|
|
.eqp full
|
|
PRAGMA case_sensitive_like = ON;
|
|
PRAGMA trusted_schema = ON;
|
|
SAVEPOINT sp1241;
|
|
PRAGMA pragma_list;
|
|
CREATE TABLE T (
|
|
A VARCHAR(15) PRIMARY KEY,
|
|
B VARCHAR(30) NOT NULL,
|
|
C NCHAR(55) UNIQUE
|
|
);
|
|
INSERT INTO T VALUES ('' || ('a'), 'x', -9223372036854775808);
|
|
INSERT INTO T VALUES ('b', 'y', -1000000);
|
|
INSERT INTO T VALUES ('c', 'y', 0);
|
|
INSERT INTO T VALUES ('d', 'y', 42);
|
|
INSERT INTO T VALUES ('e', 'x', 9223372036854775807);
|
|
INSERT INTO T VALUES ('f', 'z', 2147483648);
|
|
SELECT * FROM T WHERE +C <> 0 ORDER BY C DESC;
|
|
ATTACH DATABASE ':memory:' AS aux2;
|
|
CREATE TABLE t1(a INT PRIMARY KEY, b TEXT, c INT, d INT);
|
|
INSERT INTO t1 VALUES (1, 'Wernher', 10, 100);
|
|
creATE VIRTUAL TABLE t0 USING fts3("x", "y", "z");
|
|
DROP TABLE t0;
|
|
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
|
|
|
|
SELECT * FROM t2;
|
|
SELECT b, c FROM t1 ORDER BY b, c;
|
|
.quit
|
|
PRAGMA temp_store = '0';
|
|
CREATE TABLE T (
|
|
a TEXT,
|
|
b TEXT,
|
|
c REAL /* ? */ );
|
|
INSERT INTO T VALUES ('a','b',1.0), ('a','c',-1.0), ('b','d',0.0);
|
|
SELECT
|
|
COALESCE(a,'e') AS d,
|
|
COALESCE(b,'f') AS e,
|
|
SUM(c) AS f
|
|
FROM T
|
|
GROUP BY a,b;
|
|
PRAGMA empty_result_callbacks = FALSE;
|
|
PRAGMA default_cache_size = -1000;
|
|
.output
|
|
CREATE TABLE t1(a INTEGER, b TEXT, c BLOB, CHECK( coalesce(b,c) ));
|
|
INSERT INTO t1 VALUES(1, 2, 3);
|
|
ALTER TABLE t1 RENAME COLUMN b TO d;
|
|
CREATE TABLE t3(a, b, c, d, e, f, g, h, i, j, k, l, m, FOREIGN KEY (b, c, d, e, f, g, h, i, j, k, l, m) REFERENCES `t4`);
|
|
CREATE TABLE t4(x, y, z);
|
|
INSERT INTO t4 VALUES(3, 2, 1);
|
|
SELECT STRING_AGG(c) FROM t1;
|
|
ALTER TABLE t4 RENAME TO t4_r7558;
|
|
ALTER TABLE t1 ADD COLUMN extra_4840 INT NOT NULL DEFAULT 0;
|
|
INSERT INTO t3 VALUES (NULL, 'x', 1, 1, 1, 'x', 'x', 'x', NULL, 'x', 1, 'x', 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c;
|
|
DETACH DATABASE aux2;
|
|
CREATE TABLE T (
|
|
a INTEGER,
|
|
b TEXT,
|
|
c REAL
|
|
);
|
|
INSERT INTO T VALUES (1,'a',3.14), (1,'b',-7.75), (2,'c',-9e999);
|
|
SELECT b,a,c,
|
|
RANK() OVER (PARTITION BY a ORDER BY c DESC) AS d FROM T;
|
|
UPDATE T SET c = NULL WHERE c IS NOT NULL;
|
|
ALTER TABLE t1 DROP COLUMN a;
|
|
PRAGMA cache_size = -2000;
|
|
SELECT COUNT(*) FILTER (WHERE x IS NOT NULL), SUM(rowid) FILTER (WHERE +x > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(x) FILTER (WHERE x > 0 OR x < 100), COUNT(*) FILTER (WHERE typeof(x) = "text") FROM t4;
|
|
INSERT INTO t1 DEFAULT VALUES;
|
|
INSERT INTO t1 DEFAULT VALUES;
|
|
SELECT COUNT(*) FILTER (WHERE x IS NOT NULL), SUM(rowid) FILTER (WHERE x > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(x) FILTER (WHERE x > 0 AND x < 100), COUNT(*) FILTER (WHERE typeof(x) = "text") FROM t4;
|
|
SELECT COUNT(*) FROM t1;
|
|
DROP TRIGGER IF EXISTS t4;
|
|
DROP TRIGGER IF EXISTS t4;
|
|
PRAGMA vdbe_listing = 0;
|
|
INSERT OR REPLACE INTO t4 VALUES ('x', 0, 0);
|
|
SELECT * FROM T;
|
|
ALTER TABLE t1 RENAME TO t1_r8555;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
WITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1) SELECT * FROM cnt;
|
|
ALTER TABLE T DROP COLUMN a;
|
|
REINDEX;
|
|
DELETE FROM T WHERE 0 RETURNING *;
|
|
CREATE TRIGGER IF NOT EXISTS trg_t4_5386 BEFORE INSERT ON t4 BEGIN SELECT RAISE(ABORT, 'abort'); END;
|
|
ROLLBACK TRANSACTION TO SAVEPOINT sp1241;
|
|
RELEASE SAVEPOINT sp1241;
|
|
ALTER TABLE t3 RENAME TO t3_r7522;
|
|
DROP TABLE IF EXISTS t1;
|
|
INSERT INTO T VALUES (NULL, NULL, NULL);
|
|
INSERT INTO t3 SELECT * FROM t3;
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_t1_2809 ON t1(b COLLATE NOCASE) WHERE b IS NOT NULL;
|
|
ALTER TABLE T ADD COLUMN extra_3471 DATETIME DEFAULT CURRENT_TIMESTAMP;
|
|
CREATE TEMP VIEW IF NOT EXISTS v_t3_7658 AS SELECT i FROM t3;
|
|
VACUUM;
|
|
WITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<23) SELECT SUM(x) FROM cnt;
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_t3_5305 ON t3(b COLLATE NOCASE) WHERE b IS NOT NULL;
|
|
INSERT INTO t3 VALUES (1, NULL, 'x', 1, 1, 1, NULL, NULL, 1, 'x', 'x', NULL, 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c;
|
|
SELECT * FROM T WHERE a = (SELECT COUNT(*) FROM T);
|
|
CREATE TRIGGER IF NOT EXISTS trg_T_6545 BEFORE DELETE ON T FOR EACH ROW BEGIN SELECT RAISE(ROLLBACK, 'rb'); END;
|
|
DROP VIEW IF EXISTS t4;
|
|
INSERT INTO T SELECT * FROM T;
|
|
```
|
|
|
|
## Actual output
|
|
|
|
```sql
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 1 0 0 Start at 1
|
|
1 Expire 1 1 0 0
|
|
2 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 Expire 0 0 0 0
|
|
3 Halt 0 0 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 1 0 0 Start at 1
|
|
1 Savepoint 0 0 0 sp1241 0
|
|
2 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 String8 0 1 0 analysis_limit 0 r[1]='analysis_limit'
|
|
3 ResultRow 1 1 0 0 output=r[1]
|
|
4 String8 0 1 0 application_id 0 r[1]='application_id'
|
|
5 ResultRow 1 1 0 0 output=r[1]
|
|
6 String8 0 1 0 auto_vacuum 0 r[1]='auto_vacuum'
|
|
7 ResultRow 1 1 0 0 output=r[1]
|
|
8 String8 0 1 0 automatic_index 0 r[1]='automatic_index'
|
|
9 ResultRow 1 1 0 0 output=r[1]
|
|
10 String8 0 1 0 busy_timeout 0 r[1]='busy_timeout'
|
|
11 ResultRow 1 1 0 0 output=r[1]
|
|
12 String8 0 1 0 cache_size 0 r[1]='cache_size'
|
|
13 ResultRow 1 1 0 0 output=r[1]
|
|
14 String8 0 1 0 cache_spill 0 r[1]='cache_spill'
|
|
15 ResultRow 1 1 0 0 output=r[1]
|
|
16 String8 0 1 0 case_sensitive_like 0 r[1]='case_sensitive_like'
|
|
17 ResultRow 1 1 0 0 output=r[1]
|
|
18 String8 0 1 0 cell_size_check 0 r[1]='cell_size_check'
|
|
19 ResultRow 1 1 0 0 output=r[1]
|
|
20 String8 0 1 0 checkpoint_fullfsync 0 r[1]='checkpoint_fullfsync'
|
|
21 ResultRow 1 1 0 0 output=r[1]
|
|
22 String8 0 1 0 collation_list 0 r[1]='collation_list'
|
|
23 ResultRow 1 1 0 0 output=r[1]
|
|
24 String8 0 1 0 compile_options 0 r[1]='compile_options'
|
|
25 ResultRow 1 1 0 0 output=r[1]
|
|
26 String8 0 1 0 count_changes 0 r[1]='count_changes'
|
|
27 ResultRow 1 1 0 0 output=r[1]
|
|
28 String8 0 1 0 data_version 0 r[1]='data_version'
|
|
29 ResultRow 1 1 0 0 output=r[1]
|
|
30 String8 0 1 0 database_list 0 r[1]='database_list'
|
|
31 ResultRow 1 1 0 0 output=r[1]
|
|
32 String8 0 1 0 default_cache_size 0 r[1]='default_cache_size'
|
|
33 ResultRow 1 1 0 0 output=r[1]
|
|
34 String8 0 1 0 defer_foreign_keys 0 r[1]='defer_foreign_keys'
|
|
35 ResultRow 1 1 0 0 output=r[1]
|
|
36 String8 0 1 0 empty_result_callbacks 0 r[1]='empty_result_callbacks'
|
|
37 ResultRow 1 1 0 0 output=r[1]
|
|
38 String8 0 1 0 encoding 0 r[1]='encoding'
|
|
39 ResultRow 1 1 0 0 output=r[1]
|
|
40 String8 0 1 0 foreign_key_check 0 r[1]='foreign_key_check'
|
|
41 ResultRow 1 1 0 0 output=r[1]
|
|
42 String8 0 1 0 foreign_key_list 0 r[1]='foreign_key_list'
|
|
43 ResultRow 1 1 0 0 output=r[1]
|
|
44 String8 0 1 0 foreign_keys 0 r[1]='foreign_keys'
|
|
45 ResultRow 1 1 0 0 output=r[1]
|
|
46 String8 0 1 0 freelist_count 0 r[1]='freelist_count'
|
|
47 ResultRow 1 1 0 0 output=r[1]
|
|
48 String8 0 1 0 full_column_names 0 r[1]='full_column_names'
|
|
49 ResultRow 1 1 0 0 output=r[1]
|
|
50 String8 0 1 0 fullfsync 0 r[1]='fullfsync'
|
|
51 ResultRow 1 1 0 0 output=r[1]
|
|
52 String8 0 1 0 function_list 0 r[1]='function_list'
|
|
53 ResultRow 1 1 0 0 output=r[1]
|
|
54 String8 0 1 0 hard_heap_limit 0 r[1]='hard_heap_limit'
|
|
55 ResultRow 1 1 0 0 output=r[1]
|
|
56 String8 0 1 0 ignore_check_constraints 0 r[1]='ignore_check_constraints'
|
|
57 ResultRow 1 1 0 0 output=r[1]
|
|
58 String8 0 1 0 incremental_vacuum 0 r[1]='incremental_vacuum'
|
|
59 ResultRow 1 1 0 0 output=r[1]
|
|
60 String8 0 1 0 index_info 0 r[1]='index_info'
|
|
61 ResultRow 1 1 0 0 output=r[1]
|
|
62 String8 0 1 0 index_list 0 r[1]='index_list'
|
|
63 ResultRow 1 1 0 0 output=r[1]
|
|
64 String8 0 1 0 index_xinfo 0 r[1]='index_xinfo'
|
|
65 ResultRow 1 1 0 0 output=r[1]
|
|
66 String8 0 1 0 integrity_check 0 r[1]='integrity_check'
|
|
67 ResultRow 1 1 0 0 output=r[1]
|
|
68 String8 0 1 0 journal_mode 0 r[1]='journal_mode'
|
|
69 ResultRow 1 1 0 0 output=r[1]
|
|
70 String8 0 1 0 journal_size_limit 0 r[1]='journal_size_limit'
|
|
71 ResultRow 1 1 0 0 output=r[1]
|
|
72 String8 0 1 0 legacy_alter_table 0 r[1]='legacy_alter_table'
|
|
73 ResultRow 1 1 0 0 output=r[1]
|
|
74 String8 0 1 0 locking_mode 0 r[1]='locking_mode'
|
|
75 ResultRow 1 1 0 0 output=r[1]
|
|
76 String8 0 1 0 max_page_count 0 r[1]='max_page_count'
|
|
77 ResultRow 1 1 0 0 output=r[1]
|
|
78 String8 0 1 0 mmap_size 0 r[1]='mmap_size'
|
|
79 ResultRow 1 1 0 0 output=r[1]
|
|
80 String8 0 1 0 module_list 0 r[1]='module_list'
|
|
81 ResultRow 1 1 0 0 output=r[1]
|
|
82 String8 0 1 0 optimize 0 r[1]='optimize'
|
|
83 ResultRow 1 1 0 0 output=r[1]
|
|
84 String8 0 1 0 page_count 0 r[1]='page_count'
|
|
85 ResultRow 1 1 0 0 output=r[1]
|
|
86 String8 0 1 0 page_size 0 r[1]='page_size'
|
|
87 ResultRow 1 1 0 0 output=r[1]
|
|
88 String8 0 1 0 pragma_list 0 r[1]='pragma_list'
|
|
89 ResultRow 1 1 0 0 output=r[1]
|
|
90 String8 0 1 0 query_only 0 r[1]='query_only'
|
|
91 ResultRow 1 1 0 0 output=r[1]
|
|
92 String8 0 1 0 quick_check 0 r[1]='quick_check'
|
|
93 ResultRow 1 1 0 0 output=r[1]
|
|
94 String8 0 1 0 read_uncommitted 0 r[1]='read_uncommitted'
|
|
95 ResultRow 1 1 0 0 output=r[1]
|
|
96 String8 0 1 0 recursive_triggers 0 r[1]='recursive_triggers'
|
|
97 ResultRow 1 1 0 0 output=r[1]
|
|
98 String8 0 1 0 reverse_unordered_selects 0 r[1]='reverse_unordered_selects'
|
|
99 ResultRow 1 1 0 0 output=r[1]
|
|
100 String8 0 1 0 schema_version 0 r[1]='schema_version'
|
|
101 ResultRow 1 1 0 0 output=r[1]
|
|
102 String8 0 1 0 secure_delete 0 r[1]='secure_delete'
|
|
103 ResultRow 1 1 0 0 output=r[1]
|
|
104 String8 0 1 0 short_column_names 0 r[1]='short_column_names'
|
|
105 ResultRow 1 1 0 0 output=r[1]
|
|
106 String8 0 1 0 shrink_memory 0 r[1]='shrink_memory'
|
|
107 ResultRow 1 1 0 0 output=r[1]
|
|
108 String8 0 1 0 soft_heap_limit 0 r[1]='soft_heap_limit'
|
|
109 ResultRow 1 1 0 0 output=r[1]
|
|
110 String8 0 1 0 synchronous 0 r[1]='synchronous'
|
|
111 ResultRow 1 1 0 0 output=r[1]
|
|
112 String8 0 1 0 table_info 0 r[1]='table_info'
|
|
113 ResultRow 1 1 0 0 output=r[1]
|
|
114 String8 0 1 0 table_list 0 r[1]='table_list'
|
|
115 ResultRow 1 1 0 0 output=r[1]
|
|
116 String8 0 1 0 table_xinfo 0 r[1]='table_xinfo'
|
|
117 ResultRow 1 1 0 0 output=r[1]
|
|
118 String8 0 1 0 temp_store 0 r[1]='temp_store'
|
|
119 ResultRow 1 1 0 0 output=r[1]
|
|
120 String8 0 1 0 temp_store_directory 0 r[1]='temp_store_directory'
|
|
121 ResultRow 1 1 0 0 output=r[1]
|
|
122 String8 0 1 0 threads 0 r[1]='threads'
|
|
123 ResultRow 1 1 0 0 output=r[1]
|
|
124 String8 0 1 0 trusted_schema 0 r[1]='trusted_schema'
|
|
125 ResultRow 1 1 0 0 output=r[1]
|
|
126 String8 0 1 0 user_version 0 r[1]='user_version'
|
|
127 ResultRow 1 1 0 0 output=r[1]
|
|
128 String8 0 1 0 wal_autocheckpoint 0 r[1]='wal_autocheckpoint'
|
|
129 ResultRow 1 1 0 0 output=r[1]
|
|
130 String8 0 1 0 wal_checkpoint 0 r[1]='wal_checkpoint'
|
|
131 ResultRow 1 1 0 0 output=r[1]
|
|
132 String8 0 1 0 writable_schema 0 r[1]='writable_schema'
|
|
133 ResultRow 1 1 0 0 output=r[1]
|
|
134 Halt 0 0 0 0
|
|
analysis_limit
|
|
application_id
|
|
auto_vacuum
|
|
automatic_index
|
|
busy_timeout
|
|
cache_size
|
|
cache_spill
|
|
case_sensitive_like
|
|
cell_size_check
|
|
checkpoint_fullfsync
|
|
collation_list
|
|
compile_options
|
|
count_changes
|
|
data_version
|
|
database_list
|
|
default_cache_size
|
|
defer_foreign_keys
|
|
empty_result_callbacks
|
|
encoding
|
|
foreign_key_check
|
|
foreign_key_list
|
|
foreign_keys
|
|
freelist_count
|
|
full_column_names
|
|
fullfsync
|
|
function_list
|
|
hard_heap_limit
|
|
ignore_check_constraints
|
|
incremental_vacuum
|
|
index_info
|
|
index_list
|
|
index_xinfo
|
|
integrity_check
|
|
journal_mode
|
|
journal_size_limit
|
|
legacy_alter_table
|
|
locking_mode
|
|
max_page_count
|
|
mmap_size
|
|
module_list
|
|
optimize
|
|
page_count
|
|
page_size
|
|
pragma_list
|
|
query_only
|
|
quick_check
|
|
read_uncommitted
|
|
recursive_triggers
|
|
reverse_unordered_selects
|
|
schema_version
|
|
secure_delete
|
|
short_column_names
|
|
shrink_memory
|
|
soft_heap_limit
|
|
synchronous
|
|
table_info
|
|
table_list
|
|
table_xinfo
|
|
temp_store
|
|
temp_store_directory
|
|
threads
|
|
trusted_schema
|
|
user_version
|
|
wal_autocheckpoint
|
|
wal_checkpoint
|
|
writable_schema
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 50 0 0 Start at 50
|
|
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 Noop 0 22 0 0
|
|
12 CreateBtree 0 4 2 0 r[4]=root iDb=0 flags=2
|
|
13 OpenWrite 1 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
14 String8 0 6 0 index 0 r[6]='index'
|
|
15 String8 0 7 0 sqlite_autoindex_T_1 0 r[7]='sqlite_autoindex_T_1'
|
|
16 String8 0 8 0 T 0 r[8]='T'
|
|
17 SCopy 4 9 0 0 r[9]=r[4]
|
|
18 Null 0 10 0 0 r[10]=NULL
|
|
19 NewRowid 1 5 0 0 r[5]=rowid
|
|
20 MakeRecord 6 5 11 BBBDB 0 r[11]=mkrec(r[6..10])
|
|
21 Insert 1 11 5 24 intkey=r[5] data=r[11]
|
|
22 Noop 0 33 0 0
|
|
23 CreateBtree 0 12 2 0 r[12]=root iDb=0 flags=2
|
|
24 OpenWrite 2 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
25 String8 0 14 0 index 0 r[14]='index'
|
|
26 String8 0 15 0 sqlite_autoindex_T_2 0 r[15]='sqlite_autoindex_T_2'
|
|
27 String8 0 16 0 T 0 r[16]='T'
|
|
28 SCopy 12 17 0 0 r[17]=r[12]
|
|
29 Null 0 18 0 0 r[18]=NULL
|
|
30 NewRowid 2 13 0 0 r[13]=rowid
|
|
31 MakeRecord 14 5 19 BBBDB 0 r[19]=mkrec(r[14..18])
|
|
32 Insert 2 19 13 24 intkey=r[13] data=r[19]
|
|
33 Close 0 0 0 0
|
|
34 Null 0 20 21 0 r[20..21]=NULL
|
|
35 Noop 4 0 20 0
|
|
36 OpenWrite 3 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
37 SeekRowid 3 39 1 0 intkey=r[1]
|
|
38 Rowid 3 21 0 0 r[21]=[P2]=PX rowid of P1
|
|
39 IsNull 21 47 0 0 if r[21]==NULL goto 47
|
|
40 String8 0 22 0 table 0 r[22]='table'
|
|
41 String8 0 23 0 T 0 r[23]='T'
|
|
42 String8 0 24 0 T 0 r[24]='T'
|
|
43 SCopy 2 25 0 0 r[25]=r[2]
|
|
44 String8 0 26 0 CREATE TABLE T (
|
|
A VARCHAR(15) PRIMARY KEY,
|
|
B VARCHAR(30) NOT NULL,
|
|
C NCHAR(55) UNIQUE
|
|
) 0 r[26]='CREATE TABLE T (
|
|
A VARCHAR(15) PRIMARY KEY,
|
|
B VARCHAR(30) NOT NULL,
|
|
C NCHAR(55) UNIQUE
|
|
)'
|
|
45 MakeRecord 22 5 20 BBBDB 0 r[20]=mkrec(r[22..26])
|
|
46 Insert 3 20 21 0 intkey=r[21] data=r[20]
|
|
47 SetCookie 0 1 1 0
|
|
48 ParseSchema 0 0 0 tbl_name='T' AND type!='trigger' 0
|
|
49 Halt 0 0 0 0
|
|
50 Transaction 0 1 0 0 1 usesStmtJournal=1
|
|
51 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 Concat 13 12 2 0 r[2]=r[12]+r[13]
|
|
5 String8 0 3 0 x 0 r[3]='x'
|
|
6 Int64 0 4 0 -9223372036854775808 0 r[4]=-9223372036854775808
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 String8 0 12 0 0 r[12]=''
|
|
29 String8 0 13 0 a 0 r[13]='a'
|
|
30 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 b 0 r[2]='b'
|
|
5 String8 0 3 0 y 0 r[3]='y'
|
|
6 Integer -1000000 4 0 0 r[4]=-1000000
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 c 0 r[2]='c'
|
|
5 String8 0 3 0 y 0 r[3]='y'
|
|
6 Integer 0 4 0 0 r[4]=0
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 d 0 r[2]='d'
|
|
5 String8 0 3 0 y 0 r[3]='y'
|
|
6 Integer 42 4 0 0 r[4]=42
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 e 0 r[2]='e'
|
|
5 String8 0 3 0 x 0 r[3]='x'
|
|
6 Int64 0 4 0 9223372036854775807 0 r[4]=9223372036854775807
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 f 0 r[2]='f'
|
|
5 String8 0 3 0 z 0 r[3]='z'
|
|
6 Int64 0 4 0 2147483648 0 r[4]=2147483648
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
QUERY PLAN
|
|
`--SCAN T USING INDEX sqlite_autoindex_T_2
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 14 0 0 Start at 14
|
|
1 Noop 1 5 0 0
|
|
2 OpenRead 0 2 0 3 0 root=2 iDb=0; T
|
|
3 OpenRead 2 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
4 Last 2 13 1 0 0
|
|
5 DeferredSeek 2 0 0 0 Move 0 to 2.rowid if needed
|
|
6 Column 2 0 1 0 r[1]=T.C
|
|
7 Eq 2 12 1 BINARY-8 80 if r[1]==r[2] goto 12
|
|
8 Column 0 0 3 0 r[3]=T.A
|
|
9 Column 0 1 4 0 r[4]=T.B
|
|
10 Column 2 0 5 0 r[5]=T.C
|
|
11 ResultRow 3 3 0 0 output=r[3..5]
|
|
12 Prev 2 5 0 1
|
|
13 Halt 0 0 0 0
|
|
14 Transaction 0 0 1 0 1 usesStmtJournal=0
|
|
15 Integer 0 2 0 0 r[2]=0
|
|
16 Goto 0 1 0 0
|
|
e|x|9223372036854775807
|
|
d|y|42
|
|
f|z|2147483648
|
|
c|y|0
|
|
a|x|-9223372036854775808
|
|
b|y|-1000000
|
|
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 aux2 0 r[2]='aux2'
|
|
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 39 0 0 Start at 39
|
|
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 Noop 0 22 0 0
|
|
12 CreateBtree 0 4 2 0 r[4]=root iDb=0 flags=2
|
|
13 OpenWrite 1 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
14 String8 0 6 0 index 0 r[6]='index'
|
|
15 String8 0 7 0 sqlite_autoindex_t1_1 0 r[7]='sqlite_autoindex_t1_1'
|
|
16 String8 0 8 0 t1 0 r[8]='t1'
|
|
17 SCopy 4 9 0 0 r[9]=r[4]
|
|
18 Null 0 10 0 0 r[10]=NULL
|
|
19 NewRowid 1 5 0 0 r[5]=rowid
|
|
20 MakeRecord 6 5 11 BBBDB 0 r[11]=mkrec(r[6..10])
|
|
21 Insert 1 11 5 24 intkey=r[5] data=r[11]
|
|
22 Close 0 0 0 0
|
|
23 Null 0 12 13 0 r[12..13]=NULL
|
|
24 Noop 3 0 12 0
|
|
25 OpenWrite 2 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
26 SeekRowid 2 28 1 0 intkey=r[1]
|
|
27 Rowid 2 13 0 0 r[13]=[P2]=PX rowid of P1
|
|
28 IsNull 13 36 0 0 if r[13]==NULL goto 36
|
|
29 String8 0 14 0 table 0 r[14]='table'
|
|
30 String8 0 15 0 t1 0 r[15]='t1'
|
|
31 String8 0 16 0 t1 0 r[16]='t1'
|
|
32 SCopy 2 17 0 0 r[17]=r[2]
|
|
33 String8 0 18 0 CREATE TABLE t1(a INT PRIMARY KEY, b TEXT, c INT, d INT) 0 r[18]='CREATE TABLE t1(a INT PRIMARY KEY, b TEXT, c INT, d INT)'
|
|
34 MakeRecord 14 5 12 BBBDB 0 r[12]=mkrec(r[14..18])
|
|
35 Insert 2 12 13 0 intkey=r[13] data=r[12]
|
|
36 SetCookie 0 1 2 0
|
|
37 ParseSchema 0 0 0 tbl_name='t1' AND type!='trigger' 0
|
|
38 Halt 0 0 0 0
|
|
39 Transaction 0 1 1 0 1 usesStmtJournal=1
|
|
40 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 19 0 0 Start at 19
|
|
1 OpenWrite 0 5 0 4 0 root=5 iDb=0; t1
|
|
2 OpenWrite 1 6 0 k(2,,) 0 root=6 iDb=0; sqlite_autoindex_t1_1
|
|
3 Integer 1 2 0 0 r[2]=1
|
|
4 String8 0 3 0 Wernher 0 r[3]='Wernher'
|
|
5 Integer 10 4 0 0 r[4]=10
|
|
6 Integer 100 5 0 0 r[5]=100
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 Affinity 2 4 0 DBDD 0 affinity(r[2..5])
|
|
9 Noop 0 0 0 0 prep index sqlite_autoindex_t1_1
|
|
10 SCopy 2 7 0 0 r[7]=r[2]; a
|
|
11 IntCopy 1 8 0 0 r[8]=r[1]; rowid
|
|
12 MakeRecord 7 2 6 0 r[6]=mkrec(r[7..8]); for sqlite_autoindex_t1_1
|
|
13 NoConflict 1 15 7 1 0 key=r[7]
|
|
14 Halt 1555 2 0 t1.a 2
|
|
15 MakeRecord 2 4 9 0 r[9]=mkrec(r[2..5])
|
|
16 IdxInsert 1 6 7 2 16 key=r[6]
|
|
17 Insert 0 9 1 t1 57 intkey=r[1] data=r[9]
|
|
18 Halt 0 0 0 0
|
|
19 Transaction 0 1 2 0 1 usesStmtJournal=0
|
|
20 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 31 0 0 Start at 31
|
|
1 VBegin 0 0 0 0
|
|
2 ReadCookie 0 3 2 0
|
|
3 If 3 6 0 0
|
|
4 SetCookie 0 2 4 0
|
|
5 SetCookie 0 5 1 0
|
|
6 Integer 0 2 0 0 r[2]=0
|
|
7 OpenWrite 0 1 0 5 0 root=1 iDb=0
|
|
8 NewRowid 0 1 0 0 r[1]=rowid
|
|
9 Blob 6 3 0 0 r[3]= (len=6)
|
|
10 Insert 0 3 1 8 intkey=r[1] data=r[3]
|
|
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 t0 0 r[7]='t0'
|
|
20 String8 0 8 0 t0 0 r[8]='t0'
|
|
21 Integer 0 9 0 0 r[9]=0
|
|
22 String8 0 10 0 CREATE VIRTUAL TABLE t0 USING fts3("x", "y", "z") 0 r[10]='CREATE VIRTUAL TABLE t0 USING fts3("x", "y", "z")'
|
|
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 3 0
|
|
26 Expire 0 0 0 0
|
|
27 ParseSchema 0 0 0 name='t0' AND sql='CREATE VIRTUAL TABLE t0 USING fts3("x", "y", "z")' 0
|
|
28 String8 0 12 0 t0 0 r[12]='t0'
|
|
29 VCreate 0 12 0 0
|
|
30 Halt 0 0 0 0
|
|
31 Transaction 0 1 2 0 1 usesStmtJournal=1
|
|
32 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 16 0 0 Start at 16
|
|
1 VBegin 0 0 0 0
|
|
2 Null 0 1 0 0 r[1]=NULL
|
|
3 OpenWrite 0 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
4 Rewind 0 12 0 0
|
|
5 Column 0 2 2 0 r[2]=sqlite_master.tbl_name
|
|
6 Ne 3 11 2 BINARY-8 82 if r[2]!=r[3] goto 11
|
|
7 Column 0 0 2 0 r[2]=sqlite_master.type
|
|
8 Eq 4 11 2 BINARY-8 82 if r[2]==r[4] goto 11
|
|
9 Rowid 0 5 0 0 r[5]=sqlite_master.rowid
|
|
10 Delete 0 0 0 2
|
|
11 Next 0 5 0 1
|
|
12 VDestroy 0 0 0 t0 0
|
|
13 DropTable 0 0 0 t0 0
|
|
14 SetCookie 0 1 7 0
|
|
15 Halt 0 0 0 0
|
|
16 Transaction 0 1 6 0 1 usesStmtJournal=1
|
|
17 String8 0 3 0 t0 0 r[3]='t0'
|
|
18 String8 0 4 0 trigger 0 r[4]='trigger'
|
|
19 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 19 0 0 Start at 19
|
|
1 OpenWrite 0 5 0 4 0 root=5 iDb=0; t1
|
|
2 OpenWrite 1 6 0 k(2,,) 0 root=6 iDb=0; sqlite_autoindex_t1_1
|
|
3 Integer 2 2 0 0 r[2]=2
|
|
4 String8 0 3 0 von 0 r[3]='von'
|
|
5 Integer 20 4 0 0 r[4]=20
|
|
6 Integer 200 5 0 0 r[5]=200
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 Affinity 2 4 0 DBDD 0 affinity(r[2..5])
|
|
9 Noop 0 0 0 0 prep index sqlite_autoindex_t1_1
|
|
10 SCopy 2 7 0 0 r[7]=r[2]; a
|
|
11 IntCopy 1 8 0 0 r[8]=r[1]; rowid
|
|
12 MakeRecord 7 2 6 0 r[6]=mkrec(r[7..8]); for sqlite_autoindex_t1_1
|
|
13 NoConflict 1 15 7 1 0 key=r[7]
|
|
14 Halt 1555 2 0 t1.a 2
|
|
15 MakeRecord 2 4 9 0 r[9]=mkrec(r[2..5])
|
|
16 IdxInsert 1 6 7 2 16 key=r[6]
|
|
17 Insert 0 9 1 t1 57 intkey=r[1] data=r[9]
|
|
18 Halt 0 0 0 0
|
|
19 Transaction 0 1 7 0 1 usesStmtJournal=0
|
|
20 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 19 0 0 Start at 19
|
|
1 OpenWrite 0 5 0 4 0 root=5 iDb=0; t1
|
|
2 OpenWrite 1 6 0 k(2,,) 0 root=6 iDb=0; sqlite_autoindex_t1_1
|
|
3 Integer 3 2 0 0 r[2]=3
|
|
4 String8 0 3 0 Braun 0 r[3]='Braun'
|
|
5 Integer 30 4 0 0 r[4]=30
|
|
6 Integer 300 5 0 0 r[5]=300
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 Affinity 2 4 0 DBDD 0 affinity(r[2..5])
|
|
9 Noop 0 0 0 0 prep index sqlite_autoindex_t1_1
|
|
10 SCopy 2 7 0 0 r[7]=r[2]; a
|
|
11 IntCopy 1 8 0 0 r[8]=r[1]; rowid
|
|
12 MakeRecord 7 2 6 0 r[6]=mkrec(r[7..8]); for sqlite_autoindex_t1_1
|
|
13 NoConflict 1 15 7 1 0 key=r[7]
|
|
14 Halt 1555 2 0 t1.a 2
|
|
15 MakeRecord 2 4 9 0 r[9]=mkrec(r[2..5])
|
|
16 IdxInsert 1 6 7 2 16 key=r[6]
|
|
17 Insert 0 9 1 t1 57 intkey=r[1] data=r[9]
|
|
18 Halt 0 0 0 0
|
|
19 Transaction 0 1 7 0 1 usesStmtJournal=0
|
|
20 Goto 0 1 0 0
|
|
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 5 0 4 0 root=5 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 8 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 7 0 1 usesStmtJournal=1
|
|
35 Goto 0 1 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 Expire 0 0 0 0
|
|
3 Halt 0 0 0 0
|
|
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 7 0 k(3,,,) 0 root=7 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 8 0 1 usesStmtJournal=0
|
|
10 Goto 0 1 0 0
|
|
Braun|30|3
|
|
Wernher|10|1
|
|
von|20|2
|
|
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 7 0 k(3,,,) 0 root=7 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 8 0 1 usesStmtJournal=0
|
|
10 Goto 0 1 0 0
|
|
Braun|30
|
|
Wernher|10
|
|
von|20
|
|
```
|
|
|
|
## Expectation
|
|
|
|
```sql
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 3 0 0 Start at 3
|
|
1 Expire 1 1 0 0
|
|
2 Halt 0 0 0 0
|
|
3 Goto 0 1 0 0
|
|
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
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 3 0 0 Start at 3
|
|
1 Savepoint 0 0 0 sp1241 0
|
|
2 Halt 0 0 0 0
|
|
3 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 135 0 0 Start at 135
|
|
1 Expire 1 1 0 0
|
|
2 String8 0 1 0 analysis_limit 0 r[1]='analysis_limit'
|
|
3 ResultRow 1 1 0 0 output=r[1]
|
|
4 String8 0 1 0 application_id 0 r[1]='application_id'
|
|
5 ResultRow 1 1 0 0 output=r[1]
|
|
6 String8 0 1 0 auto_vacuum 0 r[1]='auto_vacuum'
|
|
7 ResultRow 1 1 0 0 output=r[1]
|
|
8 String8 0 1 0 automatic_index 0 r[1]='automatic_index'
|
|
9 ResultRow 1 1 0 0 output=r[1]
|
|
10 String8 0 1 0 busy_timeout 0 r[1]='busy_timeout'
|
|
11 ResultRow 1 1 0 0 output=r[1]
|
|
12 String8 0 1 0 cache_size 0 r[1]='cache_size'
|
|
13 ResultRow 1 1 0 0 output=r[1]
|
|
14 String8 0 1 0 cache_spill 0 r[1]='cache_spill'
|
|
15 ResultRow 1 1 0 0 output=r[1]
|
|
16 String8 0 1 0 case_sensitive_like 0 r[1]='case_sensitive_like'
|
|
17 ResultRow 1 1 0 0 output=r[1]
|
|
18 String8 0 1 0 cell_size_check 0 r[1]='cell_size_check'
|
|
19 ResultRow 1 1 0 0 output=r[1]
|
|
20 String8 0 1 0 checkpoint_fullfsync 0 r[1]='checkpoint_fullfsync'
|
|
21 ResultRow 1 1 0 0 output=r[1]
|
|
22 String8 0 1 0 collation_list 0 r[1]='collation_list'
|
|
23 ResultRow 1 1 0 0 output=r[1]
|
|
24 String8 0 1 0 compile_options 0 r[1]='compile_options'
|
|
25 ResultRow 1 1 0 0 output=r[1]
|
|
26 String8 0 1 0 count_changes 0 r[1]='count_changes'
|
|
27 ResultRow 1 1 0 0 output=r[1]
|
|
28 String8 0 1 0 data_version 0 r[1]='data_version'
|
|
29 ResultRow 1 1 0 0 output=r[1]
|
|
30 String8 0 1 0 database_list 0 r[1]='database_list'
|
|
31 ResultRow 1 1 0 0 output=r[1]
|
|
32 String8 0 1 0 default_cache_size 0 r[1]='default_cache_size'
|
|
33 ResultRow 1 1 0 0 output=r[1]
|
|
34 String8 0 1 0 defer_foreign_keys 0 r[1]='defer_foreign_keys'
|
|
35 ResultRow 1 1 0 0 output=r[1]
|
|
36 String8 0 1 0 empty_result_callbacks 0 r[1]='empty_result_callbacks'
|
|
37 ResultRow 1 1 0 0 output=r[1]
|
|
38 String8 0 1 0 encoding 0 r[1]='encoding'
|
|
39 ResultRow 1 1 0 0 output=r[1]
|
|
40 String8 0 1 0 foreign_key_check 0 r[1]='foreign_key_check'
|
|
41 ResultRow 1 1 0 0 output=r[1]
|
|
42 String8 0 1 0 foreign_key_list 0 r[1]='foreign_key_list'
|
|
43 ResultRow 1 1 0 0 output=r[1]
|
|
44 String8 0 1 0 foreign_keys 0 r[1]='foreign_keys'
|
|
45 ResultRow 1 1 0 0 output=r[1]
|
|
46 String8 0 1 0 freelist_count 0 r[1]='freelist_count'
|
|
47 ResultRow 1 1 0 0 output=r[1]
|
|
48 String8 0 1 0 full_column_names 0 r[1]='full_column_names'
|
|
49 ResultRow 1 1 0 0 output=r[1]
|
|
50 String8 0 1 0 fullfsync 0 r[1]='fullfsync'
|
|
51 ResultRow 1 1 0 0 output=r[1]
|
|
52 String8 0 1 0 function_list 0 r[1]='function_list'
|
|
53 ResultRow 1 1 0 0 output=r[1]
|
|
54 String8 0 1 0 hard_heap_limit 0 r[1]='hard_heap_limit'
|
|
55 ResultRow 1 1 0 0 output=r[1]
|
|
56 String8 0 1 0 ignore_check_constraints 0 r[1]='ignore_check_constraints'
|
|
57 ResultRow 1 1 0 0 output=r[1]
|
|
58 String8 0 1 0 incremental_vacuum 0 r[1]='incremental_vacuum'
|
|
59 ResultRow 1 1 0 0 output=r[1]
|
|
60 String8 0 1 0 index_info 0 r[1]='index_info'
|
|
61 ResultRow 1 1 0 0 output=r[1]
|
|
62 String8 0 1 0 index_list 0 r[1]='index_list'
|
|
63 ResultRow 1 1 0 0 output=r[1]
|
|
64 String8 0 1 0 index_xinfo 0 r[1]='index_xinfo'
|
|
65 ResultRow 1 1 0 0 output=r[1]
|
|
66 String8 0 1 0 integrity_check 0 r[1]='integrity_check'
|
|
67 ResultRow 1 1 0 0 output=r[1]
|
|
68 String8 0 1 0 journal_mode 0 r[1]='journal_mode'
|
|
69 ResultRow 1 1 0 0 output=r[1]
|
|
70 String8 0 1 0 journal_size_limit 0 r[1]='journal_size_limit'
|
|
71 ResultRow 1 1 0 0 output=r[1]
|
|
72 String8 0 1 0 legacy_alter_table 0 r[1]='legacy_alter_table'
|
|
73 ResultRow 1 1 0 0 output=r[1]
|
|
74 String8 0 1 0 locking_mode 0 r[1]='locking_mode'
|
|
75 ResultRow 1 1 0 0 output=r[1]
|
|
76 String8 0 1 0 max_page_count 0 r[1]='max_page_count'
|
|
77 ResultRow 1 1 0 0 output=r[1]
|
|
78 String8 0 1 0 mmap_size 0 r[1]='mmap_size'
|
|
79 ResultRow 1 1 0 0 output=r[1]
|
|
80 String8 0 1 0 module_list 0 r[1]='module_list'
|
|
81 ResultRow 1 1 0 0 output=r[1]
|
|
82 String8 0 1 0 optimize 0 r[1]='optimize'
|
|
83 ResultRow 1 1 0 0 output=r[1]
|
|
84 String8 0 1 0 page_count 0 r[1]='page_count'
|
|
85 ResultRow 1 1 0 0 output=r[1]
|
|
86 String8 0 1 0 page_size 0 r[1]='page_size'
|
|
87 ResultRow 1 1 0 0 output=r[1]
|
|
88 String8 0 1 0 pragma_list 0 r[1]='pragma_list'
|
|
89 ResultRow 1 1 0 0 output=r[1]
|
|
90 String8 0 1 0 query_only 0 r[1]='query_only'
|
|
91 ResultRow 1 1 0 0 output=r[1]
|
|
92 String8 0 1 0 quick_check 0 r[1]='quick_check'
|
|
93 ResultRow 1 1 0 0 output=r[1]
|
|
94 String8 0 1 0 read_uncommitted 0 r[1]='read_uncommitted'
|
|
95 ResultRow 1 1 0 0 output=r[1]
|
|
96 String8 0 1 0 recursive_triggers 0 r[1]='recursive_triggers'
|
|
97 ResultRow 1 1 0 0 output=r[1]
|
|
98 String8 0 1 0 reverse_unordered_selects 0 r[1]='reverse_unordered_selects'
|
|
99 ResultRow 1 1 0 0 output=r[1]
|
|
100 String8 0 1 0 schema_version 0 r[1]='schema_version'
|
|
101 ResultRow 1 1 0 0 output=r[1]
|
|
102 String8 0 1 0 secure_delete 0 r[1]='secure_delete'
|
|
103 ResultRow 1 1 0 0 output=r[1]
|
|
104 String8 0 1 0 short_column_names 0 r[1]='short_column_names'
|
|
105 ResultRow 1 1 0 0 output=r[1]
|
|
106 String8 0 1 0 shrink_memory 0 r[1]='shrink_memory'
|
|
107 ResultRow 1 1 0 0 output=r[1]
|
|
108 String8 0 1 0 soft_heap_limit 0 r[1]='soft_heap_limit'
|
|
109 ResultRow 1 1 0 0 output=r[1]
|
|
110 String8 0 1 0 synchronous 0 r[1]='synchronous'
|
|
111 ResultRow 1 1 0 0 output=r[1]
|
|
112 String8 0 1 0 table_info 0 r[1]='table_info'
|
|
113 ResultRow 1 1 0 0 output=r[1]
|
|
114 String8 0 1 0 table_list 0 r[1]='table_list'
|
|
115 ResultRow 1 1 0 0 output=r[1]
|
|
116 String8 0 1 0 table_xinfo 0 r[1]='table_xinfo'
|
|
117 ResultRow 1 1 0 0 output=r[1]
|
|
118 String8 0 1 0 temp_store 0 r[1]='temp_store'
|
|
119 ResultRow 1 1 0 0 output=r[1]
|
|
120 String8 0 1 0 temp_store_directory 0 r[1]='temp_store_directory'
|
|
121 ResultRow 1 1 0 0 output=r[1]
|
|
122 String8 0 1 0 threads 0 r[1]='threads'
|
|
123 ResultRow 1 1 0 0 output=r[1]
|
|
124 String8 0 1 0 trusted_schema 0 r[1]='trusted_schema'
|
|
125 ResultRow 1 1 0 0 output=r[1]
|
|
126 String8 0 1 0 user_version 0 r[1]='user_version'
|
|
127 ResultRow 1 1 0 0 output=r[1]
|
|
128 String8 0 1 0 wal_autocheckpoint 0 r[1]='wal_autocheckpoint'
|
|
129 ResultRow 1 1 0 0 output=r[1]
|
|
130 String8 0 1 0 wal_checkpoint 0 r[1]='wal_checkpoint'
|
|
131 ResultRow 1 1 0 0 output=r[1]
|
|
132 String8 0 1 0 writable_schema 0 r[1]='writable_schema'
|
|
133 ResultRow 1 1 0 0 output=r[1]
|
|
134 Halt 0 0 0 0
|
|
135 Goto 0 1 0 0
|
|
analysis_limit
|
|
application_id
|
|
auto_vacuum
|
|
automatic_index
|
|
busy_timeout
|
|
cache_size
|
|
cache_spill
|
|
case_sensitive_like
|
|
cell_size_check
|
|
checkpoint_fullfsync
|
|
collation_list
|
|
compile_options
|
|
count_changes
|
|
data_version
|
|
database_list
|
|
default_cache_size
|
|
defer_foreign_keys
|
|
empty_result_callbacks
|
|
encoding
|
|
foreign_key_check
|
|
foreign_key_list
|
|
foreign_keys
|
|
freelist_count
|
|
full_column_names
|
|
fullfsync
|
|
function_list
|
|
hard_heap_limit
|
|
ignore_check_constraints
|
|
incremental_vacuum
|
|
index_info
|
|
index_list
|
|
index_xinfo
|
|
integrity_check
|
|
journal_mode
|
|
journal_size_limit
|
|
legacy_alter_table
|
|
locking_mode
|
|
max_page_count
|
|
mmap_size
|
|
module_list
|
|
optimize
|
|
page_count
|
|
page_size
|
|
pragma_list
|
|
query_only
|
|
quick_check
|
|
read_uncommitted
|
|
recursive_triggers
|
|
reverse_unordered_selects
|
|
schema_version
|
|
secure_delete
|
|
short_column_names
|
|
shrink_memory
|
|
soft_heap_limit
|
|
synchronous
|
|
table_info
|
|
table_list
|
|
table_xinfo
|
|
temp_store
|
|
temp_store_directory
|
|
threads
|
|
trusted_schema
|
|
user_version
|
|
wal_autocheckpoint
|
|
wal_checkpoint
|
|
writable_schema
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 50 0 0 Start at 50
|
|
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 Noop 0 22 0 0
|
|
12 CreateBtree 0 4 2 0 r[4]=root iDb=0 flags=2
|
|
13 OpenWrite 1 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
14 String8 0 6 0 index 0 r[6]='index'
|
|
15 String8 0 7 0 sqlite_autoindex_T_1 0 r[7]='sqlite_autoindex_T_1'
|
|
16 String8 0 8 0 T 0 r[8]='T'
|
|
17 SCopy 4 9 0 0 r[9]=r[4]
|
|
18 Null 0 10 0 0 r[10]=NULL
|
|
19 NewRowid 1 5 0 0 r[5]=rowid
|
|
20 MakeRecord 6 5 11 BBBDB 0 r[11]=mkrec(r[6..10])
|
|
21 Insert 1 11 5 24 intkey=r[5] data=r[11]
|
|
22 Noop 0 33 0 0
|
|
23 CreateBtree 0 12 2 0 r[12]=root iDb=0 flags=2
|
|
24 OpenWrite 2 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
25 String8 0 14 0 index 0 r[14]='index'
|
|
26 String8 0 15 0 sqlite_autoindex_T_2 0 r[15]='sqlite_autoindex_T_2'
|
|
27 String8 0 16 0 T 0 r[16]='T'
|
|
28 SCopy 12 17 0 0 r[17]=r[12]
|
|
29 Null 0 18 0 0 r[18]=NULL
|
|
30 NewRowid 2 13 0 0 r[13]=rowid
|
|
31 MakeRecord 14 5 19 BBBDB 0 r[19]=mkrec(r[14..18])
|
|
32 Insert 2 19 13 24 intkey=r[13] data=r[19]
|
|
33 Close 0 0 0 0
|
|
34 Null 0 20 21 0 r[20..21]=NULL
|
|
35 Noop 4 0 20 0
|
|
36 OpenWrite 3 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
37 SeekRowid 3 39 1 0 intkey=r[1]
|
|
38 Rowid 3 21 0 0 r[21]= rowid of 3
|
|
39 IsNull 21 47 0 0 if r[21]==NULL goto 47
|
|
40 String8 0 22 0 table 0 r[22]='table'
|
|
41 String8 0 23 0 T 0 r[23]='T'
|
|
42 String8 0 24 0 T 0 r[24]='T'
|
|
43 Copy 2 25 0 0 r[25]=r[2]
|
|
44 String8 0 26 0 CREATE TABLE T (
|
|
A VARCHAR(15) PRIMARY KEY,
|
|
B VARCHAR(30) NOT NULL,
|
|
C NCHAR(55) UNIQUE
|
|
) 0 r[26]='CREATE TABLE T (
|
|
A VARCHAR(15) PRIMARY KEY,
|
|
B VARCHAR(30) NOT NULL,
|
|
C NCHAR(55) UNIQUE
|
|
)'
|
|
45 MakeRecord 22 5 20 BBBDB 0 r[20]=mkrec(r[22..26])
|
|
46 Insert 3 20 21 0 intkey=r[21] data=r[20]
|
|
47 SetCookie 0 1 1 0
|
|
48 ParseSchema 0 0 0 tbl_name='T' AND type!='trigger' 0
|
|
49 Halt 0 0 0 0
|
|
50 Transaction 0 1 0 0 1 usesStmtJournal=1
|
|
51 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 Concat 13 12 2 0 r[2]=r[12]+r[13]
|
|
5 String8 0 3 0 x 0 r[3]='x'
|
|
6 Int64 0 4 0 -9223372036854775808 0 r[4]=-9223372036854775808
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 String8 0 12 0 0 r[12]=''
|
|
29 String8 0 13 0 a 0 r[13]='a'
|
|
30 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 b 0 r[2]='b'
|
|
5 String8 0 3 0 y 0 r[3]='y'
|
|
6 Integer -1000000 4 0 0 r[4]=-1000000
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 c 0 r[2]='c'
|
|
5 String8 0 3 0 y 0 r[3]='y'
|
|
6 Integer 0 4 0 0 r[4]=0
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 d 0 r[2]='d'
|
|
5 String8 0 3 0 y 0 r[3]='y'
|
|
6 Integer 42 4 0 0 r[4]=42
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 e 0 r[2]='e'
|
|
5 String8 0 3 0 x 0 r[3]='x'
|
|
6 Int64 0 4 0 9223372036854775807 0 r[4]=9223372036854775807
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 27 0 0 Start at 27
|
|
1 OpenWrite 0 2 0 3 0 root=2 iDb=0; T
|
|
2 OpenWrite 1 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
3 OpenWrite 2 3 0 k(2,,) 0 root=3 iDb=0; sqlite_autoindex_T_1
|
|
4 String8 0 2 0 f 0 r[2]='f'
|
|
5 String8 0 3 0 z 0 r[3]='z'
|
|
6 Int64 0 4 0 2147483648 0 r[4]=2147483648
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 HaltIfNull 1299 2 3 T.B 1 if r[3]=null halt
|
|
9 Affinity 2 3 0 BBB 0 affinity(r[2..4])
|
|
10 Noop 0 0 0 0 prep index sqlite_autoindex_T_2
|
|
11 SCopy 4 6 0 0 r[6]=r[4]; C
|
|
12 IntCopy 1 7 0 0 r[7]=r[1]; rowid
|
|
13 MakeRecord 6 2 5 0 r[5]=mkrec(r[6..7]); for sqlite_autoindex_T_2
|
|
14 NoConflict 1 16 6 1 0 key=r[6]
|
|
15 Halt 2067 2 0 T.C 2
|
|
16 Noop 0 0 0 0 prep index sqlite_autoindex_T_1
|
|
17 SCopy 2 9 0 0 r[9]=r[2]; A
|
|
18 IntCopy 1 10 0 0 r[10]=r[1]; rowid
|
|
19 MakeRecord 9 2 8 0 r[8]=mkrec(r[9..10]); for sqlite_autoindex_T_1
|
|
20 NoConflict 2 22 9 1 0 key=r[9]
|
|
21 Halt 1555 2 0 T.A 2
|
|
22 MakeRecord 2 3 11 0 r[11]=mkrec(r[2..4])
|
|
23 IdxInsert 1 5 6 2 16 key=r[5]
|
|
24 IdxInsert 2 8 9 2 16 key=r[8]
|
|
25 Insert 0 11 1 T 57 intkey=r[1] data=r[11]
|
|
26 Halt 0 0 0 0
|
|
27 Transaction 0 1 1 0 1 usesStmtJournal=0
|
|
28 Goto 0 1 0 0
|
|
QUERY PLAN
|
|
`--SCAN T USING INDEX sqlite_autoindex_T_2
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 15 0 0 Start at 15
|
|
1 Noop 1 5 0 0
|
|
2 OpenRead 0 2 0 3 0 root=2 iDb=0; T
|
|
3 OpenRead 2 4 0 k(2,,) 0 root=4 iDb=0; sqlite_autoindex_T_2
|
|
4 Explain 4 0 225 SCAN T USING INDEX sqlite_autoindex_T_2 0
|
|
5 Last 2 14 1 0 0
|
|
6 DeferredSeek 2 0 0 0 Move 0 to 2.rowid if needed
|
|
7 Column 2 0 1 0 r[1]= cursor 2 column 0
|
|
8 Eq 2 13 1 BINARY-8 80 if r[1]==r[2] goto 13
|
|
9 Column 0 0 3 0 r[3]= cursor 0 column 0
|
|
10 Column 0 1 4 0 r[4]= cursor 0 column 1
|
|
11 Column 2 0 5 0 r[5]= cursor 2 column 0
|
|
12 ResultRow 3 3 0 0 output=r[3..5]
|
|
13 Prev 2 6 0 1
|
|
14 Halt 0 0 0 0
|
|
15 Transaction 0 0 1 0 1 usesStmtJournal=0
|
|
16 Integer 0 2 0 0 r[2]=0
|
|
17 Goto 0 1 0 0
|
|
e|x|9223372036854775807
|
|
d|y|42
|
|
f|z|2147483648
|
|
c|y|0
|
|
a|x|-9223372036854775808
|
|
b|y|-1000000
|
|
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 aux2 0 r[2]='aux2'
|
|
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 39 0 0 Start at 39
|
|
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 Noop 0 22 0 0
|
|
12 CreateBtree 0 4 2 0 r[4]=root iDb=0 flags=2
|
|
13 OpenWrite 1 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
14 String8 0 6 0 index 0 r[6]='index'
|
|
15 String8 0 7 0 sqlite_autoindex_t1_1 0 r[7]='sqlite_autoindex_t1_1'
|
|
16 String8 0 8 0 t1 0 r[8]='t1'
|
|
17 SCopy 4 9 0 0 r[9]=r[4]
|
|
18 Null 0 10 0 0 r[10]=NULL
|
|
19 NewRowid 1 5 0 0 r[5]=rowid
|
|
20 MakeRecord 6 5 11 BBBDB 0 r[11]=mkrec(r[6..10])
|
|
21 Insert 1 11 5 24 intkey=r[5] data=r[11]
|
|
22 Close 0 0 0 0
|
|
23 Null 0 12 13 0 r[12..13]=NULL
|
|
24 Noop 3 0 12 0
|
|
25 OpenWrite 2 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
26 SeekRowid 2 28 1 0 intkey=r[1]
|
|
27 Rowid 2 13 0 0 r[13]= rowid of 2
|
|
28 IsNull 13 36 0 0 if r[13]==NULL goto 36
|
|
29 String8 0 14 0 table 0 r[14]='table'
|
|
30 String8 0 15 0 t1 0 r[15]='t1'
|
|
31 String8 0 16 0 t1 0 r[16]='t1'
|
|
32 Copy 2 17 0 0 r[17]=r[2]
|
|
33 String8 0 18 0 CREATE TABLE t1(a INT PRIMARY KEY, b TEXT, c INT, d INT) 0 r[18]='CREATE TABLE t1(a INT PRIMARY KEY, b TEXT, c INT, d INT)'
|
|
34 MakeRecord 14 5 12 BBBDB 0 r[12]=mkrec(r[14..18])
|
|
35 Insert 2 12 13 0 intkey=r[13] data=r[12]
|
|
36 SetCookie 0 1 2 0
|
|
37 ParseSchema 0 0 0 tbl_name='t1' AND type!='trigger' 0
|
|
38 Halt 0 0 0 0
|
|
39 Transaction 0 1 1 0 1 usesStmtJournal=1
|
|
40 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 19 0 0 Start at 19
|
|
1 OpenWrite 0 5 0 4 0 root=5 iDb=0; t1
|
|
2 OpenWrite 1 6 0 k(2,,) 0 root=6 iDb=0; sqlite_autoindex_t1_1
|
|
3 Integer 1 2 0 0 r[2]=1
|
|
4 String8 0 3 0 Wernher 0 r[3]='Wernher'
|
|
5 Integer 10 4 0 0 r[4]=10
|
|
6 Integer 100 5 0 0 r[5]=100
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 Affinity 2 4 0 DBDD 0 affinity(r[2..5])
|
|
9 Noop 0 0 0 0 prep index sqlite_autoindex_t1_1
|
|
10 SCopy 2 7 0 0 r[7]=r[2]; a
|
|
11 IntCopy 1 8 0 0 r[8]=r[1]; rowid
|
|
12 MakeRecord 7 2 6 0 r[6]=mkrec(r[7..8]); for sqlite_autoindex_t1_1
|
|
13 NoConflict 1 15 7 1 0 key=r[7]
|
|
14 Halt 1555 2 0 t1.a 2
|
|
15 MakeRecord 2 4 9 0 r[9]=mkrec(r[2..5])
|
|
16 IdxInsert 1 6 7 2 16 key=r[6]
|
|
17 Insert 0 9 1 t1 57 intkey=r[1] data=r[9]
|
|
18 Halt 0 0 0 0
|
|
19 Transaction 0 1 2 0 1 usesStmtJournal=0
|
|
20 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 31 0 0 Start at 31
|
|
1 VBegin 0 0 0 0
|
|
2 ReadCookie 0 3 2 0
|
|
3 If 3 6 0 0
|
|
4 SetCookie 0 2 4 0
|
|
5 SetCookie 0 5 1 0
|
|
6 Integer 0 2 0 0 r[2]=0
|
|
7 OpenWrite 0 1 0 5 0 root=1 iDb=0
|
|
8 NewRowid 0 1 0 0 r[1]=rowid
|
|
9 Blob 6 3 0 0 r[3]= (len=6)
|
|
10 Insert 0 3 1 8 intkey=r[1] data=r[3]
|
|
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 t0 0 r[7]='t0'
|
|
20 String8 0 8 0 t0 0 r[8]='t0'
|
|
21 Integer 0 9 0 0 r[9]=0
|
|
22 String8 0 10 0 CREATE VIRTUAL TABLE t0 USING fts3("x", "y", "z") 0 r[10]='CREATE VIRTUAL TABLE t0 USING fts3("x", "y", "z")'
|
|
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 3 0
|
|
26 Expire 0 0 0 0
|
|
27 ParseSchema 0 0 0 name='t0' AND sql='CREATE VIRTUAL TABLE t0 USING fts3("x", "y", "z")' 0
|
|
28 String8 0 12 0 t0 0 r[12]='t0'
|
|
29 VCreate 0 12 0 0
|
|
30 Halt 0 0 0 0
|
|
31 Transaction 0 1 2 0 1 usesStmtJournal=1
|
|
32 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 16 0 0 Start at 16
|
|
1 VBegin 0 0 0 0
|
|
2 Null 0 1 0 0 r[1]=NULL
|
|
3 OpenWrite 0 1 0 5 0 root=1 iDb=0; sqlite_master
|
|
4 Rewind 0 12 0 0
|
|
5 Column 0 2 2 0 r[2]= cursor 0 column 2
|
|
6 Ne 3 11 2 BINARY-8 82 if r[2]!=r[3] goto 11
|
|
7 Column 0 0 2 0 r[2]= cursor 0 column 0
|
|
8 Eq 4 11 2 BINARY-8 82 if r[2]==r[4] goto 11
|
|
9 Rowid 0 5 0 0 r[5]=sqlite_master.rowid
|
|
10 Delete 0 0 0 2
|
|
11 Next 0 5 0 1
|
|
12 VDestroy 0 0 0 t0 0
|
|
13 DropTable 0 0 0 t0 0
|
|
14 SetCookie 0 1 7 0
|
|
15 Halt 0 0 0 0
|
|
16 Transaction 0 1 6 0 1 usesStmtJournal=1
|
|
17 String8 0 3 0 t0 0 r[3]='t0'
|
|
18 String8 0 4 0 trigger 0 r[4]='trigger'
|
|
19 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 19 0 0 Start at 19
|
|
1 OpenWrite 0 5 0 4 0 root=5 iDb=0; t1
|
|
2 OpenWrite 1 6 0 k(2,,) 0 root=6 iDb=0; sqlite_autoindex_t1_1
|
|
3 Integer 2 2 0 0 r[2]=2
|
|
4 String8 0 3 0 von 0 r[3]='von'
|
|
5 Integer 20 4 0 0 r[4]=20
|
|
6 Integer 200 5 0 0 r[5]=200
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 Affinity 2 4 0 DBDD 0 affinity(r[2..5])
|
|
9 Noop 0 0 0 0 prep index sqlite_autoindex_t1_1
|
|
10 SCopy 2 7 0 0 r[7]=r[2]; a
|
|
11 IntCopy 1 8 0 0 r[8]=r[1]; rowid
|
|
12 MakeRecord 7 2 6 0 r[6]=mkrec(r[7..8]); for sqlite_autoindex_t1_1
|
|
13 NoConflict 1 15 7 1 0 key=r[7]
|
|
14 Halt 1555 2 0 t1.a 2
|
|
15 MakeRecord 2 4 9 0 r[9]=mkrec(r[2..5])
|
|
16 IdxInsert 1 6 7 2 16 key=r[6]
|
|
17 Insert 0 9 1 t1 57 intkey=r[1] data=r[9]
|
|
18 Halt 0 0 0 0
|
|
19 Transaction 0 1 7 0 1 usesStmtJournal=0
|
|
20 Goto 0 1 0 0
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 19 0 0 Start at 19
|
|
1 OpenWrite 0 5 0 4 0 root=5 iDb=0; t1
|
|
2 OpenWrite 1 6 0 k(2,,) 0 root=6 iDb=0; sqlite_autoindex_t1_1
|
|
3 Integer 3 2 0 0 r[2]=3
|
|
4 String8 0 3 0 Braun 0 r[3]='Braun'
|
|
5 Integer 30 4 0 0 r[4]=30
|
|
6 Integer 300 5 0 0 r[5]=300
|
|
7 NewRowid 0 1 0 0 r[1]=rowid
|
|
8 Affinity 2 4 0 DBDD 0 affinity(r[2..5])
|
|
9 Noop 0 0 0 0 prep index sqlite_autoindex_t1_1
|
|
10 SCopy 2 7 0 0 r[7]=r[2]; a
|
|
11 IntCopy 1 8 0 0 r[8]=r[1]; rowid
|
|
12 MakeRecord 7 2 6 0 r[6]=mkrec(r[7..8]); for sqlite_autoindex_t1_1
|
|
13 NoConflict 1 15 7 1 0 key=r[7]
|
|
14 Halt 1555 2 0 t1.a 2
|
|
15 MakeRecord 2 4 9 0 r[9]=mkrec(r[2..5])
|
|
16 IdxInsert 1 6 7 2 16 key=r[6]
|
|
17 Insert 0 9 1 t1 57 intkey=r[1] data=r[9]
|
|
18 Halt 0 0 0 0
|
|
19 Transaction 0 1 7 0 1 usesStmtJournal=0
|
|
20 Goto 0 1 0 0
|
|
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 5 0 4 0 root=5 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 8 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 7 0 1 usesStmtJournal=1
|
|
35 Goto 0 1 0 0
|
|
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
|
|
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 7 0 k(3,,,) 0 root=7 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 8 0 1 usesStmtJournal=0
|
|
11 Goto 0 1 0 0
|
|
Braun|30|3
|
|
Wernher|10|1
|
|
von|20|2
|
|
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 7 0 k(3,,,) 0 root=7 iDb=0; t1bc
|
|
3 Explain 3 0 214 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 8 0 1 usesStmtJournal=0
|
|
11 Goto 0 1 0 0
|
|
Braun|30
|
|
Wernher|10
|
|
von|20
|
|
```
|
|
|
|
## Flag
|
|
|
|
```
|
|
|
|
```
|
|
|