---
This commit is contained in:
@@ -0,0 +1,213 @@
|
||||
## 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).-->
|
||||
The queries added new columns with 123. Probably "INTERSECT" is wrong. It is a logic bug because the output is different
|
||||
|
||||
## Minimized query
|
||||
|
||||
```sql
|
||||
ATTACH DATABASE ':memory:' AS aux12;
|
||||
PRAGMA fullfsync;
|
||||
PRAGMA automatic_index = ON;
|
||||
PRAGMA wal_checkpoint;
|
||||
.tables
|
||||
CREATE TABLE t1(c1);
|
||||
INSERT INTO t1 VALUES(if(2147483647, 12, 0, 12, 0, 12, 12)),(123),(1234),(NULL),('abc');
|
||||
CREATE TABLE "t2"(c2);
|
||||
INSERT INTO t2 VALUES(44),(55),(123);
|
||||
CREATE TABLE t3(c3,c4);
|
||||
INSERT INTO t3 VALUES(66,1),(123,2),(77,3);
|
||||
CREATE VIEW t4 AS SELECT c3 FROM t3;
|
||||
CREATE VIEW t5 AS SELECT c3 FROM t3 ORDER BY c4;
|
||||
SELECT * FROM t1, t2 WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM t4) AND c1=123;
|
||||
SELECT * FROM t1, t2 WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM t5) AND c1=123;
|
||||
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ANALYZE;
|
||||
INSERT OR IGNORE INTO t1 VALUES ('');
|
||||
SELECT * FROM t1 WHERE c1 = (SELECT SUM(c1) FROM t1);
|
||||
INSERT INTO t2 DEFAULT VALUES;
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ANALYZE;
|
||||
WITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<63) SELECT * FROM cnt;
|
||||
ANALYZE;
|
||||
|
||||
SELECT COUNT(*) FROM t3;
|
||||
ANALYZE t2;
|
||||
ANALYZE;
|
||||
CREATE TEMP VIEW IF NOT EXISTS v_t1_9829 AS SELECT c1 FROM t1;
|
||||
WITH cte AS (SELECT c3, LEAD(c3) OVER (ORDER BY c3) AS nxt FROM t3) SELECT * FROM cte;
|
||||
SELECT * FROM t1 NATURAL JOIN t1;
|
||||
REINDEX;
|
||||
PRAGMA foreign_keys = YES;
|
||||
VACUUM main;
|
||||
CREATE TRIGGER IF NOT EXISTS trg_t1_6595 BEFORE UPDATE OF c1 ON t1 FOR EACH ROW BEGIN SELECT RAISE(IGNORE); END;
|
||||
DETACH DATABASE aux12;
|
||||
INSERT INTO t1 DEFAULT VALUES;
|
||||
```
|
||||
|
||||
## Actual output
|
||||
|
||||
```sql
|
||||
0
|
||||
0|-1|-1
|
||||
0
|
||||
1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
20
|
||||
21
|
||||
22
|
||||
23
|
||||
24
|
||||
25
|
||||
26
|
||||
27
|
||||
28
|
||||
29
|
||||
30
|
||||
31
|
||||
32
|
||||
33
|
||||
34
|
||||
35
|
||||
36
|
||||
37
|
||||
38
|
||||
39
|
||||
40
|
||||
41
|
||||
42
|
||||
43
|
||||
44
|
||||
45
|
||||
46
|
||||
47
|
||||
48
|
||||
49
|
||||
50
|
||||
51
|
||||
52
|
||||
53
|
||||
54
|
||||
55
|
||||
56
|
||||
57
|
||||
58
|
||||
59
|
||||
60
|
||||
61
|
||||
62
|
||||
63
|
||||
3
|
||||
66|77
|
||||
77|123
|
||||
123|
|
||||
```
|
||||
|
||||
## Expectation
|
||||
|
||||
```sql
|
||||
0
|
||||
0|-1|-1
|
||||
123|123
|
||||
123|123
|
||||
5
|
||||
6
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
20
|
||||
21
|
||||
22
|
||||
23
|
||||
24
|
||||
25
|
||||
26
|
||||
27
|
||||
28
|
||||
29
|
||||
30
|
||||
31
|
||||
32
|
||||
33
|
||||
34
|
||||
35
|
||||
36
|
||||
37
|
||||
38
|
||||
39
|
||||
40
|
||||
41
|
||||
42
|
||||
43
|
||||
44
|
||||
45
|
||||
46
|
||||
47
|
||||
48
|
||||
49
|
||||
50
|
||||
51
|
||||
52
|
||||
53
|
||||
54
|
||||
55
|
||||
56
|
||||
57
|
||||
58
|
||||
59
|
||||
60
|
||||
61
|
||||
62
|
||||
63
|
||||
3
|
||||
66|77
|
||||
77|123
|
||||
123|
|
||||
12
|
||||
123
|
||||
1234
|
||||
abc
|
||||
```
|
||||
|
||||
## Flag
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
ATTACH DATABASE ':memory:' AS aux12;
|
||||
PRAGMA fullfsync;
|
||||
PRAGMA automatic_index = ON;
|
||||
PRAGMA wal_checkpoint;
|
||||
.tables
|
||||
CREATE TABLE t1(c1);
|
||||
INSERT INTO t1 VALUES(if(2147483647, 12, 0, 12, 0, 12, 12)),(123),(1234),(NULL),('abc');
|
||||
CREATE TABLE "t2"(c2);
|
||||
INSERT INTO t2 VALUES(44),(55),(123);
|
||||
CREATE TABLE t3(c3,c4);
|
||||
INSERT INTO t3 VALUES(66,1),(123,2),(77,3);
|
||||
CREATE VIEW t4 AS SELECT c3 FROM t3;
|
||||
CREATE VIEW t5 AS SELECT c3 FROM t3 ORDER BY c4;
|
||||
SELECT * FROM t1, t2 WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM t4) AND c1=123;
|
||||
SELECT * FROM t1, t2 WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM t5) AND c1=123;
|
||||
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ANALYZE;
|
||||
INSERT OR IGNORE INTO t1 VALUES ('');
|
||||
SELECT * FROM t1 WHERE c1 = (SELECT SUM(c1) FROM t1);
|
||||
INSERT INTO t2 DEFAULT VALUES;
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ANALYZE;
|
||||
WITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<63) SELECT * FROM cnt;
|
||||
ANALYZE;
|
||||
|
||||
SELECT COUNT(*) FROM t3;
|
||||
ANALYZE t2;
|
||||
ANALYZE;
|
||||
CREATE TEMP VIEW IF NOT EXISTS v_t1_9829 AS SELECT c1 FROM t1;
|
||||
WITH cte AS (SELECT c3, LEAD(c3) OVER (ORDER BY c3) AS nxt FROM t3) SELECT * FROM cte;
|
||||
SELECT * FROM t1 NATURAL JOIN t1;
|
||||
REINDEX;
|
||||
PRAGMA foreign_keys = YES;
|
||||
VACUUM main;
|
||||
CREATE TRIGGER IF NOT EXISTS trg_t1_6595 BEFORE UPDATE OF c1 ON t1 FOR EACH ROW BEGIN SELECT RAISE(IGNORE); END;
|
||||
DETACH DATABASE aux12;
|
||||
INSERT INTO t1 DEFAULT VALUES;
|
||||
@@ -0,0 +1,17 @@
|
||||
CREATE TABLE t1(c1);
|
||||
INSERT INTO t1 VALUES(123);
|
||||
|
||||
CREATE TABLE t2(c2);
|
||||
INSERT INTO t2 VALUES(123);
|
||||
|
||||
CREATE TABLE t3(c3,c4);
|
||||
INSERT INTO t3 VALUES(123,2);
|
||||
|
||||
CREATE VIEW v1 AS SELECT c3 FROM t3;
|
||||
CREATE VIEW v2 AS SELECT c3 FROM t3 ORDER BY c4;
|
||||
|
||||
SELECT * FROM t1, t2
|
||||
WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM v1);
|
||||
|
||||
SELECT * FROM t1, t2
|
||||
WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM v2);
|
||||
Reference in New Issue
Block a user