264 lines
9.0 KiB
Markdown
264 lines
9.0 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
|
|
PRAGMA auto_vacuum = NONE;
|
|
SAVEPOINT sp1400;
|
|
ATTACH DATABASE ':memory:' AS aux76;
|
|
SAVEPOINT sp9627;
|
|
.dbconfig
|
|
PRAGMA wal_checkpoint('FULL');
|
|
PRAGMA cache_spill = FALSE;
|
|
.quit
|
|
((ATTACH)) DATABASE ':memory:' AS aux54;
|
|
-- LEAD({c}, 2, 'default')
|
|
|
|
CREATE TABLE T (
|
|
a INT8,
|
|
b TEXT,
|
|
c REAL,
|
|
d REAL
|
|
);
|
|
INSERT INTO T VALUES (-iif(NULL, likelihood(degrees(sign(-glob(NULL, NULL))), -(-(datetime(quote(NULL))))), time(coalesce(NULL, NULL, 4041010528813953889))),'a',40.5,-70.0), (2,'b',-10.25,20.5), (3,'c',9e999,-9e999);
|
|
SELECT b FROM T WHERE ABS(c) > 5 AND ABS(d) > 5;
|
|
WITH RECURSIVE empty(x) AS (SELECT 1 WHERE 1=0 uNiOn ALL SELECT x+1 FROM empty WHERE x<10) SELECT * FROM empty;
|
|
SELECT * FROM T AS a RIGHT JOIN T AS b ON a.rowid = b.rowid;
|
|
SELECT COUNT(*) FROM T;
|
|
DETACH DATABASE aux54;
|
|
SELECT COUNT(*) FROM T;
|
|
UPDATE T SET a = a + 1 WHERE rowid = 1;
|
|
UPDATE T SET a = json_object('k', a) WHERE a IS NOT NULL RETURNING *;
|
|
UPDATE T SET a = a + 1;
|
|
DELETE FROM T WHERE 0;
|
|
SELECT * FROM T;
|
|
CREATE VIEW IF NOT EXISTS v_T_949 AS SELECT b FROM T;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T_4240 BEFORE UPDATE OF a ON T BEGIN SELECT RAISE(ROLLBACK, 'rb'); END;
|
|
SELECT NTILE(0) OVER (PARTITION BY c ORDER BY c ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM T;
|
|
PRAGMA temp_store = 'MEMORY';
|
|
ALTER TABLE T RENAME COLUMN a TO a_r7606;
|
|
INSERT INTO T DEFAULT VALUES;
|
|
INSERT INTO T VALUES (NULL, NULL, NULL, NULL);
|
|
INSERT INTO T DEFAULT VALUES;
|
|
SELECT * FROM T;
|
|
CREATE TEMPORARY VIEW IF NOT EXISTS v_T_5148 AS SELECT a FROM T;
|
|
PRAGMA cache_spill = FALSE;
|
|
.quit
|
|
((ATTACH)) DATABASE ':memory:' AS aux54;
|
|
-- LEAD({c}, 2, 'default')
|
|
|
|
CREATE TABLE T (
|
|
a NONE,
|
|
b TEXT,
|
|
c REAL,
|
|
d REAL
|
|
);
|
|
INSERT INTO T VALUES (-iif(NULL, likelihood(degrees(4041010528813953889), 0.5), 4041010528813953889),'a',40.5,-70.0), (2,'b',-10.25,20.5), (3,'c',9e999,-9e999);
|
|
SELECT b FROM T WHERE ABS(c) > 5 AND ABS(d) > 5;
|
|
WITH RECURSIVE empty(x) AS (SELECT 1 WHERE 1=0 UNION ALL SELECT x+1 FROM empty WHERE x<10) SELECT * FROM empty;
|
|
SELECT * FROM T AS a RIGHT JOIN T AS b ON a.rowid = b.rowid;
|
|
SELECT COUNT(*) FROM T;
|
|
DETACH DATABASE aux54;
|
|
SELECT COUNT(*) FROM T;
|
|
UPDATE T SET a = a + 1 WHERE rowid = 1;
|
|
UPDATE T SET a = json_object('k', a) WHERE a IS NOT NULL RETURNING *;
|
|
UPDATE T SET a = a + 1;
|
|
DELETE FROM T WHERE 0;
|
|
SELECT * FROM T;
|
|
CREATE VIEW IF NOT EXISTS v_T_949 AS SELECT b FROM T;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T_4240 BEFORE UPDATE OF a ON T BEGIN SELECT RAISE(ROLLBACK, 'rb'); END;
|
|
SELECT NTILE(0) OVER (PARTITION BY c ORDER BY c ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM T;
|
|
PRAGMA temp_store = 'MEMORY';
|
|
ALTER TABLE T RENAME COLUMN a TO a_r7606;
|
|
INSERT INTO T DEFAULT VALUES;
|
|
INSERT INTO T VALUES (NULL, NULL, NULL, NULL);
|
|
INSERT INTO T DEFAULT VALUES;
|
|
SELECT * FROM T;
|
|
CREATE TEMPORARY VIEW IF NOT EXISTS v_T_5148 AS SELECT a FROM T;
|
|
PRAGMA cache_spill = FALSE;
|
|
.quit
|
|
((ATTACH)) DATABASE ':memory:' AS aux54;
|
|
-- LEAD({c}, 2, 'default')
|
|
|
|
CREATE TABLE T (
|
|
a NONE,
|
|
b TEXT,
|
|
c REAL,
|
|
d REAL
|
|
);
|
|
INSERT INTO T VALUES (-iif(NULL, likelihood(degrees(4041010528813953889), 0.5), 4041010528813953889),'a',40.5,-70.0), (2,'b',-10.25,20.5), (3,'c',9e999,-9e999);
|
|
SELECT b FROM T WHERE ABS(c) > 5 AND ABS(d) > 5;
|
|
WITH RECURSIVE empty(x) AS (SELECT 1 WHERE 1=0 UNION ALL SELECT x+1 FROM empty WHERE x<10) SELECT * FROM empty;
|
|
SELECT * FROM T AS a RIGHT JOIN T AS b ON a.rowid = b.rowid;
|
|
SELECT COUNT(*) FROM T;
|
|
DETACH DATABASE aux54;
|
|
SELECT COUNT(*) FROM T;
|
|
UPDATE T SET a = a + 1 WHERE rowid = 1;
|
|
UPDATE T SET a = json_object('k', a) WHERE a IS NOT NULL RETURNING *;
|
|
UPDATE T SET a = a + 1;
|
|
DELETE FROM T WHERE 0;
|
|
SELECT * FROM T;
|
|
CREATE VIEW IF NOT EXISTS v_T_949 AS SELECT b FROM T;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T_4240 BEFORE UPDATE OF a ON T BEGIN SELECT RAISE(ROLLBACK, 'rb'); END;
|
|
SELECT NTILE(0) OVER (PARTITION BY c ORDER BY c ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM T;
|
|
PRAGMA temp_store = 'MEMORY';
|
|
ALTER TABLE T RENAME COLUMN a TO a_r7606;
|
|
INSERT INTO T DEFAULT VALUES;
|
|
INSERT INTO T VALUES (NULL, NULL, NULL, NULL);
|
|
INSERT INTO T DEFAULT VALUES;
|
|
SELECT * FROM T;
|
|
CREATE TEMPORARY VIEW IF NOT EXISTS v_T_5148 AS SELECT a FROM T;
|
|
PRAGMA cache_spill = FALSE;
|
|
.quit
|
|
((ATTACH)) DATABASE ':memory:' AS aux54;
|
|
-- LEAD({c}, 2, 'default')
|
|
|
|
CREATE TABLE T (
|
|
a NONE,
|
|
b TEXT,
|
|
c REAL,
|
|
d REAL
|
|
);
|
|
INSERT INTO T VALUES (-iif(NULL, likelihood(degrees(4041010528813953889), 0.5), 4041010528813953889),'a',40.5,-70.0), (2,'b',-10.25,20.5), (3,'c',9e999,-9e999);
|
|
SELECT b FROM T WHERE ABS(c) > 5 AND ABS(d) > 5;
|
|
CREATE TABLE T1 (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
CREATE TABLE T2 (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T1 VALUES (1,1.0);
|
|
INSERT INTO T2 VALUES (1,-1.0),(2,9e999);
|
|
INSERT OR REPLACE INTO T1
|
|
SELECT * FROM T2;
|
|
SELECT * FROM T1;
|
|
WITH RECURSIVE empty(x) AS (SELECT 1 WHERE 1=0 UNION ALL SELECT x+1 FROM empty WHERE x<10) SELECT * FROM empty;
|
|
SELECT * FROM T AS a RIGHT JOIN T AS b ON a.rowid = b.rowid;
|
|
SELECT COUNT(*) FROM T;
|
|
DETACH DATABASE aux54;
|
|
SELECT COUNT(*) FROM T;
|
|
UPDATE T SET a = a + 1 WHERE rowid = 1;
|
|
UPDATE T SET a = json_object('k', a) WHERE a IS NOT NULL RETURNING *;
|
|
UPDATE T SET a = a + 1;
|
|
DELETE FROM T WHERE 0;
|
|
SELECT * FROM T;
|
|
CREATE VIEW IF NOT EXISTS v_T_949 AS SELECT b FROM T;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T_4240 BEFORE UPDATE OF a ON T BEGIN SELECT RAISE(ROLLBACK, 'rb'); END;
|
|
SELECT NTILE(0) OVER (PARTITION BY c ORDER BY c ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM T;
|
|
PRAGMA temp_store = 'MEMORY';
|
|
ALTER TABLE T RENAME COLUMN a TO a_r7606;
|
|
INSERT INTO T DEFAULT VALUES;
|
|
INSERT INTO T VALUES (NULL, NULL, NULL, NULL);
|
|
INSERT INTO T DEFAULT VALUES;
|
|
SELECT * FROM T;
|
|
CREATE TEMPORARY VIEW IF NOT EXISTS v_T_5148 AS SELECT a FROM T;
|
|
ANALYZE;
|
|
INSERT OR ROLLBACK INTO T VALUES (4, 0, 'x', NULL);
|
|
INSERT OR FAIL INTO T VALUES ('x', -5, NULL, 6);
|
|
ALTER TABLE T ADD COLUMN extra_961 BOOLEAN COLLATE RTRIM;
|
|
SELECT b, (SELECT b FROM T LIMIT 1) AS first_val FROM T;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T1_7329 BEFORE UPDATE ON T1 BEGIN SELECT RAISE(ROLLBACK, 'rb'); END;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T_3879 AFTER INSERT ON T BEGIN INSERT INTO T(d) VALUES (NULL); END;
|
|
PRAGMA secure_delete = FALSE;
|
|
UPDATE T1 SET a = NULL WHERE rowid = 1 RETURNING *;
|
|
SELECT NTILE(1) OVER (ORDER BY b ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE GROUP) FROM T2;
|
|
CREATE INDEX IF NOT EXISTS idx_T1_6676 ON T1((b + 1)) WHERE b > 0;
|
|
INSERT OR ROLLBACK INTO T1 VALUES (-10, 10);
|
|
SELECT TOTAL(c) FROM T;
|
|
INSERT INTO T1 VALUES (1, 1) ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b;
|
|
WITH cte AS (SELECT CASE WHEN a > 0 THEN "pos" ELSE "neg" END AS sign FROM T2) SELECT * FROM cte;
|
|
SELECT NTILE(c) OVER (ORDER BY c RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T;
|
|
DELETE FROM T1 WHERE 0 RETURNING *;
|
|
SELECT COUNT(*) OVER (PARTITION BY a ORDER BY a GROUPS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM T2;
|
|
CREATE TABLE T (
|
|
A VARCHAR(10) PRIMARY KEY,
|
|
B VARCHAR(15),
|
|
C BIGINT NOT NULL,
|
|
UNIQUE (B, C)
|
|
);
|
|
INSERT INTO T VALUES ('a', 'p', 3000);
|
|
INSERT INTO T VALUES ('b', 'q', 9223372036854775807);
|
|
INSERT INTO T VALUES ('c', 'r', 1700);
|
|
INSERT INTO T VALUES ('e', 'q', -9223372036854775808);
|
|
INSERT INTO T VALUES ('f', 'r', 0);
|
|
SELECT B, COUNT(*) AS D, SUM(C) AS E, AVG(C) AS F FROM T GROUP BY B HAVING SUM(C) > 0;
|
|
INSERT INTO T1 SELECT * FROM T1;
|
|
SELECT * FROM T1 WHERE a IN (SELECT DISTINCT a FROM T1);
|
|
SELECT * FROM T2;
|
|
SELECT * FROM T WHERE C < (SELECT MIN(C) FROM T);
|
|
ROLLBACK TRANSACTION TO SAVEPOINT sp9627;
|
|
RELEASE SAVEPOINT sp9627;
|
|
PRAGMA case_sensitive_like = YES;
|
|
DETACH DATABASE aux76;
|
|
SELECT * FROM T2 AS a JOIN T2 AS b ON a.rowid = b.rowid;
|
|
SELECT * FROM T1 AS a LEFT JOIN T AS b ON a.rowid = b.rowid;
|
|
SELECT * FROM T2;
|
|
CREATE TEMP VIEW IF NOT EXISTS v_T1_8538 AS SELECT b FROM T1;
|
|
WITH n AS NOT MATERIALIZED (SELECT * FROM T) SELECT * FROM n WHERE A > 0;
|
|
ALTER TABLE T RENAME COLUMN C TO C_r4293;
|
|
ROLLBACK TO sp1400;
|
|
RELEASE sp1400;
|
|
UPDATE T SET A = 'x';
|
|
WITH cte AS (SELECT * FROM T2), cte2 AS (SELECT * FROM cte) SELECT * FROM cte2;
|
|
ANALYZE;
|
|
```
|
|
|
|
## Actual output
|
|
|
|
```sql
|
|
defensive off
|
|
dqs_ddl on
|
|
dqs_dml on
|
|
enable_fkey off
|
|
enable_qpsg off
|
|
enable_trigger on
|
|
enable_view on
|
|
fts3_tokenizer off
|
|
legacy_alter_table off
|
|
legacy_file_format off
|
|
load_extension on
|
|
no_ckpt_on_close off
|
|
reset_database off
|
|
trigger_eqp off
|
|
trusted_schema on
|
|
writable_schema off
|
|
0|-1|-1
|
|
```
|
|
|
|
## Expectation
|
|
|
|
```sql
|
|
attach_create on
|
|
attach_write on
|
|
comments on
|
|
defensive on
|
|
dqs_ddl off
|
|
dqs_dml off
|
|
enable_fkey off
|
|
enable_qpsg off
|
|
enable_trigger on
|
|
enable_view on
|
|
fts3_tokenizer off
|
|
legacy_alter_table off
|
|
legacy_file_format off
|
|
load_extension on
|
|
no_ckpt_on_close off
|
|
reset_database off
|
|
reverse_scanorder off
|
|
stmt_scanstatus off
|
|
trigger_eqp off
|
|
trusted_schema off
|
|
writable_schema off
|
|
0|-1|-1
|
|
```
|
|
|
|
## Flag
|
|
|
|
```
|
|
|
|
```
|
|
|