138 lines
4.3 KiB
Markdown
138 lines
4.3 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
|
|
.dbconfig fk 9999
|
|
.separator >_<
|
|
.bail off
|
|
.show
|
|
SAVEPOINT sp9092;
|
|
-- PRAGMA short_column_names = YES;
|
|
|
|
.exit
|
|
.import employee.db main
|
|
ATTACH DATABASE (':memory:' || '') AS aux30;
|
|
ATTACH DATABASE ':memory:' AS aux15;
|
|
CREATE TABLE T1 (
|
|
a INTEGER,
|
|
b TEXT
|
|
);
|
|
CREATE TABLE T2 (
|
|
a INTEGER,
|
|
b TEXT
|
|
);
|
|
INSERT INTO T1 VALUES (x'c95d5259cda7cdd55eabeb6e','' || ('a')),(hex(NULL),'b');
|
|
INSERT INTO T2 VALUES (-(-(log(jsonb(-9223372036854775808)))),'c'),(1,'d');
|
|
SELECT T1.b,
|
|
(
|
|
SELECT GROUP_CONCAT(b,',')
|
|
FROM T2
|
|
WHERE NOT NOT (NOT NOT (T2.a=T1.a
|
|
) AS c
|
|
FROM T1)) ;
|
|
WITH RECURSIVE cte AS (SELECT b FROM T1 UNION ALL SELECT b FROM cte LIMIT 1) SELECT * FROM cte;
|
|
WITH cte AS (SELECT a, ROW_NUMBER() OVER (ORDER BY a) AS rn FROM T1) SELECT * FROM cte WHERE /**/ rn <= 5;
|
|
SELECT GROUP_CONCAT(b, '|') FROM T1;
|
|
CREATE TABLE "T" (
|
|
a INTEGER,
|
|
b TEXT,
|
|
c REAL
|
|
);
|
|
INSERT INTO T VALUES (1,'a',1.25), (2,'b',-3.5), (3,'c',0.0);
|
|
SELECT * FROM T WHERE c < 2.0 ORDER BY c;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T2_4542 BEFORE DELETE ON T2 FOR EACH ROW BEGIN SELECT RAISE(ROLLBACK, 'rb'); /**/ END;
|
|
DROP INDEX IF EXISTS T;
|
|
INSERT INTO T2 DEFAULT VALUES;
|
|
WITH cte AS (SELECT a, SUM(a) OVER (ORDER BY a) AS running FROM T1) SELECT * FROM cte;
|
|
ALTER TABLE T2 RENAME COLUMN b TO b_r3915;
|
|
SELECT * FROM T1 WHERE EXISTS (SELECT 1 FROM T1 WHERE b = NULL);
|
|
PRAGMA ignore_check_constraints = OFF;
|
|
WITH cte AS (SELECT CASE WHEN b > 0 THEN "pos" ELSE "neg" END AS sign FROM T1) SELECT * FROM cte;
|
|
DETACH DATABASE aux15;
|
|
DETACH DATABASE aux30;
|
|
VACUUM;
|
|
VACUUM;
|
|
ALTER TABLE T ADD COLUMN extra_6089 CHARACTER(20) DEFAULT CURRENT_TIMESTAMP;
|
|
INSERT INTO T VALUES (NULL, 1, 1) ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c;
|
|
RELEASE sp9092;
|
|
SELECT * FROM T AS a RIGHT OUTER JOIN T AS b ON a.rowid = b.rowid;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T_886 AFTER UPDATE OF c ON T FOR EACH ROW BEGIN SELECT RAISE(IGNORE); END;
|
|
|
|
SELECT COUNT(*) FROM T;
|
|
SELECT MIN(b) FROM T1;
|
|
SELECT COUNT(b) FILTER (WHERE b IS NOT NULL) OVER (ORDER BY b RANGE BETWEEN CURRENT ROW OR UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T2;
|
|
|
|
SELECT COUNT(*) FROM T;
|
|
DELETE FROM T WHERE a > (SELECT AVG(a) FROM T);
|
|
INSERT INTO T2 VALUES (1, 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b;
|
|
WITH cte AS (SELECT a FROM T1) SELECT * FROM cte WHERE a IS NOT NULL;
|
|
CREATE TEMPORARY VIEW IF NOT EXISTS v_T1_4584 AS SELECT a FROM T1;
|
|
SELECT AVG(a) FROM T1;
|
|
INSERT INTO T VALUES (NULL, NULL, NULL);
|
|
REINDEX T;
|
|
SELECT NTH_VALUE(a, a) OVER (ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T2;
|
|
ALTER TABLE T1 RENAME COLUMN b TO b_r3416;
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_T2_8492 ON T2(lower(b)) WHERE b IS NOT NULL;
|
|
DELETE FROM T1 WHERE 1;
|
|
DELETE FROM T WHERE 1;
|
|
WITH cte AS (SELECT NULL AS x) SELECT * FROM cte;
|
|
CREATE INDEX IF NOT EXISTS idx_T_2240 ON T(lower(b)) WHERE b IS NOT NULL;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T2_5034 AFTER UPDATE ON T2 BEGIN INSERT INTO T2(a) VALUES (NULL); END;
|
|
SELECT RANK() OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE TIES) FROM T;
|
|
CREATE TEMP VIEW IF NOT EXISTS v_T2_1968 AS SELECT b FROM T2;
|
|
CREATE TRIGGER IF NOT EXISTS trg_T2_1748 AFTER DELETE ON T2 BEGIN SELECT RAISE(FAIL, 'no'); END;
|
|
REINDEX T;
|
|
UPDATE T2 SET a = json_object('k', a) WHERE a BETWEEN 0 AND 100;
|
|
SELECT * FROM T2;
|
|
ALTER TABLE T1 DROP COLUMN a;
|
|
```
|
|
|
|
## Actual output
|
|
|
|
```sql
|
|
SQLite version 3.39.0 2022-05-10 23:28:12
|
|
Enter ".help" for usage hints.
|
|
sqlite> sqlite> sqlite> sqlite> echo: off
|
|
eqp: off
|
|
explain: auto
|
|
headers: off
|
|
mode: list
|
|
nullvalue: ""
|
|
output: stdout
|
|
colseparator: ">_<"
|
|
rowseparator: "\n"
|
|
stats: off
|
|
width:
|
|
filename: :memory:
|
|
sqlite> sqlite> sqlite> sqlite>
|
|
```
|
|
|
|
## Expectation
|
|
|
|
```sql
|
|
SQLite version 3.51.1 2025-11-28 17:28:25
|
|
Enter ".help" for usage hints.
|
|
sqlite> sqlite> sqlite> sqlite> echo: off
|
|
eqp: off
|
|
explain: auto
|
|
headers: off
|
|
mode: list
|
|
nullvalue: ""
|
|
output: stdout
|
|
colseparator: ">_<"
|
|
rowseparator: "\n"
|
|
stats: off
|
|
width:
|
|
filename: :memory:
|
|
sqlite> sqlite> sqlite> sqlite>
|
|
```
|
|
|
|
## Flag
|
|
|
|
```
|
|
-interactive
|
|
```
|
|
|