Files
ast-project/part1/results/1/bug_d2dd5ed9-4f46-48fe-b492-e6d7bc3b40cb_logic.md
2026-06-24 13:47:14 +02:00

430 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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
.progress 2
ATTACH DATABASE ':memory:' AS aux8;
CREATE TABLE T (
a TEXT,
b TEXT
);
INSERT INTO T VALUES ('a','2020-01-01'), ('b','2026-01-01');
SELECT a,
CAST(
(julianday('now')-julianday(b))/365.25
AS INTEGER
) AS c
FROM T;
.read commands.sql
.auth ON
PRAGMA wal_checkpoint;
.check
ATTACH DATABASE '' || (':memory:') AS aux7;
ATTACH DATABASE ':memory:' AS aux90;
BEGIN EXCLUSIVE;
((PRAGMA)) wal_autocheckpoint = degrees(json_quote(-(-(json_set(round(x'bd07'), '$.key', julianday(asin(unixepoch(log(json_valid(6.283185307179586, 8))))))))));
-- PRAGMA full_column_names = YES;
PRAGMA encoding = 'UTF-16le';
PRAGMA foreign_key_list(users);
.headers
CREATE TABLE t1(a TEXT, ax INTEGER, b INT, PRIMARY KEY(a,ax)) WITHOUT ROWID;
WITH RECURSIVE c(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM c WHERE NOT NOT (NOT NOT (NOT NOT (i<10) INSERT INTO t1(a,ax,b) SELECT printf('%02x',i+160), random(), i FROM c))) ;
CREATE INDEX t1a ON t1(a);
CREATE TABLE t2(x,y);
CREATE TABLE t3(cnt);
WITH RECURSIVE c(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM c WHERE +i<4) INSERT INTO t3(cnt) SELECT i FROM c;
SELECT count(*) FROM t1;
WITH RECURSIVE vals(x) AS (SELECT ax FROM t1 WHERE ax IS NOT NULL UNION ALL SELECT ax FROM t1 WHERE ax IS NOT NULL LIMIT 10) SELECT * FROM vals;
INSERT OR FAIL INTO t3 VALUES (NULL);
WITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1) SELECT * FROM cnt;
END;
DETACH DATABASE aux90;
SELECT * FROM t1 CROSS JOIN t1;
VACUUM;
SELECT * FROM t2;
CREATE VIRTUAL TABLE t0 USING fts4("x", "y", "z");
DROP TABLE t0;
DETACH DATABASE aux7;
SELECT * FROM t3 AS a FULL JOIN t3 AS b ON a.rowid = b.rowid;
INSERT INTO t1 DEFAULT VALUES;
UPDATE t3 SET cnt = CURRENT_TIMESTAMP WHERE cnt IS NOT NULL;
ALTER TABLE t1 RENAME COLUMN b TO b_r9177;
CREATE TABLE T (
a TEXT,
b TEXT,
c REAL
);
INSERT INTO T VALUES ('a','b',1.5), ('a','c',-2.25), ('b','b',4.75);
SELECT a,
SUM(CASE WHEN b='b' THEN c ELSE 0 END) AS d,
SUM(CASE WHEN b='c' THEN c ELSE 0 END) AS e
FROM T
GROUP BY a;
SELECT LAG(cnt, 2) OVER (ORDER BY cnt) FROM t3;
INSERT INTO t2 SELECT * FROM t2;
VACUUM;
CREATE INDEX IF NOT EXISTS idx_t3_7253 ON t3(cnt COLLATE NOCASE);
CREATE INDEX IF NOT EXISTS idx_T_5985 ON T((a + 1)) WHERE a > 0;
SELECT LEAD(a, 0, 'default') OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE TIES) FROM /* PRAGMA vdbe_addoptrace = ON; */ T;
VACUUM main;
INSERT INTO t2 DEFAULT VALUES;
SELECT COUNT(*) FILTER (WHERE a IS NOT NULL), SUM(rowid) FILTER (WHERE a > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(a) FILTER (WHERE a > 0 AND a < 100), COUNT(*) FILTER (WHERE typeof(a) = "text") FROM T;
VACUUM;
CREATE TEMP VIEW IF NOT EXISTS v_t3_9532 AS SELECT cnt FROM t3;
.auth ON
PRAGMA wal_checkpoint;
.check
ATTACH DATABASE ':memory:' AS aux7;
ATTACH DATABASE ':memory:' AS aux90;
BEGIN EXCLUSIVE;
((PRAGMA)) wal_autocheckpoint = degrees(json_quote(-(-(json_set(round(x'bd07'), '$.key', julianday(asin(unixepoch(6.283185307179586))))))));
-- PRAGMA full_column_names = YES;
PRAGMA encoding = 'UTF-16le';
PRAGMA foreign_key_list(users);
.headers
CREATE TABLE t1(a TEXT, ax INTEGER, b INT, PRIMARY KEY(a,ax)) WITHOUT ROWID;
WITH RECURSIVE c(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM c WHERE i<10) INSERT INTO t1(a,ax,b) SELECT printf('%02x',i+160), random(), i FROM c;
CREATE INDEX t1a ON t1(a);
CREATE TABLE t2(x,y);
CREATE TABLE t3(cnt);
WITH RECURSIVE c(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM c WHERE i<4) INSERT INTO t3(cnt) SELECT i FROM c;
SELECT count(*) FROM t1;
WITH RECURSIVE vals(x) AS (SELECT ax FROM t1 WHERE ax IS NOT NULL UNION ALL SELECT ax FROM t1 WHERE ax IS NOT NULL LIMIT 10) SELECT * FROM vals;
INSERT OR FAIL INTO t3 VALUES (NULL);
WITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1) SELECT * FROM cnt;
END;
DETACH DATABASE aux90;
SELECT * FROM t1 CROSS JOIN t1;
VACUUM;
SELECT * FROM t2;
DETACH DATABASE aux7;
SELECT * FROM t3 AS a FULL JOIN t3 AS b ON a.rowid = b.rowid;
INSERT INTO t1 DEFAULT VALUES;
UPDATE t3 SET cnt = CURRENT_TIMESTAMP WHERE cnt IS NOT NULL;
ALTER TABLE t1 RENAME COLUMN b TO b_r9177;
CREATE TABLE T (
a TEXT,
b TEXT,
c REAL
);
INSERT INTO T VALUES ('a','b',1.5), ('a','c',-2.25), ('b','b',4.75);
SELECT a,
SUM(CASE WHEN b='b' THEN c ELSE 0 END) AS d,
SUM(CASE WHEN b='c' THEN c ELSE 0 END) AS e
FROM T
GROUP BY a;
SELECT LAG(cnt, 2) OVER (ORDER BY cnt) FROM t3;
INSERT INTO t2 SELECT * FROM t2;
VACUUM;
CREATE INDEX IF NOT EXISTS idx_t3_7253 ON t3(cnt COLLATE NOCASE);
CREATE INDEX IF NOT EXISTS idx_T_5985 ON T((a + 1)) WHERE a > 0;
SELECT LEAD(a, 0, 'default') OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE TIES) FROM /* PRAGMA vdbe_addoptrace = ON; */ T;
VACUUM main;
INSERT INTO t2 DEFAULT VALUES;
SELECT COUNT(*) FILTER (WHERE a IS NOT NULL), SUM(rowid) FILTER (WHERE a > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(a) FILTER (WHERE a > 0 AND a < 100), COUNT(*) FILTER (WHERE typeof(a) = "text") FROM T;
VACUUM;
CREATE TEMP VIEW IF NOT EXISTS v_t3_9532 AS SELECT cnt FROM t3;
.auth ON
PRAGMA wal_checkpoint;
.check
ATTACH DATABASE ':memory:' AS aux7;
ATTACH DATABASE ':memory:' AS aux90;
BEGIN EXCLUSIVE;
((PRAGMA)) wal_autocheckpoint = degrees(json_quote(-(-(json_set(round(x'bd07'), '$.key', julianday(asin(unixepoch(6.283185307179586))))))));
-- PRAGMA full_column_names = YES;
PRAGMA encoding = 'UTF-16le';
PRAGMA foreign_key_list(users);
.headers
CREATE TABLE t1(a TEXT, ax INTEGER, b INT, PRIMARY KEY(a,ax)) WITHOUT ROWID;
WITH RECURSIVE c(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM c WHERE i<10) INSERT INTO t1(a,ax,b) SELECT printf('%02x',i+160), random(), i FROM c;
CREATE INDEX t1a ON t1(a);
CREATE TABLE t2(x,y);
CREATE TABLE t3(cnt);
WITH RECURSIVE c(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM c WHERE i<4) INSERT INTO t3(cnt) SELECT i FROM c;
SELECT count(*) FROM t1;
WITH RECURSIVE vals(x) AS (SELECT ax FROM t1 WHERE ax IS NOT NULL UNION ALL SELECT ax FROM t1 WHERE ax IS NOT NULL LIMIT 10) SELECT * FROM vals;
INSERT OR FAIL INTO t3 VALUES (NULL);
WITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1) SELECT * FROM cnt;
END;
DETACH DATABASE aux90;
SELECT * FROM t1 CROSS JOIN t1;
VACUUM;
SELECT * FROM t2;
DETACH DATABASE aux7;
SELECT * FROM t3 AS a FULL JOIN t3 AS b ON a.rowid = b.rowid;
INSERT INTO t1 DEFAULT VALUES;
UPDATE t3 SET cnt = CURRENT_TIMESTAMP WHERE cnt IS NOT NULL;
ALTER TABLE t1 RENAME COLUMN b TO b_r9177;
CREATE TABLE T (
a TEXT,
b TEXT,
c REAL
);
INSERT INTO T VALUES ('a','b',1.5), ('a','c',-2.25), ('b','b',4.75);
SELECT a,
SUM(CASE WHEN b='b' THEN c ELSE 0 END) AS d,
SUM(CASE WHEN b='c' THEN c ELSE 0 END) AS e
FROM T
GROUP BY a;
SELECT LAG(cnt, 2) OVER (ORDER BY cnt) FROM t3;
INSERT INTO t2 SELECT * FROM t2;
VACUUM;
CREATE INDEX IF NOT EXISTS idx_t3_7253 ON t3(cnt COLLATE NOCASE);
CREATE INDEX IF NOT EXISTS idx_T_5985 ON T((a + 1)) WHERE a > 0;
SELECT LEAD(a, 0, 'default') OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE TIES) FROM /* PRAGMA vdbe_addoptrace = ON; */ T;
VACUUM main;
INSERT INTO t2 DEFAULT VALUES;
SELECT COUNT(*) FILTER (WHERE a IS NOT NULL), SUM(rowid) FILTER (WHERE a > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(a) FILTER (WHERE a > 0 AND a < 100), COUNT(*) FILTER (WHERE typeof(a) = "text") FROM T;
VACUUM;
CREATE TEMP VIEW IF NOT EXISTS v_t3_9532 AS SELECT cnt FROM t3;
.auth ON
PRAGMA wal_checkpoint;
.check
ATTACH DATABASE ':memory:' AS aux7;
ATTACH DATABASE ':memory:' AS aux90;
BEGIN EXCLUSIVE;
((PRAGMA)) wal_autocheckpoint = degrees(json_quote(-(-(json_set(round(x'bd07'), '$.key', julianday(asin(unixepoch(6.283185307179586))))))));
-- PRAGMA full_column_names = YES;
PRAGMA encoding = 'UTF-16le';
PRAGMA foreign_key_list(users);
.headers
CREATE TABLE t1(a TEXT, ax INTEGER, b INT, PRIMARY KEY(a,ax)) WITHOUT ROWID;
WITH RECURSIVE c(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM c WHERE i<10) INSERT INTO t1(a,ax,b) SELECT printf('%02x',i+160), random(), i FROM c;
CREATE INDEX t1a ON t1(a);
CREATE TABLE t2(x,y);
CREATE TABLE t3(cnt);
WITH RECURSIVE c(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM c WHERE i<4) INSERT INTO t3(cnt) SELECT i FROM c;
SELECT count(*) FROM t1;
WITH RECURSIVE vals(x) AS (SELECT ax FROM t1 WHERE ax IS NOT NULL UNION ALL SELECT ax FROM t1 WHERE ax IS NOT NULL LIMIT 10) SELECT * FROM vals;
INSERT OR FAIL INTO t3 VALUES (NULL);
WITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1) SELECT * FROM cnt;
END;
DETACH DATABASE aux90;
SELECT * FROM t1 CROSS JOIN t1;
VACUUM;
SELECT * FROM t2;
DETACH DATABASE aux7;
SELECT * FROM t3 AS a FULL JOIN t3 AS b ON a.rowid = b.rowid;
INSERT INTO t1 DEFAULT VALUES;
UPDATE t3 SET cnt = CURRENT_TIMESTAMP WHERE cnt IS NOT NULL;
ALTER TABLE t1 RENAME COLUMN b TO b_r9177;
CREATE TABLE T (
a TEXT,
b TEXT,
c REAL
);
INSERT INTO T VALUES ('a','b',1.5), ('a','c',-2.25), ('b','b',4.75);
SELECT a,
SUM(CASE WHEN b='b' THEN c ELSE 0 END) AS d,
SUM(CASE WHEN b='c' THEN c ELSE 0 END) AS e
FROM T
GROUP BY a;
SELECT LAG(cnt, 2) OVER (ORDER BY cnt) FROM t3;
INSERT INTO t2 SELECT * FROM t2;
VACUUM;
CREATE INDEX IF NOT EXISTS idx_t3_7253 ON t3(cnt COLLATE NOCASE);
CREATE INDEX IF NOT EXISTS idx_T_5985 ON T((a + 1)) WHERE a > 0;
SELECT LEAD(a, 0, 'default') OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE TIES) FROM /* PRAGMA vdbe_addoptrace = ON; */ T;
VACUUM main;
INSERT INTO t2 DEFAULT VALUES;
SELECT COUNT(*) FILTER (WHERE a IS NOT NULL), SUM(rowid) FILTER (WHERE a > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(a) FILTER (WHERE a > 0 AND a < 100), COUNT(*) FILTER (WHERE typeof(a) = "text") FROM T;
VACUUM;
CREATE TEMP VIEW IF NOT EXISTS v_t3_9532 AS SELECT cnt FROM t3;
CREATE TEMP VIEW IF NOT EXISTS v_t3_9750 AS SELECT cnt FROM t3;
INSERT OR FAIL INTO T VALUES ('x', 0, NULL);
SELECT LEAD(a, 1) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING) FROM t1;
CREATE TRIGGER IF NOT EXISTS trg_t2_5381 AFTER DELETE ON t2 BEGIN SELECT RAISE(ABORT, 'abort'); END;
WITH RECURSIVE multi(a, b) AS (VALUES(1, "x") UNION ALL SELECT a+1, "x" FROM multi WHERE a<89) SELECT * FROM multi;
ANALYZE t3;
SELECT COUNT(*) FROM t2;
INSERT OR FAIL INTO t1 VALUES ('x', NULL, '');
SELECT * FROM t2 AS a RIGHT JOIN t2 AS b ON a.rowid = b.rowid;
SELECT * FROM t1;
CREATE TRIGGER IF NOT EXISTS trg_T_4265 AFTER UPDATE OF c ON T BEGIN SELECT RAISE(ROLLBACK, 'rb'); END;
PRAGMA cell_size_check = ON;
ALTER TABLE t2 ADD COLUMN extra_2596 BIGINT UNIQUE;
CREATE TRIGGER IF NOT EXISTS trg_t1_318 AFTER INSERT ON t1 FOR EACH ROW BEGIN INSERT INTO t1(b) VALUES (NULL); END;
SELECT COUNT(*) FROM t1;
INSERT INTO t1 VALUES (NULL, NULL, NULL);
SELECT cnt, (SELECT SUM(cnt) FROM t3) AS sum_val FROM t3;
ANALYZE t2;
DROP TRIGGER IF EXISTS t3;
REINDEX t1;
SELECT STRING_AGG(y, '|') FROM t2;
INSERT INTO t2 SELECT * FROM t2;
WITH cte(x) AS (SELECT x FROM t2) SELECT x FROM cte;
VACUUM;
ALTER TABLE t2 DROP COLUMN x;
CREATE UNIQUE INDEX IF NOT EXISTS idx_t1_5304 ON t1((a + 1));
UPDATE t1 SET ax = '';
CREATE TEMP VIEW IF NOT EXISTS v_t3_4657 AS SELECT cnt FROM t3;
CREATE INDEX IF NOT EXISTS idx_t3_1119 ON t3(lower(cnt));
INSERT INTO T SELECT * FROM T;
REINDEX t2;
WITH cte AS (SELECT c FROM T INTERSECT SELECT c FROM T) SELECT * FROM cte;
DROP TABLE IF EXISTS t2;
UPDATE T SET a = json_object('k', a) WHERE 1;
DETACH DATABASE aux8;
VACUUM;
DROP TRIGGER IF EXISTS t2;
INSERT INTO t3 VALUES (NULL);
```
## Actual output
```sql
Progress 1
Progress 2
Progress 3
Progress 4
Progress 5
Progress 6
Progress 7
Progress 8
Progress 9
Progress 10
Progress 11
Progress 12
Progress 13
Progress 14
Progress 15
Progress 16
Progress 17
Progress 18
Progress 19
Progress 20
Progress 21
Progress 22
Progress 23
Progress 24
Progress 25
Progress 26
Progress 27
Progress 28
Progress 29
Progress 30
Progress 31
Progress 32
Progress 33
Progress 34
Progress 35
Progress 36
Progress 37
Progress 38
Progress 39
Progress 40
Progress 41
Progress 42
Progress 43
Progress 44
Progress 45
Progress 46
Progress 47
Progress 48
Progress 49
Progress 50
Progress 51
Progress 52
Progress 53
Progress 54
a|6
Progress 55
Progress 56
Progress 57
Progress 58
b|0
Progress 59
Progress 60
1
Progress 61
authorizer: PRAGMA "wal_checkpoint" NULL NULL NULL
Progress 62
Progress 63
0|-1|-1
```
## Expectation
```sql
Progress 1
Progress 2
Progress 3
Progress 4
Progress 5
Progress 6
Progress 7
Progress 8
Progress 9
Progress 10
Progress 11
Progress 12
Progress 13
Progress 14
Progress 15
Progress 16
Progress 17
Progress 18
Progress 19
Progress 20
Progress 21
Progress 22
Progress 23
Progress 24
Progress 25
Progress 26
Progress 27
Progress 28
Progress 29
Progress 30
Progress 31
Progress 32
Progress 33
Progress 34
Progress 35
Progress 36
Progress 37
Progress 38
Progress 39
Progress 40
Progress 41
Progress 42
Progress 43
Progress 44
Progress 45
Progress 46
Progress 47
Progress 48
Progress 49
Progress 50
Progress 51
Progress 52
Progress 53
Progress 54
Progress 55
Progress 56
a|6
Progress 57
Progress 58
Progress 59
Progress 60
b|0
Progress 61
Progress 62
Progress 63
1
authorizer: PRAGMA "wal_checkpoint" NULL NULL NULL
Progress 64
Progress 65
0|-1|-1
Progress 66
```
## Flag
```
```