164 lines
8.4 KiB
Markdown
164 lines
8.4 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
|
|
ATTACH DATABASE ':memory:' AS aux68;
|
|
.echo on
|
|
.limit COLUMN -tanh(radians(1))
|
|
.eqp full
|
|
BEGIN DEFERRED;
|
|
.quit
|
|
SAVEPOINT sp5631;
|
|
.exit if(-char(-(-(if(-json_pretty(datetime(if(date(1, 'start of month'), 1, 0, 1), '+1 day'), ' '), 1114111, 1114111)))), 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 0, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 1, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
|
|
CREATE TABLE main.T (
|
|
a CHARINT,
|
|
|
|
b TEXT,
|
|
c REAL
|
|
);
|
|
INSERT INTO T VALUES ('a','b',like('*1.5', -(-(unixepoch(-floor(like('', 999057770073034970))))))), ('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;
|
|
INSERT INTO T SELECT * FROM T;
|
|
INSERT INTO T VALUES (NULL, NULL, NULL);
|
|
INSERT INTO T DEFAULT VALUES;
|
|
SELECT * FROM T;
|
|
ANALYZE T;
|
|
ANALYZE;
|
|
SELECT * FROM T;
|
|
ALTER TABLE T RENAME COLUMN c TO c_r70;
|
|
SELECT * FROM T WHERE a IN (SELECT a FROM T LIMIT 0);
|
|
SELECT * FROM T CROSS JOIN T;
|
|
DROP INDEX IF EXISTS T;
|
|
INSERT INTO T VALUES (1, 'x', NULL) ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c;
|
|
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 AND REPLACE /**/ INTO T1
|
|
WITH _m AS MATERIALIZED (SELECT * FROM T1) SELECT * FROM T2;
|
|
SELECT * FROM _m;
|
|
ANALYZE T1;
|
|
REINDEX;
|
|
ALTER TABLE T ADD COLUMN extra_7926 DATETIME DEFAULT '';
|
|
ROLLBACK TRANSACTION TO SAVEPOINT sp5631;
|
|
RELEASE SAVEPOINT sp5631;
|
|
SELECT MIN(b) FROM T1;
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_T1_3573 ON T1(a) WHERE a > 0;
|
|
CREATE TABLE T (
|
|
A VARCHAR(20),
|
|
B VARCHAR(10),
|
|
PRIMARY KEY (A, B)
|
|
);
|
|
INSERT INTO T VALUES ('a', 'p');
|
|
INSERT INTO T VALUES ('a', 'q');
|
|
INSERT INTO T VALUES ('b', 'q');
|
|
INSERT INTO T VALUES ('c', 'r');
|
|
INSERT INTO T VALUES ('b', 'r');
|
|
INSERT INTO T VALUES ('b', 't');
|
|
SELECT B, COUNT(DISTINCT A) AS D FROM T GROUP BY B ORDER BY D DESC, B ASC;
|
|
ALTER TABLE T1 RENAME COLUMN b TO b_r1178;
|
|
PRAGMA automatic_index = TRUE;
|
|
INSERT INTO T1 VALUES (NULL, NULL);
|
|
PRAGMA synchronous = 'OFF';
|
|
INSERT INTO T2 VALUES (NULL, NULL);
|
|
|
|
SELECT COUNT(*) FROM T2;
|
|
END TRANSACTION;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T2_2403 AFTER UPDATE OF a ON T2 FOR EACH ROW BEGIN SELECT RAISE(FAIL, 'no'); END;
|
|
WITH RECURSIVE tree(id, parent, depth) AS (VALUES(1, NULL, 0) UNION ALL SELECT id+1, id, depth+1 FROM tree WHERE depth<46) SELECT * FROM tree;
|
|
|
|
SELECT COUNT(*) FROM T2;
|
|
INSERT INTO T1 DEFAULT VALUES;
|
|
CREATE TABLE T (
|
|
A VARCHAR(20),
|
|
B VARCHAR(10),
|
|
PRIMARY KEY (A, B)
|
|
);
|
|
INSERT INTO T VALUES ('a', 'p');
|
|
INSERT INTO T VALUES ('a', 'q');
|
|
INSERT INTO T VALUES ('b', 'q');
|
|
INSERT INTO T VALUES ('c', 'r');
|
|
INSERT INTO T VALUES ('b', 'r');
|
|
INSERT INTO T VALUES ('b', 't');
|
|
SELECT B, COUNT(DISTINCT A) AS D FROM T GROUP BY B ORDER BY D DESC, B ASC;
|
|
ALTER TABLE T1 RENAME COLUMN a TO a_r9833;
|
|
VACUUM;
|
|
SELECT a FROM T1 WHERE a = (SELECT MAX(a) FROM T1);
|
|
ANALYZE;
|
|
SELECT B, (SELECT SUM(B) FROM T) AS sum_val FROM T;
|
|
SELECT * FROM T2;
|
|
INSERT INTO T VALUES (NULL, NULL);
|
|
SELECT * FROM T1 WHERE b NOT IN (SELECT b FROM T1 WHERE b IS NOT NULL);
|
|
INSERT INTO T2 VALUES (NULL, NULL) ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b;
|
|
REINDEX T2;
|
|
WITH cte AS (SELECT 1 AS x) SELECT x + 0.5 FROM cte;
|
|
SELECT SUM(a) FROM T1;
|
|
SELECT AVG(B) FROM T;
|
|
ALTER TABLE T2 RENAME COLUMN a TO a_r2012;
|
|
INSERT INTO T1 SELECT * FROM T1;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T2_7416 AFTER DELETE ON T2 FOR EACH ROW BEGIN SELECT RAISE(IGNORE); END;
|
|
SELECT a, (SELECT MIN(a) FROM T1) AS min_val FROM T1;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T2_3024 BEFORE UPDATE OF b ON T2 BEGIN INSERT INTO T2(b) VALUES (NULL); END;
|
|
ANALYZE;
|
|
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 T2;
|
|
DROP TABLE IF EXISTS T2;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T_1280 BEFORE UPDATE OF B ON T BEGIN SELECT RAISE(IGNORE); END;
|
|
SELECT * FROM T2 WHERE a = (SELECT MAX(a) FROM T2 WHERE a = (SELECT MAX(a) FROM T2));
|
|
INSERT INTO T1 VALUES ('x', 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b;
|
|
ALTER TABLE T2 ADD COLUMN extra_4873 CHARACTER(20) DEFAULT CURRENT_TIMESTAMP;
|
|
DETACH DATABASE aux68;
|
|
ANALYZE T;
|
|
ALTER TABLE T ADD COLUMN extra_6814 DATE DEFAULT 0;
|
|
PRAGMA recursive_triggers = FALSE;
|
|
```
|
|
|
|
## Actual output
|
|
|
|
```sql
|
|
.limit COLUMN -tanh(radians(1))
|
|
column 0
|
|
.eqp full
|
|
BEGIN DEFERRED;
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 1 0 0 Start at 1
|
|
1 AutoCommit 0 0 0 0
|
|
2 Halt 0 0 0 0
|
|
.quit
|
|
```
|
|
|
|
## Expectation
|
|
|
|
```sql
|
|
.limit COLUMN -tanh(radians(1))
|
|
column 0
|
|
.eqp full
|
|
BEGIN DEFERRED;
|
|
addr opcode p1 p2 p3 p4 p5 comment
|
|
---- ------------- ---- ---- ---- ------------- -- -------------
|
|
0 Init 0 3 0 0 Start at 3
|
|
1 AutoCommit 0 0 0 0
|
|
2 Halt 0 0 0 0
|
|
3 Goto 0 1 0 0
|
|
.quit
|
|
```
|
|
|
|
## Flag
|
|
|
|
```
|
|
-box
|
|
```
|
|
|