## Summary **No review yet** ## Minimized query ```sql .excel .print https://yewtu.be/watch?v=dQw4w9WgXcQ PRAGMA legacy_alter_table = YES; SAVEPOINT sp3593; SAVEPOINT sp1295; -- PRAGMA query_only = TRUE; CREATE TABLE T ( a TEXT, b TEXT, c REAL ); INSERT INTO T VALUES (('' || '') || ('a'),'b',x'7867e8af9497c5a82a529f0a962940'), ('a','c',NULL), ('b','d',-CAST(CAST(3.141592653589793 AS DECIMAL(10,5)) AS CHARINT)); CREATE TABLE t1(a INTEGER 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 SELECT a,b,c, RANK() OVER (PARTITION BY a ORDER BY c DESC) AS d FROM T; INSERT INTO T DEFAULT VALUES; ROLLBACK TO sp1295; RELEASE sp1295; INSERT INTO T VALUES (1, 1, 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c; ALTER TABLE T DROP COLUMN a; DROP TABLE IF EXISTS T; SELECT * FROM (SELECT * FROM t1) AS t1 JOIN (SELECT * FROM t1) AS t2 ON t1.d = t2.d; SELECT GROUP_CONCAT(c) FROM t1; UPDATE T SET c = 'x' WHERE c IS NOT NULL; WITH cte AS (SELECT NULL AS x) SELECT COALESCE(x, 0) FROM cte; ALTER TABLE t1 DROP COLUMN a; SAVEPOINT sp1295; CREATE TABLE T ( a TEXT, b TEXT, c REAL ); INSERT INTO T VALUES ('a','b',x'7867e8af9497c5a82a529f0a962940'), ('a','c',NULL), ('b','d',-CAST(8.25 AS CHARINT)); CREATE TABLE t1(a INTEGER 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 SELECT a,b,c, RANK() OVER (PARTITION BY a ORDER BY c DESC) AS d FROM T; INSERT INTO T DEFAULT VALUES; ROLLBACK TO sp1295; RELEASE sp1295; INSERT INTO T VALUES (1, 1, 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c; ALTER TABLE T DROP COLUMN a; DROP TABLE IF EXISTS T; SELECT * FROM (SELECT * FROM t1) AS t1 JOIN (SELECT * FROM t1) AS t2 ON t1.d = t2.d; SELECT GROUP_CONCAT(c) FROM t1; UPDATE T SET c = 'x' WHERE c IS NOT NULL; WITH cte AS (SELECT NULL AS x) SELECT COALESCE(x, 0) FROM cte; ALTER TABLE t1 DROP COLUMN a; SAVEPOINT sp1295; CREATE TABLE T ( a TEXT, b TEXT, c REAL ); INSERT INTO T VALUES ('a','b',x'7867e8af9497c5a82a529f0a962940'), ('a','c',NULL), ('b','d',-CAST(8.25 AS CHARINT)); CREATE TABLE t1(a INTEGER 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 SELECT a,b,c, RANK() OVER (PARTITION BY a ORDER BY c DESC) AS d FROM T; INSERT INTO T DEFAULT VALUES; ROLLBACK TO sp1295; RELEASE sp1295; INSERT INTO T VALUES (1, 1, 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c; ALTER TABLE T DROP COLUMN a; DROP TABLE IF EXISTS T; SELECT * FROM (SELECT * FROM t1) AS t1 JOIN (SELECT * FROM t1) AS t2 ON t1.d = t2.d; SELECT GROUP_CONCAT(c) FROM t1; UPDATE T SET c = 'x' WHERE c IS NOT NULL; WITH cte AS (SELECT NULL AS x) SELECT COALESCE(x, 0) FROM cte; ALTER TABLE t1 DROP COLUMN a; SAVEPOINT sp1295; CREATE TABLE T ( a TEXT, b TEXT, c REAL ); INSERT INTO T VALUES ('a','b',x'7867e8af9497c5a82a529f0a962940'), ('a','c',NULL), ('b','d',-CAST(8.25 AS CHARINT)); CREATE TABLE t1(a INTEGER 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 SELECT a,b,c, RANK() OVER (PARTITION BY a ORDER BY c DESC) AS d FROM T; INSERT INTO T DEFAULT VALUES; ROLLBACK TO sp1295; RELEASE sp1295; INSERT INTO T VALUES (1, 1, 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c; ALTER TABLE T DROP COLUMN a; DROP TABLE IF EXISTS T; SELECT * FROM (SELECT * FROM t1) AS t1 JOIN (SELECT * FROM t1) AS t2 ON t1.d = t2.d; SELECT GROUP_CONCAT(c) FROM t1; UPDATE T SET c = 'x' WHERE c IS NOT NULL; WITH cte AS (SELECT NULL AS x) SELECT COALESCE(x, 0) FROM cte; ALTER TABLE t1 DROP COLUMN a; SAVEPOINT sp1295; CREATE TABLE T ( a TEXT, b TEXT, c REAL ); INSERT INTO T VALUES ('a','b',x'7867e8af9497c5a82a529f0a962940'), ('a','c',NULL), ('b','d',-CAST(8.25 AS CHARINT)); CREATE TABLE t1(a INTEGER 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 SELECT a,b,c, RANK() OVER (PARTITION BY a ORDER BY c DESC) AS d FROM T; INSERT INTO T DEFAULT VALUES; ROLLBACK TO sp1295; RELEASE sp1295; INSERT INTO T VALUES (1, 1, 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c; ALTER TABLE T DROP COLUMN a; DROP TABLE IF EXISTS T; SELECT * FROM (SELECT * FROM t1) AS t1 JOIN (SELECT * FROM t1) AS t2 ON t1.d = t2.d; SELECT GROUP_CONCAT(c) FROM t1; UPDATE T SET c = 'x' WHERE c IS NOT NULL; CREATE TABLE T ( a INTEGER, b REAL ); INSERT INTO T VALUES (1,1.5), (2,-7.25), (3,0.0); SELECT a,b FROM T WHERE a >= 2 ORDER BY b; WITH cte AS (SELECT NULL AS x) SELECT COALESCE(x, 0) FROM cte; ALTER TABLE t1 DROP COLUMN a; SAVEPOINT sp1295; CREATE TABLE T ( a TEXT, b TEXT, c REAL ); INSERT INTO T VALUES ('a','b',x'7867e8af9497c5a82a529f0a962940'), ('a','c',NULL), ('b','d',-CAST(8.25 AS CHARINT)); CREATE TABLE t1(a INTEGER 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 SELECT a,b,c, RANK() OVER (PARTITION BY a ORDER BY c DESC) AS d FROM T; INSERT INTO T DEFAULT VALUES; ROLLBACK TO sp1295; RELEASE sp1295; INSERT INTO T VALUES (1, 1, 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c; ALTER TABLE T DROP COLUMN a; DROP TABLE IF EXISTS T; SELECT * FROM (SELECT * FROM t1) AS t1 JOIN (SELECT * FROM t1) AS t2 ON t1.d = t2.d; SELECT GROUP_CONCAT(c) FROM t1; UPDATE T SET c = 'x' WHERE c IS NOT NULL; WITH cte AS (SELECT NULL AS x) SELECT COALESCE(x, 0) FROM cte; ALTER TABLE t1 DROP COLUMN a; SAVEPOINT sp1295; CREATE TABLE T ( a TEXT, b TEXT, c REAL ); INSERT INTO T VALUES ('a','b',x'7867e8af9497c5a82a529f0a962940'), ('a','c',NULL), ('b','d',-CAST(8.25 AS CHARINT)); CREATE TABLE t1(a INTEGER 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 SELECT a,b,c, RANK() OVER (PARTITION BY a ORDER BY c DESC) AS d FROM T; INSERT INTO T DEFAULT VALUES; ROLLBACK TO sp1295; RELEASE sp1295; INSERT INTO T VALUES (1, 1, 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c; ALTER TABLE T DROP COLUMN a; DROP TABLE IF EXISTS T; SELECT * FROM (SELECT * FROM t1) AS t1 JOIN (SELECT * FROM t1) AS t2 ON t1.d = t2.d; SELECT GROUP_CONCAT(c) FROM t1; UPDATE T SET c = 'x' WHERE c IS NOT NULL; WITH cte AS (SELECT NULL AS x) SELECT COALESCE(x, 0) FROM cte; ALTER TABLE t1 DROP COLUMN a; SELECT COUNT(*) FILTER (WHERE d IS NOT NULL), SUM(rowid) FILTER (WHERE d > 0), COUNT(*) FILTER (WHERE 1=0), COUNT(*) FILTER (WHERE 1=1), COUNT(*) FILTER (WHERE NULL), AVG(d) FILTER (WHERE d > 0 OR d < 100), COUNT(*) FILTER (WHERE typeof(d) = "text") FROM t1; INSERT INTO t1 VALUES ('x', NULL, 'x', 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b, c = excluded.c; SELECT STRING_AGG(b) FROM T; SELECT * FROM t1 AS a LEFT JOIN t1 AS b ON a.rowid = b.rowid; SELECT MIN(c) FILTER (WHERE c IS NOT NULL) OVER (PARTITION BY c ORDER BY c ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE TIES) FROM T; 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 OR REPLACE INTO T1 SELECT * FROM T2; SELECT * FROM T1; SELECT * FROM T2 WHERE a IN (SELECT a FROM T2); SELECT COUNT(*) FROM T1; VACUUM main; SELECT STRING_AGG(c) FROM T; 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; DROP TRIGGER IF EXISTS T2; CREATE INDEX IF NOT EXISTS idx_T_3562 ON T(lower(B)) WHERE B > 0; ROLLBACK TO sp3593; RELEASE sp3593; VACUUM; DELETE FROM T2 WHERE 0 RETURNING *; SELECT * FROM T1; ALTER TABLE T1 RENAME TO T1_r7393; PRAGMA trusted_schema = TRUE; PRAGMA full_column_names = ON; INSERT INTO T2 SELECT * FROM T2; INSERT INTO T2 VALUES ('x', 'x') ON CONFLICT(a) DO UPDATE SET a = excluded.a, b = excluded.b; UPDATE t1 SET c = CURRENT_TIMESTAMP WHERE c IS NOT NULL; SELECT * FROM T WHERE A < (SELECT AVG(A) FROM T); ``` ## Actual output ```sql 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 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 ``` ```