239 lines
7.3 KiB
Markdown
239 lines
7.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
|
|
.changes on
|
|
BEGIN IMMEDIATE;
|
|
CREATE VIRTUAL TABLE t0 USING fts4("x", "y", "z");
|
|
-- PRAGMA empty_result_callbacks = ON;
|
|
|
|
DROP TABLE t0;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE ('' || ('') || '') || (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a TEXT,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(NULL) * CAST(1 AS VARCHAR(255))))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHErE NOT NOT (NOT NOT NOT (+b >= -2.5 aND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE '' || (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(9223372036854775807) * 1))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHERE NOT NOT (NOT NOT NOT (+b >= -2.5 AND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE '' || (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(9223372036854775807) * 1))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHERE NOT NOT (NOT NOT NOT (+b >= -2.5 AND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE '' || (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(9223372036854775807) * 1))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHERE NOT NOT (NOT NOT NOT (+b >= -2.5 AND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE '' || (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(9223372036854775807) * 1))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHERE NOT NOT (NOT NOT NOT (+b >= -2.5 AND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE '' || /**/ (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(9223372036854775807) * 1))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHERE NOT NOT (NOT NOT NOT (+b >= -2.5 AND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE '' || (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(9223372036854775807) * 1))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHERE NOT NOT (NOT NOT NOT (+b >= -2.5 AND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE '' || (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(9223372036854775807) * 1))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHERE NOT NOT (NOT NOT NOT (+b >= -2.5 AND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE '' || (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(9223372036854775807) * 1))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHERE NOT NOT (NOT NOT NOT (+b >= -2.5 AND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
.explain auto
|
|
.quit
|
|
ATTACH DATABASE '' || (':memory:') AS aux13;
|
|
((CREATE)) TABLE T (
|
|
a INTEGER,
|
|
b REAL
|
|
);
|
|
INSERT INTO T VALUES (-(-(length(x'f6e36bb00a'))),(timediff(NULL, (unixepoch(9223372036854775807) * 1))timediff(NULL, NULL) ->> '$[0]' * 1)), (2,-2.5), (3,0.0);
|
|
CREATE INDEX c
|
|
ON T(b);
|
|
SELECT * FROM T WHERE NOT NOT (NOT NOT NOT (+b >= -2.5 AND b < 2.0)) ;
|
|
DELETE FROM T WHERE b > (SELECT AVG(b) FROM T);
|
|
SELECT * FROM T WHERE b IN (SELECT b FROM T WHERE 1/0 = 0);SELECT * FROM T WHERE b IN (SELECT b FROM T LIMIT -1);
|
|
DETACH DATABASE aux13;
|
|
PRAGMA short_column_names = TRUE;
|
|
VACUUM;
|
|
|
|
COMMIT;
|
|
VACUUM;
|
|
VACUUM;
|
|
```
|
|
|
|
## 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
|
|
changes: 0 total_changes: 0
|
|
changes: 0 total_changes: 0
|
|
changes: 0 total_changes: 0
|
|
```
|
|
|
|
## 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
|
|
changes: 0 total_changes: 0
|
|
changes: 0 total_changes: 0
|
|
changes: 0 total_changes: 0
|
|
```
|
|
|
|
## Flag
|
|
|
|
```
|
|
|
|
```
|
|
|