This commit is contained in:
2026-06-24 13:47:14 +02:00
commit fd930e15cb
2377 changed files with 1213931 additions and 0 deletions
@@ -0,0 +1,377 @@
## 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
.parameter
CREATE TABLE T (
a INTEGER,
b TEXT,
c REAL,
d REAL
);
-- .clone
INSERT INTO T VALUES ((if(NULL, 0) + 1),'' || ('a'),40.5,-70.0), (2,'b',-10.25,20.5), (3,'c',9e999,-9e999);
SELECT b FROM T WHERE NOT NOT (NOT ABS(c) > 5 AND ABS(d) > 5) ;
PRAGMA optimize;
PRAGMA read_uncommitted = ON;
BEGIN IMMEDIATE;
.quit
.echo on
BEGIN IMMEDIATE TRANSACTION;
CREATE TABLE T (
a INTEGER,
b TEXT,
c INTEGER
);
INSERT INTO T VALUES ((strftime(('%s' || ''), unixepoch(x'd2778de55190649f19')) * (atan2(printf('%d', '+'), unlikely(-(-(0)))) + 1)),'a',NULL), (2,'b',1), (3,'c',2);
WITH RECURSIVE d(a,b,c,e) AS (
SELECT *,1 FROM T WHERE NOT NOT (c IS NULL
UNION ALL
SELECT T.a,T.b,T.c,d.e+1
FROM T JOIN /* PRAGMA query_only = OFF) ; */ d ON T.c=d.a
)
SELECT * FROM d;
ROLLBACK;
SELECT /**/ COUNT(*) FROM T;
ANALYZE;
SELECT MAX(b) FROM T;
CREATE TABLE T (
a INTEGER,
b REAL
);
INSERT INTO T VALUES (1,1.5), (2,-2.5), (3,0.0);
CREATE INDEX c
ON T(b);
SELECT * FROM T WHERE b >= -2.5 AND b < 2.0;
INSERT INTO T SELECT * FROM T;
INSERT INTO T DEFAULT VALUES;
ROLLBACK;
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
SELECT * FROM T AS a LEFT JOIN T AS b ON a.rowid = b.rowid;
SELECT * FROM T AS a INNER JOIN T AS b ON a.rowid = b.rowid;
INSERT INTO T DEFAULT VALUES;
SELECT NTH_VALUE(a, -1) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T;
INSERT INTO T SELECT * FROM T;
SELECT RANK() OVER (ORDER BY c ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE GROUP) FROM T;
ALTER TABLE T DROP COLUMN c;
SELECT * FROM T;
SELECT * FROM T;
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;
BEGIN IMMEDIATE;
.quit
.echo on
BEGIN IMMEDIATE TRANSACTION;
CREATE TABLE T (
a INTEGER,
b TEXT,
c INTEGER
);
INSERT INTO T VALUES ((strftime('%s', unixepoch(1)) * 1),'a',NULL), (2,'b',1), (3,'c',2);
WITH RECURSIVE d(a,b,c,e) AS (
SELECT *,1 FROM T WHERE c IS NULL
UNION ALL
SELECT T.a,T.b,T.c,d.e+1
FROM T JOIN /* PRAGMA query_only = OFF; */ d ON T.c=d.a
)
SELECT * FROM d;
ROLLBACK;
SELECT /**/ COUNT(*) FROM T;
ANALYZE;
SELECT MAX(b) FROM T;
INSERT INTO T SELECT * FROM T;
INSERT INTO T DEFAULT VALUES;
ROLLBACK;
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
SELECT * FROM T AS a LEFT JOIN T AS b ON a.rowid = b.rowid;
SELECT * FROM T AS a INNER JOIN T AS b ON a.rowid = b.rowid;
INSERT INTO T DEFAULT VALUES;
SELECT NTH_VALUE(a, -1) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T;
INSERT INTO T SELECT * FROM T;
SELECT RANK() OVER (ORDER BY c ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE GROUP) FROM T;
ALTER TABLE T DROP COLUMN c;
SELECT * FROM T;
SELECT * FROM T;
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;
BEGIN IMMEDIATE;
.quit
.echo on
BEGIN IMMEDIATE TRANSACTION;
CREATE TABLE T (
a INTEGER,
b TEXT,
c INTEGER
);
INSERT INTO T VALUES ((strftime('%s', unixepoch(1)) * 1),'a',NULL), (2,'b',1), (3,'c',2);
WITH RECURSIVE d(a,b,c,e) AS (
SELECT *,1 FROM T WHERE c IS NULL
UNION ALL
SELECT T.a,T.b,T.c,d.e+1
FROM T JOIN /* PRAGMA query_only = OFF; */ d ON T.c=d.a
)
SELECT * FROM d;
ROLLBACK;
SELECT /**/ COUNT(*) FROM T;
ANALYZE;
SELECT MAX(b) FROM T;
INSERT INTO T SELECT * FROM T;
INSERT INTO T DEFAULT VALUES;
ROLLBACK;
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
SELECT * FROM T AS a LEFT JOIN T AS b ON a.rowid = b.rowid;
SELECT * FROM T AS a INNER JOIN T AS b ON a.rowid = b.rowid;
INSERT INTO T DEFAULT VALUES;
SELECT NTH_VALUE(a, -1) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T;
INSERT INTO T SELECT * FROM T;
SELECT RANK() OVER (ORDER BY c ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE GROUP) FROM T;
ALTER TABLE T DROP COLUMN c;
SELECT * FROM T;
SELECT * FROM T;
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;
BEGIN IMMEDIATE;
.quit
.echo on
BEGIN IMMEDIATE TRANSACTION;
CREATE TABLE T (
a INTEGER,
b TEXT,
c INTEGER
);
INSERT INTO T VALUES ((strftime('%s', unixepoch(1)) * 1),'a',NULL), (2,'b',1), (3,'c',2);
WITH RECURSIVE d(a,b,c,e) AS (
SELECT *,1 FROM T WHERE c IS NULL
UNION ALL
SELECT T.a,T.b,T.c,d.e+1
FROM T JOIN /* PRAGMA query_only = OFF; */ d ON T.c=d.a
)
SELECT * FROM d;
ROLLBACK;
SELECT /**/ COUNT(*) FROM T;
ANALYZE;
SELECT MAX(b) FROM T;
INSERT INTO T WITH _m AS MATERIALIZED (SELECT * FROM T2) SELECT * FROM T;
CREATE TABLE T1 (
a INTEGER,
b REAL
);
CREATE TABLE _m (
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;
INSERT INTO T DEFAULT VALUES;
ROLLBACK;
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
SELECT * FROM T AS a LEFT JOIN T AS b ON a.rowid = b.rowid;
SELECT * FROM T AS a INNER JOIN T AS b ON a.rowid = b.rowid;
INSERT INTO T DEFAULT VALUES;
SELECT NTH_VALUE(a, -1) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T;
INSERT INTO T SELECT * FROM T;
SELECT RANK() OVER (ORDER BY c ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE GROUP) FROM T;
ALTER TABLE T DROP COLUMN c;
SELECT * FROM T;
SELECT * FROM T;
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;
BEGIN IMMEDIATE;
.quit
.echo on
BEGIN IMMEDIATE TRANSACTION;
CREATE TABLE T (
a INTEGER,
b TEXT,
c INTEGER
);
INSERT INTO T VALUES ((strftime('%s', unixepoch(1)) * 1),'a',NULL), (2,'b',1), (3,'c',2);
WITH RECURSIVE d(a,b,c,e) AS (
SELECT *,1 FROM T WHERE c IS NULL
UNION ALL
SELECT T.a,T.b,T.c,d.e+1
FROM T JOIN /* PRAGMA query_only = OFF; */ d ON T.c=d.a
)
SELECT * FROM d;
ROLLBACK;
SELECT /**/ COUNT(*) FROM T;
ANALYZE;
SELECT MAX(b) FROM T;
INSERT INTO T SELECT * FROM T;
INSERT INTO T DEFAULT VALUES;
ROLLBACK;
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
SELECT * FROM T AS a LEFT JOIN T AS b ON a.rowid = b.rowid;
SELECT * FROM T AS a INNER JOIN T AS b ON a.rowid = b.rowid;
INSERT INTO T DEFAULT VALUES;
SELECT NTH_VALUE(a, -1) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T;
INSERT INTO T SELECT * FROM T;
SELECT RANK() OVER (ORDER BY c ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE GROUP) FROM T;
ALTER TABLE T DROP COLUMN c;
SELECT * FROM T;
SELECT * FROM T;
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;
BEGIN /**/ IMMEDIATE;
.quit
.echo on
BEGIN IMMEDIATE TRANSACTION;
CREATE TABLE T (
a INTEGER,
b TEXT,
c INTEGER
);
INSERT INTO T VALUES ((strftime('%s', unixepoch(1)) * 1),'a',NULL), (2,'b',1), (3,'c',2);
WITH RECURSIVE d(a,b,c,e) AS (
SELECT *,1 FROM T WHERE c IS NULL
UNION ALL
SELECT T.a,T.b,T.c,d.e+1
FROM T JOIN /* PRAGMA query_only = OFF; */ d ON T.c=d.a
)
SELECT * FROM d;
ROLLBACK;
SELECT /**/ COUNT(*) FROM T;
ANALYZE;
SELECT MAX(b) FROM T;
INSERT INTO T SELECT * FROM T;
INSERT INTO T DEFAULT VALUES;
ROLLBACK;
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
SELECT * FROM T AS a LEFT JOIN T AS b ON a.rowid = b.rowid;
SELECT * FROM T AS a INNER JOIN T AS b ON a.rowid = b.rowid;
INSERT INTO T DEFAULT VALUES;
SELECT NTH_VALUE(a, -1) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T;
INSERT INTO T SELECT * FROM T;
SELECT RANK() OVER (ORDER BY c ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE GROUP) FROM T;
ALTER TABLE T DROP COLUMN c;
SELECT * FROM T;
SELECT * FROM T;
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;
BEGIN IMMEDIATE;
.quit
.echo on
BEGIN IMMEDIATE TRANSACTION;
CREATE TABLE T (
a INTEGER,
b TEXT,
c INTEGER
);
INSERT INTO T VALUES ((strftime('%s', unixepoch(1)) * 1),'a',NULL), (2,'b',1), (3,'c',2);
WITH RECURSIVE d(a,b,c,e) AS (
SELECT *,1 FROM T WHERE c IS NULL
UNION ALL
SELECT T.a,T.b,T.c,d.e+1
FROM T JOIN /* PRAGMA query_only = OFF; */ d ON T.c=d.a
)
SELECT * FROM d;
ROLLBACK;
SELECT /**/ COUNT(*) FROM T;
ANALYZE;
SELECT MAX(b) FROM T;
INSERT INTO T SELECT * FROM T;
INSERT INTO T DEFAULT VALUES;
ROLLBACK;
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
SELECT * FROM T AS a LEFT JOIN T AS b ON a.rowid = b.rowid;
SELECT * FROM T AS a INNER JOIN T AS b ON a.rowid = b.rowid;
INSERT INTO T DEFAULT VALUES;
SELECT NTH_VALUE(a, -1) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T;
INSERT INTO T SELECT * FROM T;
SELECT RANK() OVER (ORDER BY c ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE GROUP) FROM T;
ALTER TABLE T DROP COLUMN c;
SELECT * FROM T;
SELECT * FROM T;
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;
BEGIN IMMEDIATE;
.quit
.echo on
BEGIN IMMEDIATE TRANSACTION;
CREATE TABLE T (
a INTEGER,
b TEXT,
c INTEGER
);
INSERT INTO T VALUES ((strftime('%s', unixepoch(1)) * 1),'a',NULL), (2,'b',1), (3,'c',2);
WITH RECURSIVE d(a,b,c,e) AS (
SELECT *,1 FROM T WHERE c IS NULL
UNION ALL
SELECT T.a,T.b,T.c,d.e+1
FROM T JOIN /* PRAGMA query_only = OFF; */ d ON T.c=d.a
)
SELECT * FROM d;
ROLLBACK;
SELECT /**/ COUNT(*) FROM T;
ANALYZE;
SELECT MAX(b) FROM T;
INSERT INTO T SELECT * FROM T;
INSERT INTO T DEFAULT VALUES;
ROLLBACK;
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
SELECT * FROM T AS a LEFT JOIN T AS b ON a.rowid = b.rowid;
SELECT * FROM T AS a INNER JOIN T AS b ON a.rowid = b.rowid;
INSERT INTO T DEFAULT VALUES;
SELECT NTH_VALUE(a, -1) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE NO OTHERS) FROM T;
INSERT INTO T SELECT * FROM T;
SELECT RANK() OVER (ORDER BY c ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE GROUP) FROM T;
ALTER TABLE T DROP COLUMN c;
SELECT * FROM T;
SELECT * FROM T;
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;
SELECT AVG(c) OVER (ORDER BY c ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM T;
DELETE FROM T WHERE 0;
ALTER TABLE T ADD COLUMN extra_9438 DECIMAL(10,5) COLLATE RTRIM;
ALTER TABLE T RENAME COLUMN c TO c_r5491;
REINDEX T;
PRAGMA vdbe_debug = YES;
INSERT INTO T DEFAULT VALUES;
SELECT * FROM T AS a FULL OUTER JOIN T AS b ON a.rowid = b.rowid;
VACUUM main;
ALTER TABLE T RENAME TO T_r5026;
PRAGMA writable_schema = RESET;
CREATE TRIGGER IF NOT EXISTS trg_T_944 BEFORE INSERT ON T FOR EACH ROW BEGIN INSERT INTO T(a) VALUES (NULL); END;
SELECT SUM(c) FROM T;
PRAGMA defer_foreign_keys = OFF;
CREATE INDEX IF NOT EXISTS idx_T_2801 ON T(a) WHERE a > 0;
DROP TRIGGER IF EXISTS T;
INSERT OR ABORT INTO T VALUES (2, 'x', NULL);
UPDATE T SET b = 'x' WHERE 1 RETURNING *;
SELECT * FROM T NATURAL JOIN T;
SELECT COUNT(*) FILTER (WHERE c IS NOT NULL), SUM(rowid) FILTER (WHERE c > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(c) FILTER (WHERE c > 0 AND c < 100), COUNT(*) FILTER (WHERE typeof(c) = "text") FROM T;
SELECT * FROM T AS a INNER JOIN T AS b ON a.rowid = b.rowid;
ANALYZE;
SELECT MAX(a) FROM T;
REINDEX T;
SELECT * FROM T AS a JOIN T AS b ON a.rowid = b.rowid;
WITH cte(a, b) AS (SELECT b, b FROM T2) SELECT a, b FROM cte;
SELECT * FROM T1;
SELECT NTILE(1) OVER (ORDER BY b RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING) FROM _m;
ALTER TABLE _m RENAME COLUMN a TO a_r7255;
WITH RECURSIVE tree(id, parent, depth) AS (VALUES(1, NULL, 0) UNION ALL SELECT id+1, id, depth+1 FROM tree WHERE depth<92) SELECT * FROM tree;
ALTER TABLE _m RENAME COLUMN b TO b_r7607;
```
## Actual output
```sql
.parameter CMD ... Manage SQL parameter bindings
clear Erase all bindings
init Initialize the TEMP table that holds bindings
list List the current parameter bindings
set PARAMETER VALUE Given SQL parameter PARAMETER a value of VALUE
PARAMETER should start with one of: $ : @ ?
unset PARAMETER Remove PARAMETER from the binding table
```
## Expectation
```sql
```
## Flag
```
```