1674b8942Sdan# 2018 September 20 2674b8942Sdan# 3674b8942Sdan# The author disclaims copyright to this source code. In place of 4674b8942Sdan# a legal notice, here is a blessing: 5674b8942Sdan# 6674b8942Sdan# May you do good and not evil. 7674b8942Sdan# May you find forgiveness for yourself and forgive others. 8674b8942Sdan# May you share freely, never taking more than you give. 9674b8942Sdan# 10674b8942Sdan#************************************************************************* 11674b8942Sdan# 12674b8942Sdan 13674b8942Sdanset testdir [file dirname $argv0] 14674b8942Sdansource $testdir/tester.tcl 15674b8942Sdanset testprefix alterlegacy 16674b8942Sdan 17674b8942Sdan# If SQLITE_OMIT_ALTERTABLE is defined, omit this file. 18674b8942Sdanifcapable !altertable { 19674b8942Sdan finish_test 20674b8942Sdan return 21674b8942Sdan} 22674b8942Sdan 23674b8942Sdando_execsql_test 1.0 { 24674b8942Sdan PRAGMA legacy_alter_table = 1; 25674b8942Sdan CREATE TABLE t1(a, b, CHECK(t1.a != t1.b)); 26674b8942Sdan CREATE TABLE t2(a, b); 27674b8942Sdan CREATE INDEX t2expr ON t2(a) WHERE t2.b>0; 28674b8942Sdan} 29674b8942Sdan 30674b8942Sdando_execsql_test 1.1 { 31674b8942Sdan SELECT sql FROM sqlite_master 32674b8942Sdan} { 33674b8942Sdan {CREATE TABLE t1(a, b, CHECK(t1.a != t1.b))} 34674b8942Sdan {CREATE TABLE t2(a, b)} 35674b8942Sdan {CREATE INDEX t2expr ON t2(a) WHERE t2.b>0} 36674b8942Sdan} 37674b8942Sdan 38674b8942Sdan# Legacy behavior is to corrupt the schema in this case, as the table name in 39674b8942Sdan# the CHECK constraint is incorrect after "t1" is renamed. This version is 40674b8942Sdan# slightly different - it rejects the change and rolls back the transaction. 41674b8942Sdando_catchsql_test 1.2 { 42674b8942Sdan ALTER TABLE t1 RENAME TO t1new; 43*6a5a13dfSdan} {1 {error in table t1new after rename: no such column: t1.a}} 44674b8942Sdan 45674b8942Sdando_execsql_test 1.3 { 46674b8942Sdan CREATE TABLE t3(c, d); 47674b8942Sdan ALTER TABLE t3 RENAME TO t3new; 48674b8942Sdan DROP TABLE t3new; 49674b8942Sdan} 50674b8942Sdan 51674b8942Sdando_execsql_test 1.4 { 52674b8942Sdan SELECT sql FROM sqlite_master 53674b8942Sdan} { 54674b8942Sdan {CREATE TABLE t1(a, b, CHECK(t1.a != t1.b))} 55674b8942Sdan {CREATE TABLE t2(a, b)} 56674b8942Sdan {CREATE INDEX t2expr ON t2(a) WHERE t2.b>0} 57674b8942Sdan} 58674b8942Sdan 59674b8942Sdan 60674b8942Sdando_catchsql_test 1.3 { 61674b8942Sdan ALTER TABLE t2 RENAME TO t2new; 62*6a5a13dfSdan} {1 {error in index t2expr after rename: no such column: t2.b}} 63674b8942Sdando_execsql_test 1.4 { 64674b8942Sdan SELECT sql FROM sqlite_master 65674b8942Sdan} { 66674b8942Sdan {CREATE TABLE t1(a, b, CHECK(t1.a != t1.b))} 67674b8942Sdan {CREATE TABLE t2(a, b)} 68674b8942Sdan {CREATE INDEX t2expr ON t2(a) WHERE t2.b>0} 69674b8942Sdan} 70674b8942Sdan 71674b8942Sdan 72674b8942Sdan#------------------------------------------------------------------------- 73674b8942Sdanreset_db 74674b8942Sdanifcapable vtab { 75674b8942Sdan register_echo_module db 76674b8942Sdan 77674b8942Sdan do_execsql_test 2.0 { 78674b8942Sdan PRAGMA legacy_alter_table = 1; 79674b8942Sdan CREATE TABLE abc(a, b, c); 80674b8942Sdan INSERT INTO abc VALUES(1, 2, 3); 81674b8942Sdan CREATE VIRTUAL TABLE eee USING echo('abc'); 82674b8942Sdan SELECT * FROM eee; 83674b8942Sdan } {1 2 3} 84674b8942Sdan 85674b8942Sdan do_execsql_test 2.1 { 86674b8942Sdan ALTER TABLE eee RENAME TO fff; 87674b8942Sdan SELECT * FROM fff; 88674b8942Sdan } {1 2 3} 89674b8942Sdan 90674b8942Sdan db close 91674b8942Sdan sqlite3 db test.db 92674b8942Sdan 93674b8942Sdan do_catchsql_test 2.2 { 94674b8942Sdan ALTER TABLE fff RENAME TO ggg; 95674b8942Sdan } {1 {no such module: echo}} 96674b8942Sdan} 97674b8942Sdan 98674b8942Sdan#------------------------------------------------------------------------- 99674b8942Sdanreset_db 100674b8942Sdan 101674b8942Sdando_execsql_test 3.0 { 102674b8942Sdan PRAGMA legacy_alter_table = 1; 103674b8942Sdan CREATE TABLE txx(a, b, c); 104674b8942Sdan INSERT INTO txx VALUES(1, 2, 3); 105674b8942Sdan CREATE VIEW vvv AS SELECT main.txx.a, txx.b, c FROM txx; 106674b8942Sdan CREATE VIEW uuu AS SELECT main.one.a, one.b, c FROM txx AS one; 107674b8942Sdan CREATE VIEW temp.ttt AS SELECT main.txx.a, txx.b, one.b, main.one.a FROM txx AS one, txx; 108674b8942Sdan} 109674b8942Sdan 110674b8942Sdando_execsql_test 3.1.1 { 111674b8942Sdan SELECT * FROM vvv; 112674b8942Sdan} {1 2 3} 113674b8942Sdando_execsql_test 3.1.2a { 114674b8942Sdan ALTER TABLE txx RENAME TO "t xx"; 115674b8942Sdan} 116674b8942Sdando_catchsql_test 3.1.2b { 117674b8942Sdan SELECT * FROM vvv; 118674b8942Sdan} {1 {no such table: main.txx}} 119674b8942Sdando_execsql_test 3.1.3 { 120674b8942Sdan SELECT sql FROM sqlite_master WHERE name='vvv'; 121674b8942Sdan} {{CREATE VIEW vvv AS SELECT main.txx.a, txx.b, c FROM txx}} 122674b8942Sdan 123674b8942Sdan 124674b8942Sdando_catchsql_test 3.2.1 { 125674b8942Sdan SELECT * FROM uuu; 126674b8942Sdan} {1 {no such table: main.txx}} 127674b8942Sdando_execsql_test 3.2.2 { 128674b8942Sdan SELECT sql FROM sqlite_master WHERE name='uuu';; 129674b8942Sdan} {{CREATE VIEW uuu AS SELECT main.one.a, one.b, c FROM txx AS one}} 130674b8942Sdan 131674b8942Sdando_catchsql_test 3.3.1 { 132674b8942Sdan SELECT * FROM ttt; 133674b8942Sdan} {1 {no such table: txx}} 134674b8942Sdando_execsql_test 3.3.2 { 135674b8942Sdan SELECT sql FROM sqlite_temp_master WHERE name='ttt'; 136674b8942Sdan} {{CREATE VIEW ttt AS SELECT main.txx.a, txx.b, one.b, main.one.a FROM txx AS one, txx}} 137674b8942Sdan 138674b8942Sdan#------------------------------------------------------------------------- 139674b8942Sdanreset_db 140674b8942Sdando_execsql_test 4.0 { 141674b8942Sdan PRAGMA legacy_alter_table = 1; 142674b8942Sdan CREATE table t1(x, y); 143674b8942Sdan CREATE table t2(a, b); 144674b8942Sdan 145674b8942Sdan CREATE TRIGGER tr1 AFTER INSERT ON t1 BEGIN 146674b8942Sdan SELECT t1.x, * FROM t1, t2; 147674b8942Sdan INSERT INTO t2 VALUES(new.x, new.y); 148674b8942Sdan END; 149674b8942Sdan} 150674b8942Sdan 151674b8942Sdando_execsql_test 4.1 { 152674b8942Sdan INSERT INTO t1 VALUES(1, 1); 153674b8942Sdan ALTER TABLE t1 RENAME TO t11; 154674b8942Sdan} 155674b8942Sdando_catchsql_test 4.1a { 156674b8942Sdan INSERT INTO t11 VALUES(2, 2); 157674b8942Sdan} {1 {no such table: main.t1}} 158674b8942Sdando_execsql_test 4.1b { 159674b8942Sdan ALTER TABLE t11 RENAME TO t1; 160674b8942Sdan ALTER TABLE t2 RENAME TO t22; 161674b8942Sdan} 162674b8942Sdando_catchsql_test 4.1c { 163674b8942Sdan INSERT INTO t1 VALUES(3, 3); 164674b8942Sdan} {1 {no such table: main.t2}} 165674b8942Sdan 166674b8942Sdanproc squish {a} { 167674b8942Sdan string trim [regsub -all {[[:space:]][[:space:]]*} $a { }] 168674b8942Sdan} 169674b8942Sdandb func squish squish 170674b8942Sdando_test 4.2 { 171674b8942Sdan execsql { SELECT squish(sql) FROM sqlite_master WHERE name = 'tr1' } 172674b8942Sdan} [list [squish { 173674b8942Sdan CREATE TRIGGER tr1 AFTER INSERT ON "t1" BEGIN 174674b8942Sdan SELECT t1.x, * FROM t1, t2; 175674b8942Sdan INSERT INTO t2 VALUES(new.x, new.y); 176674b8942Sdan END 177674b8942Sdan}]] 178674b8942Sdan 179674b8942Sdan#------------------------------------------------------------------------- 180674b8942Sdanreset_db 181674b8942Sdando_execsql_test 5.0 { 182674b8942Sdan PRAGMA legacy_alter_table = 1; 183674b8942Sdan CREATE TABLE t9(a, b, c); 184674b8942Sdan CREATE TABLE t10(a, b, c); 185674b8942Sdan CREATE TEMP TABLE t9(a, b, c); 186674b8942Sdan 187674b8942Sdan CREATE TRIGGER temp.t9t AFTER INSERT ON temp.t9 BEGIN 188674b8942Sdan INSERT INTO t10 VALUES(new.a, new.b, new.c); 189674b8942Sdan END; 190674b8942Sdan 191674b8942Sdan INSERT INTO temp.t9 VALUES(1, 2, 3); 192674b8942Sdan SELECT * FROM t10; 193674b8942Sdan} {1 2 3} 194674b8942Sdan 195674b8942Sdando_execsql_test 5.1 { 196674b8942Sdan ALTER TABLE temp.t9 RENAME TO 't1234567890' 197674b8942Sdan} 198674b8942Sdan 199674b8942Sdando_execsql_test 5.2 { 200674b8942Sdan CREATE TABLE t1(a, b); 201674b8942Sdan CREATE TABLE t2(a, b); 202674b8942Sdan INSERT INTO t1 VALUES(1, 2); 203674b8942Sdan INSERT INTO t2 VALUES(3, 4); 204674b8942Sdan CREATE VIEW v AS SELECT one.a, one.b, t2.a, t2.b FROM t1 AS one, t2; 205674b8942Sdan SELECT * FROM v; 206674b8942Sdan} {1 2 3 4} 207674b8942Sdan 208674b8942Sdando_execsql_test 5.3 { 209674b8942Sdan ALTER TABLE t2 RENAME TO one; 210674b8942Sdan} {} 211674b8942Sdan 212674b8942Sdando_catchsql_test 5.4 { 213674b8942Sdan SELECT * FROM v 214674b8942Sdan} {1 {no such table: main.t2}} 215674b8942Sdan 216674b8942Sdando_execsql_test 5.5 { 217674b8942Sdan ALTER TABLE one RENAME TO t2; 218674b8942Sdan DROP VIEW v; 219674b8942Sdan CREATE VIEW temp.vv AS SELECT one.a, one.b, t2.a, t2.b FROM t1 AS one, t2; 220674b8942Sdan SELECT * FROM vv; 221674b8942Sdan} {1 2 3 4} 222674b8942Sdan 223674b8942Sdando_execsql_test 5.6 { 224674b8942Sdan ALTER TABLE t2 RENAME TO one; 225674b8942Sdan} {} 226674b8942Sdando_catchsql_test 5.7 { 227674b8942Sdan SELECT * FROM vv 228674b8942Sdan} {1 {no such table: t2}} 229674b8942Sdan 230674b8942Sdan#------------------------------------------------------------------------- 231674b8942Sdan 232674b8942Sdanifcapable vtab { 233674b8942Sdan register_tcl_module db 234674b8942Sdan proc tcl_command {method args} { 235674b8942Sdan switch -- $method { 236674b8942Sdan xConnect { 237674b8942Sdan return "CREATE TABLE t1(a, b, c)" 238674b8942Sdan } 239674b8942Sdan } 240674b8942Sdan return {} 241674b8942Sdan } 242674b8942Sdan 243674b8942Sdan do_execsql_test 6.0 { 244674b8942Sdan CREATE VIRTUAL TABLE x1 USING tcl(tcl_command); 245674b8942Sdan } 246674b8942Sdan 247674b8942Sdan do_execsql_test 6.1 { 248674b8942Sdan ALTER TABLE x1 RENAME TO x2; 249674b8942Sdan SELECT sql FROM sqlite_master WHERE name = 'x2' 250674b8942Sdan } {{CREATE VIRTUAL TABLE "x2" USING tcl(tcl_command)}} 251674b8942Sdan 252674b8942Sdan do_execsql_test 7.1 { 253674b8942Sdan CREATE TABLE ddd(db, sql, zOld, zNew, bTemp); 254674b8942Sdan INSERT INTO ddd VALUES( 255674b8942Sdan 'main', 'CREATE TABLE x1(i INTEGER, t TEXT)', 'ddd', NULL, 0 256674b8942Sdan ), ( 257674b8942Sdan 'main', 'CREATE TABLE x1(i INTEGER, t TEXT)', NULL, 'eee', 0 258674b8942Sdan ), ( 259674b8942Sdan 'main', NULL, 'ddd', 'eee', 0 260674b8942Sdan ); 261674b8942Sdan } {} 262674b8942Sdan} 263674b8942Sdan 264674b8942Sdan#------------------------------------------------------------------------- 265674b8942Sdan# 266674b8942Sdanreset_db 267674b8942Sdanforcedelete test.db2 268674b8942Sdando_execsql_test 8.1 { 269674b8942Sdan PRAGMA legacy_alter_table = 1; 270674b8942Sdan ATTACH 'test.db2' AS aux; 271674b8942Sdan PRAGMA foreign_keys = on; 272674b8942Sdan CREATE TABLE aux.p1(a INTEGER PRIMARY KEY, b); 273674b8942Sdan CREATE TABLE aux.c1(x INTEGER PRIMARY KEY, y REFERENCES p1(a)); 274674b8942Sdan INSERT INTO aux.p1 VALUES(1, 1); 275674b8942Sdan INSERT INTO aux.p1 VALUES(2, 2); 276674b8942Sdan INSERT INTO aux.c1 VALUES(NULL, 2); 277674b8942Sdan CREATE TABLE aux.c2(x INTEGER PRIMARY KEY, y REFERENCES c1(a)); 278674b8942Sdan} 279674b8942Sdan 280674b8942Sdando_execsql_test 8.2 { 281674b8942Sdan ALTER TABLE aux.p1 RENAME TO ppp; 282674b8942Sdan} 283674b8942Sdan 284674b8942Sdando_execsql_test 8.2 { 285674b8942Sdan INSERT INTO aux.c1 VALUES(NULL, 1); 286674b8942Sdan SELECT sql FROM aux.sqlite_master WHERE name = 'c1'; 287674b8942Sdan} {{CREATE TABLE c1(x INTEGER PRIMARY KEY, y REFERENCES "ppp"(a))}} 288674b8942Sdan 289674b8942Sdanreset_db 290674b8942Sdando_execsql_test 9.0 { 291674b8942Sdan PRAGMA legacy_alter_table = 1; 292674b8942Sdan CREATE TABLE t1(a, b, c); 293674b8942Sdan CREATE VIEW v1 AS SELECT * FROM t2; 294674b8942Sdan} 295674b8942Sdando_execsql_test 9.1 { 296674b8942Sdan ALTER TABLE t1 RENAME TO t3; 297674b8942Sdan} {} 298674b8942Sdando_execsql_test 9.1b { 299674b8942Sdan ALTER TABLE t3 RENAME TO t1; 300674b8942Sdan} {} 301674b8942Sdando_execsql_test 9.2 { 302674b8942Sdan DROP VIEW v1; 303674b8942Sdan CREATE TRIGGER tr AFTER INSERT ON t1 BEGIN 304674b8942Sdan INSERT INTO t2 VALUES(new.a); 305674b8942Sdan END; 306674b8942Sdan} 307674b8942Sdando_execsql_test 9.3 { 308674b8942Sdan ALTER TABLE t1 RENAME TO t3; 309674b8942Sdan} {} 310674b8942Sdan 311674b8942Sdanforcedelete test.db2 312674b8942Sdando_execsql_test 9.4 { 313674b8942Sdan ALTER TABLE t3 RENAME TO t1; 314674b8942Sdan DROP TRIGGER tr; 315674b8942Sdan 316674b8942Sdan ATTACH 'test.db2' AS aux; 317674b8942Sdan CREATE TRIGGER tr AFTER INSERT ON t1 WHEN new.a IS NULL BEGIN SELECT 1, 2, 3; END; 318674b8942Sdan 319674b8942Sdan CREATE TABLE aux.t1(x); 320674b8942Sdan CREATE TEMP TRIGGER tr AFTER INSERT ON aux.t1 BEGIN SELECT 1, 2, 3; END; 321674b8942Sdan} 322674b8942Sdando_execsql_test 9.5 { 323674b8942Sdan ALTER TABLE main.t1 RENAME TO t3; 324674b8942Sdan} 325674b8942Sdando_execsql_test 9.6 { 326674b8942Sdan SELECT sql FROM sqlite_temp_master; 327674b8942Sdan SELECT sql FROM sqlite_master WHERE type='trigger'; 328674b8942Sdan} { 329674b8942Sdan {CREATE TRIGGER tr AFTER INSERT ON aux.t1 BEGIN SELECT 1, 2, 3; END} 330674b8942Sdan {CREATE TRIGGER tr AFTER INSERT ON "t3" WHEN new.a IS NULL BEGIN SELECT 1, 2, 3; END} 331674b8942Sdan} 332674b8942Sdan 333674b8942Sdan#------------------------------------------------------------------------- 334674b8942Sdanreset_db 335674b8942Sdanifcapable fts5 { 336674b8942Sdan do_execsql_test 10.0 { 337674b8942Sdan PRAGMA legacy_alter_table = 1; 338674b8942Sdan CREATE VIRTUAL TABLE fff USING fts5(x, y, z); 339674b8942Sdan } 340674b8942Sdan 341674b8942Sdan do_execsql_test 10.1 { 342674b8942Sdan BEGIN; 343674b8942Sdan INSERT INTO fff VALUES('a', 'b', 'c'); 344674b8942Sdan ALTER TABLE fff RENAME TO ggg; 345674b8942Sdan COMMIT; 346674b8942Sdan } 347674b8942Sdan 348674b8942Sdan do_execsql_test 10.2 { 349674b8942Sdan SELECT * FROM ggg; 350674b8942Sdan } {a b c} 351674b8942Sdan} 352674b8942Sdan 353674b8942Sdan#------------------------------------------------------------------------- 354674b8942Sdanreset_db 355674b8942Sdanforcedelete test.db2 356674b8942Sdandb func trigger trigger 357674b8942Sdanset ::trigger [list] 358674b8942Sdanproc trigger {args} { 359674b8942Sdan lappend ::trigger $args 360674b8942Sdan} 361674b8942Sdando_execsql_test 11.0 { 362674b8942Sdan PRAGMA legacy_alter_table = 1; 363674b8942Sdan ATTACH 'test.db2' AS aux; 364674b8942Sdan CREATE TABLE aux.t1(a, b, c); 365674b8942Sdan CREATE TABLE main.t1(a, b, c); 366674b8942Sdan CREATE TEMP TRIGGER tr AFTER INSERT ON aux.t1 BEGIN 367674b8942Sdan SELECT trigger(new.a, new.b, new.c); 368674b8942Sdan END; 369674b8942Sdan} 370674b8942Sdan 371674b8942Sdando_execsql_test 11.1 { 372674b8942Sdan INSERT INTO main.t1 VALUES(1, 2, 3); 373674b8942Sdan INSERT INTO aux.t1 VALUES(4, 5, 6); 374674b8942Sdan} 375674b8942Sdando_test 11.2 { set ::trigger } {{4 5 6}} 376674b8942Sdan 377674b8942Sdando_execsql_test 11.3 { 378674b8942Sdan SELECT name, tbl_name FROM sqlite_temp_master; 379674b8942Sdan} {tr t1} 380674b8942Sdan 381674b8942Sdando_execsql_test 11.4 { 382674b8942Sdan ALTER TABLE main.t1 RENAME TO t2; 383674b8942Sdan SELECT name, tbl_name FROM sqlite_temp_master; 384674b8942Sdan} {tr t1} 385674b8942Sdan 386674b8942Sdando_execsql_test 11.5 { 387674b8942Sdan ALTER TABLE aux.t1 RENAME TO t2; 388674b8942Sdan SELECT name, tbl_name FROM sqlite_temp_master; 389674b8942Sdan} {tr t2} 390674b8942Sdan 391674b8942Sdando_execsql_test 11.6 { 392674b8942Sdan INSERT INTO aux.t2 VALUES(7, 8, 9); 393674b8942Sdan} 394674b8942Sdando_test 11.7 { set ::trigger } {{4 5 6} {7 8 9}} 395674b8942Sdan 396674b8942Sdan#------------------------------------------------------------------------- 397674b8942Sdanreset_db 398674b8942Sdando_execsql_test 12.0 { 399674b8942Sdan PRAGMA legacy_alter_table = 1; 400674b8942Sdan CREATE TABLE t1(a); 401674b8942Sdan CREATE TABLE t2(w); 402674b8942Sdan CREATE TRIGGER temp.r1 AFTER INSERT ON main.t2 BEGIN 403674b8942Sdan INSERT INTO t1(a) VALUES(new.w); 404674b8942Sdan END; 405674b8942Sdan CREATE TEMP TABLE t2(x); 406674b8942Sdan} 407674b8942Sdan 408674b8942Sdando_execsql_test 12.1 { 409674b8942Sdan ALTER TABLE main.t2 RENAME TO t3; 410674b8942Sdan} 411674b8942Sdan 412674b8942Sdando_execsql_test 12.2 { 413674b8942Sdan INSERT INTO t3 VALUES('WWW'); 414674b8942Sdan SELECT * FROM t1; 415674b8942Sdan} {WWW} 416674b8942Sdan 417674b8942Sdan 418674b8942Sdan#------------------------------------------------------------------------- 419674b8942Sdanreset_db 420674b8942Sdan 421674b8942Sdanifcapable rtree { 422674b8942Sdan do_execsql_test 14.0 { 423674b8942Sdan PRAGMA legacy_alter_table = 1; 424674b8942Sdan CREATE VIRTUAL TABLE rt USING rtree(id, minx, maxx, miny, maxy); 425674b8942Sdan 426674b8942Sdan CREATE TABLE "mytable" ( "fid" INTEGER PRIMARY KEY, "geom" BLOB); 427674b8942Sdan 428674b8942Sdan CREATE TRIGGER tr1 AFTER UPDATE OF "geom" ON "mytable" 429674b8942Sdan WHEN OLD."fid" = NEW."fid" AND NEW."geom" IS NULL BEGIN 430674b8942Sdan DELETE FROM rt WHERE id = OLD."fid"; 431674b8942Sdan END; 432674b8942Sdan 433674b8942Sdan INSERT INTO mytable VALUES(1, X'abcd'); 434674b8942Sdan } 435674b8942Sdan 436674b8942Sdan do_execsql_test 14.1 { 437674b8942Sdan UPDATE mytable SET geom = X'1234' 438674b8942Sdan } 439674b8942Sdan 440674b8942Sdan do_execsql_test 14.2 { 441674b8942Sdan ALTER TABLE mytable RENAME TO mytable_renamed; 442674b8942Sdan } 443674b8942Sdan 444674b8942Sdan do_execsql_test 14.3 { 445674b8942Sdan CREATE TRIGGER tr2 AFTER INSERT ON mytable_renamed BEGIN 446674b8942Sdan DELETE FROM rt WHERE id=(SELECT min(id) FROM rt); 447674b8942Sdan END; 448674b8942Sdan } 449674b8942Sdan 450674b8942Sdan do_execsql_test 14.4 { 451674b8942Sdan ALTER TABLE mytable_renamed RENAME TO mytable2; 452674b8942Sdan } 453674b8942Sdan} 454674b8942Sdan 455674b8942Sdanreset_db 456674b8942Sdando_execsql_test 14.5 { 457674b8942Sdan PRAGMA legacy_alter_table = 1; 458674b8942Sdan CREATE TABLE t1(a, b, c); 459674b8942Sdan CREATE VIEW v1 AS SELECT * FROM t1; 460674b8942Sdan CREATE TRIGGER xyz AFTER INSERT ON t1 BEGIN 461674b8942Sdan SELECT a, b FROM v1; 462674b8942Sdan END; 463674b8942Sdan} 464674b8942Sdando_execsql_test 14.6 { 465674b8942Sdan ALTER TABLE t1 RENAME TO tt1; 466674b8942Sdan} 467674b8942Sdan 468674b8942Sdan 469674b8942Sdanfinish_test 470