271 lines
5.9 KiB
Markdown
271 lines
5.9 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
|
|
SAVEPOINT sp1241;
|
|
PRAGMA pragma_list;
|
|
CREATE TABLE T (
|
|
A VARCHAR(15) PRIMARY KEY,
|
|
B VARCHAR(30) NOT NULL,
|
|
C NCHAR(55) UNIQUE
|
|
);
|
|
INSERT INTO T VALUES ('' || ('a'), 'x', -9223372036854775808);
|
|
INSERT INTO T VALUES ('b', 'y', -1000000);
|
|
INSERT INTO T VALUES ('c', 'y', 0);
|
|
INSERT INTO T VALUES ('d', 'y', 42);
|
|
INSERT INTO T VALUES ('e', 'x', 9223372036854775807);
|
|
INSERT INTO T VALUES ('f', 'z', 2147483648);
|
|
SELECT * FROM T WHERE +C <> 0 ORDER BY C DESC;
|
|
ATTACH DATABASE ':memory:' AS aux2;
|
|
CREATE TABLE t1(a INT PRIMARY KEY, b TEXT, c INT, d INT);
|
|
INSERT INTO t1 VALUES (1, 'Wernher', 10, 100);
|
|
INSERT INTO t1 VALUES (2, 'von', 20, 200);
|
|
INSERT INTO t1 VALUES (3, 'Braun', 30, 300);
|
|
CREATE INDEX t1bc ON t1(b, c);
|
|
PRAGMA writable_schema = ON;
|
|
.imposter t1bc t2
|
|
|
|
SELECT * FROM t2;
|
|
SELECT b, c FROM t1 ORDER BY b, c;
|
|
.quit
|
|
PRAGMA temp_store = '0';
|
|
CREATE TABLE T (
|
|
a TEXT,
|
|
b TEXT,
|
|
c REAL
|
|
);
|
|
INSERT INTO T VALUES ('a','b',1.0), ('a','c',-1.0), ('b','d',0.0);
|
|
SELECT
|
|
COALESCE(a,'e') AS d,
|
|
COALESCE(b,'f') AS e,
|
|
SUM(c) AS f
|
|
FROM T
|
|
GROUP BY a,b;
|
|
PRAGMA empty_result_callbacks = FALSE;
|
|
PRAGMA default_cache_size = -1000;
|
|
.output
|
|
CREATE TABLE t1(a INTEGER, b TEXT, c BLOB, CHECK( coalesce(b,c) ));
|
|
INSERT INTO t1 VALUES(1, 2, 3);
|
|
ALTER TABLE t1 RENAME COLUMN b TO d;
|
|
CREATE TABLE t3(a, b, c, d, e, f, g, h, i, j, k, l, m, FOREIGN KEY (b, c, d, e, f, g, h, i, j, k, l, m) REFERENCES `t4`);
|
|
CREATE TABLE t4(x, y, z);
|
|
INSERT INTO t4 VALUES(3, 2, 1);
|
|
SELECT STRING_AGG(c) FROM t1;
|
|
ALTER TABLE t4 RENAME TO t4_r7558;
|
|
ALTER TABLE t1 ADD COLUMN extra_4840 INT NOT NULL DEFAULT 0;
|
|
INSERT INTO t3 VALUES (NULL, 'x', 1, 1, 1, 'x', 'x', 'x', NULL, 'x', 1, 'x', 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c;
|
|
DETACH DATABASE aux2;
|
|
CREATE TABLE T (
|
|
a INTEGER,
|
|
b TEXT,
|
|
c REAL
|
|
);
|
|
INSERT INTO T VALUES (1,'a',3.14), (1,'b',-7.75), (2,'c',-9e999);
|
|
SELECT b,a,c,
|
|
RANK() OVER (PARTITION BY a ORDER BY c DESC) AS d FROM T;
|
|
UPDATE T SET c = NULL WHERE c IS NOT NULL;
|
|
ALTER TABLE t1 DROP COLUMN a;
|
|
PRAGMA cache_size = -2000;
|
|
SELECT COUNT(*) FILTER (WHERE x IS NOT NULL), SUM(rowid) FILTER (WHERE x > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(x) FILTER (WHERE x > 0 OR x < 100), COUNT(*) FILTER (WHERE typeof(x) = "text") FROM t4;
|
|
INSERT INTO t1 DEFAULT VALUES;
|
|
INSERT INTO t1 DEFAULT VALUES;
|
|
SELECT COUNT(*) FILTER (WHERE x IS NOT NULL), SUM(rowid) FILTER (WHERE x > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(x) FILTER (WHERE x > 0 AND x < 100), COUNT(*) FILTER (WHERE typeof(x) = "text") FROM t4;
|
|
|
|
SELECT COUNT(*) FROM t1;
|
|
DROP TRIGGER IF EXISTS t4;
|
|
DROP TRIGGER IF EXISTS t4;
|
|
PRAGMA vdbe_listing = 0;
|
|
INSERT OR REPLACE INTO t4 VALUES ('x', 0, 0);
|
|
SELECT * FROM T;
|
|
ALTER TABLE t1 RENAME TO t1_r8555;
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
WITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1) SELECT * FROM cnt;
|
|
ALTER TABLE T DROP COLUMN a;
|
|
REINDEX;
|
|
DELETE FROM T WHERE 0 RETURNING *;
|
|
CREATE TRIGGER IF NOT EXISTS trg_t4_5386 BEFORE INSERT ON t4 BEGIN SELECT RAISE(ABORT, 'abort'); END;
|
|
ROLLBACK TRANSACTION TO SAVEPOINT sp1241;
|
|
RELEASE SAVEPOINT sp1241;
|
|
ALTER TABLE t3 RENAME TO t3_r7522;
|
|
DROP TABLE IF EXISTS t1;
|
|
INSERT INTO T VALUES (NULL, NULL, NULL);
|
|
```
|
|
|
|
## Actual output
|
|
|
|
```sql
|
|
analysis_limit
|
|
application_id
|
|
auto_vacuum
|
|
automatic_index
|
|
busy_timeout
|
|
cache_size
|
|
cache_spill
|
|
case_sensitive_like
|
|
cell_size_check
|
|
checkpoint_fullfsync
|
|
collation_list
|
|
compile_options
|
|
count_changes
|
|
data_version
|
|
database_list
|
|
default_cache_size
|
|
defer_foreign_keys
|
|
empty_result_callbacks
|
|
encoding
|
|
foreign_key_check
|
|
foreign_key_list
|
|
foreign_keys
|
|
freelist_count
|
|
full_column_names
|
|
fullfsync
|
|
function_list
|
|
hard_heap_limit
|
|
ignore_check_constraints
|
|
incremental_vacuum
|
|
index_info
|
|
index_list
|
|
index_xinfo
|
|
integrity_check
|
|
journal_mode
|
|
journal_size_limit
|
|
legacy_alter_table
|
|
locking_mode
|
|
max_page_count
|
|
mmap_size
|
|
module_list
|
|
optimize
|
|
page_count
|
|
page_size
|
|
pragma_list
|
|
query_only
|
|
quick_check
|
|
read_uncommitted
|
|
recursive_triggers
|
|
reverse_unordered_selects
|
|
schema_version
|
|
secure_delete
|
|
short_column_names
|
|
shrink_memory
|
|
soft_heap_limit
|
|
synchronous
|
|
table_info
|
|
table_list
|
|
table_xinfo
|
|
temp_store
|
|
temp_store_directory
|
|
threads
|
|
trusted_schema
|
|
user_version
|
|
wal_autocheckpoint
|
|
wal_checkpoint
|
|
writable_schema
|
|
e|x|9223372036854775807
|
|
d|y|42
|
|
f|z|2147483648
|
|
c|y|0
|
|
a|x|-9223372036854775808
|
|
b|y|-1000000
|
|
CREATE TABLE "t2"("b","c","_ROWID_",PRIMARY KEY("b","c","_ROWID_"))WITHOUT ROWID;
|
|
WARNING: writing to an imposter table will corrupt the "t1bc" index!
|
|
Braun|30|3
|
|
Wernher|10|1
|
|
von|20|2
|
|
Braun|30
|
|
Wernher|10
|
|
von|20
|
|
```
|
|
|
|
## Expectation
|
|
|
|
```sql
|
|
analysis_limit
|
|
application_id
|
|
auto_vacuum
|
|
automatic_index
|
|
busy_timeout
|
|
cache_size
|
|
cache_spill
|
|
case_sensitive_like
|
|
cell_size_check
|
|
checkpoint_fullfsync
|
|
collation_list
|
|
compile_options
|
|
count_changes
|
|
data_version
|
|
database_list
|
|
default_cache_size
|
|
defer_foreign_keys
|
|
empty_result_callbacks
|
|
encoding
|
|
foreign_key_check
|
|
foreign_key_list
|
|
foreign_keys
|
|
freelist_count
|
|
full_column_names
|
|
fullfsync
|
|
function_list
|
|
hard_heap_limit
|
|
ignore_check_constraints
|
|
incremental_vacuum
|
|
index_info
|
|
index_list
|
|
index_xinfo
|
|
integrity_check
|
|
journal_mode
|
|
journal_size_limit
|
|
legacy_alter_table
|
|
locking_mode
|
|
max_page_count
|
|
mmap_size
|
|
module_list
|
|
optimize
|
|
page_count
|
|
page_size
|
|
pragma_list
|
|
query_only
|
|
quick_check
|
|
read_uncommitted
|
|
recursive_triggers
|
|
reverse_unordered_selects
|
|
schema_version
|
|
secure_delete
|
|
short_column_names
|
|
shrink_memory
|
|
soft_heap_limit
|
|
synchronous
|
|
table_info
|
|
table_list
|
|
table_xinfo
|
|
temp_store
|
|
temp_store_directory
|
|
threads
|
|
trusted_schema
|
|
user_version
|
|
wal_autocheckpoint
|
|
wal_checkpoint
|
|
writable_schema
|
|
e|x|9223372036854775807
|
|
d|y|42
|
|
f|z|2147483648
|
|
c|y|0
|
|
a|x|-9223372036854775808
|
|
b|y|-1000000
|
|
CREATE TABLE "t2"("b","c","_ROWID_",PRIMARY KEY("b","c","_ROWID_"))WITHOUT ROWID;
|
|
Braun|30|3
|
|
Wernher|10|1
|
|
von|20|2
|
|
Braun|30
|
|
Wernher|10
|
|
von|20
|
|
```
|
|
|
|
## Flag
|
|
|
|
```
|
|
|
|
```
|
|
|