mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-31 13:54:27 +01:00
Add some more regression tcl tests for renaming table foreign key checks
This commit is contained in:
@@ -238,3 +238,64 @@ do_execsql_test_on_specific_db {:memory:} alter-table-rename-pk-and-fk {
|
||||
} {
|
||||
"CREATE TABLE child (id INTEGER PRIMARY KEY, parent_ref INTEGER, FOREIGN KEY (id) REFERENCES parent (pid), FOREIGN KEY (parent_ref) REFERENCES parent (pid))"
|
||||
}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} rename-self-1 {
|
||||
PRAGMA foreign_keys = ON;
|
||||
CREATE TABLE s1(id INTEGER PRIMARY KEY, parent INTEGER,
|
||||
FOREIGN KEY(parent) REFERENCES s1(id));
|
||||
INSERT INTO s1 VALUES (1,NULL);
|
||||
INSERT INTO s1 VALUES (2,1);
|
||||
ALTER TABLE s1 RENAME TO s1_new;
|
||||
SELECT name, tbl_name, sql LIKE '%REFERENCES s1_new%' FROM sqlite_schema WHERE type='table' AND name='s1_new';
|
||||
} {s1_new|s1_new|1}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} rename-self-2-composite {
|
||||
PRAGMA foreign_keys=ON;
|
||||
CREATE TABLE sc(id INTEGER, vr INTEGER, parent_id INTEGER, parent_vr INTEGER,
|
||||
PRIMARY KEY(id,vr),
|
||||
FOREIGN KEY(parent_id, parent_vr) REFERENCES sc(id,vr));
|
||||
INSERT INTO sc VALUES(1,1,NULL,NULL);
|
||||
INSERT INTO sc VALUES(2,1,1,1);
|
||||
|
||||
ALTER TABLE sc RENAME TO sc_new;
|
||||
|
||||
SELECT sql FROM sqlite_schema WHERE type='table' AND name='sc_new';
|
||||
} {{CREATE TABLE sc_new (id INTEGER, vr INTEGER, parent_id INTEGER, parent_vr INTEGER, PRIMARY KEY (id, vr), FOREIGN KEY (parent_id, parent_vr) REFERENCES sc_new (id, vr))}}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} rename-parent-1 {
|
||||
PRAGMA foreign_keys=ON;
|
||||
CREATE TABLE p(id INTEGER PRIMARY KEY);
|
||||
CREATE TABLE c(id INTEGER PRIMARY KEY, pid INTEGER,
|
||||
FOREIGN KEY(pid) REFERENCES p(id));
|
||||
INSERT INTO p VALUES(1);
|
||||
INSERT INTO c VALUES(10,1);
|
||||
|
||||
ALTER TABLE p RENAME TO p_new;
|
||||
INSERT INTO p_new VALUES(2);
|
||||
INSERT INTO c VALUES(20,2);
|
||||
SELECT c.id, c.pid FROM c JOIN p_new ON p_new.id=c.pid ORDER BY c.id;
|
||||
} {10|1
|
||||
20|2}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} rename-parent-2-inline {
|
||||
PRAGMA foreign_keys=ON;
|
||||
CREATE TABLE p2(id INTEGER PRIMARY KEY);
|
||||
CREATE TABLE c2(id INTEGER PRIMARY KEY, pid INTEGER REFERENCES p2(id));
|
||||
ALTER TABLE p2 RENAME TO p2_new;
|
||||
|
||||
-- child create SQL must have p2_new
|
||||
SELECT sql FROM sqlite_schema WHERE type='table' AND name='c2';
|
||||
} {{CREATE TABLE c2 (id INTEGER PRIMARY KEY, pid INTEGER REFERENCES p2_new (id))}}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} rename-parent-3-composite {
|
||||
PRAGMA foreign_keys=ON;
|
||||
CREATE TABLE p3(a INTEGER, b INTEGER, PRIMARY KEY(a,b));
|
||||
CREATE TABLE c3(x INTEGER PRIMARY KEY, fa INTEGER, fb INTEGER,
|
||||
FOREIGN KEY(fa,fb) REFERENCES p3(a,b));
|
||||
INSERT INTO p3 VALUES(1,1);
|
||||
INSERT INTO c3 VALUES(1,1,1);
|
||||
|
||||
ALTER TABLE p3 RENAME TO p3_new;
|
||||
SELECT sql FROM sqlite_schema WHERE type='table' AND name='c3';
|
||||
} {{CREATE TABLE c3 (x INTEGER PRIMARY KEY, fa INTEGER, fb INTEGER, FOREIGN KEY (fa, fb) REFERENCES p3_new (a, b))}}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user