Index: src/alter.c ================================================================== --- src/alter.c +++ src/alter.c @@ -843,11 +843,12 @@ assert( pNew->n>0 ); bQuote = sqlite3Isquote(pNew->z[0]); sqlite3NestedParse(pParse, "UPDATE \"%w\".%s SET " "sql = sqlite_rename_column(sql, %Q, %Q, %d, %Q, %d) " - "WHERE name NOT LIKE 'sqlite_%%' AND (type != 'index' OR tbl_name = %Q)", + "WHERE name NOT LIKE 'sqlite_%%' AND (type != 'index' OR tbl_name = %Q)" + " AND sql NOT LIKE 'create virtual%%'", zDb, MASTER_NAME, zDb, pTab->zName, iCol, zNew, bQuote, pTab->zName ); Index: test/altercol.test ================================================================== --- test/altercol.test +++ test/altercol.test @@ -332,27 +332,40 @@ #------------------------------------------------------------------------- # More triggers. # proc do_rename_column_test {tn old new lSchema} { - reset_db - set lSorted [list] - foreach sql $lSchema { - execsql $sql - lappend lSorted [string trim $sql] - } - set lSorted [lsort $lSorted] - - do_execsql_test $tn.1 { - SELECT sql FROM sqlite_master WHERE sql!='' ORDER BY 1 - } $lSorted - - do_execsql_test $tn.2 "ALTER TABLE t1 RENAME $old TO $new" - - do_execsql_test $tn.3 { - SELECT sql FROM sqlite_master ORDER BY 1 - } [string map [list $old $new] $lSorted] + + for {set i 0} {$i < 2} {incr i} { + # DROP all tables and views in database. + set sql "SELECT name FROM sqlite_master WHERE type='table' ORDER BY 1" + foreach nm [db eval $sql] { db eval "DROP TABLE $nm" } + set sql "SELECT name FROM sqlite_master WHERE type='view' ORDER BY 1" + foreach nm [db eval $sql] { db eval "DROP VIEW $nm" } + + set lSorted [list] + foreach sql $lSchema { + execsql $sql + lappend lSorted [string trim $sql] + } + set lSorted [lsort $lSorted] + + do_execsql_test $tn.$i.1 { + SELECT sql FROM sqlite_master WHERE sql!='' ORDER BY 1 + } $lSorted + + if {0 && $i==1} { + db close + sqlite3 db test.db + } + + do_execsql_test $tn.$i.2 "ALTER TABLE t1 RENAME $old TO $new" + + do_execsql_test $tn.$i.3 { + SELECT sql FROM sqlite_master ORDER BY 1 + } [string map [list $old $new] $lSorted] + } } foreach {tn old new lSchema} { 1 _x_ _xxx_ { { CREATE TABLE t1(a, b, _x_) } @@ -395,11 +408,11 @@ reset_db foreach {tn old new lSchema} { 1 _x_ _xxx_ { { CREATE TABLE t1(a, b, _x_) } - { CREATE VIEW v1 AS SELECT a, b, _x_ FROM t1 WHERE _x_='abc' COLLATE xyz } + { CREATE VIEW s1 AS SELECT a, b, _x_ FROM t1 WHERE _x_='abc' COLLATE xyz } } 2 _x_ _xxx_ { { CREATE TABLE t1(a, b, _x_) } { CREATE VIEW v1 AS SELECT a, b, _x_ FROM t1 WHERE scalar(_x_) } @@ -407,11 +420,17 @@ 3 _x_ _xxx_ { { CREATE TABLE t1(a, b, _x_) } { CREATE VIEW v1 AS SELECT a, b, _x_ FROM t1 WHERE _x_ = unicode(1, 2, 3) } } + + 4 _x_ _xxx_ { + { CREATE TABLE t1(a, b, _x_) } + { CREATE VIRTUAL TABLE e1 USING echo(t1) } + } } { + register_echo_module db do_rename_column_test 10.$tn $old $new $lSchema } finish_test