-C Fixes\sfor\sharmless\scompiler\swarnings.
-D 2018-09-01T20:02:07.316
+C Fix\sa\sproblem\swith\srenaming\sa\scolumn\sin\sa\stable\sthat\shas\sa\stemp\strigger\sthat\nreferences\sanother\sattached\sdatabase.
+D 2018-09-01T20:23:28.072
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F Makefile.in 6b650013511fd9d8b094203ac268af9220d292cc7d4e1bc9fbca15aacd8c7995
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
-F src/alter.c 24c05a7bccaa051754ca0adaed191d4d39a9a9e3508ab6ac5618a11d895258c2
+F src/alter.c f309bac1d1d2081d4a085225abc492b7feb0b9bb7954b8dcde38774fb3af9b3e
F src/analyze.c 3dc6b98cf007b005af89df165c966baaa48e8124f38c87b4d2b276fe7f0b9eb9
F src/attach.c 4bd5b92633671d3e8ce431153ebb1893b50335818423b5373f3f27969f79769a
F src/auth.c 32a5bbe3b755169ab6c66311c5225a3cd4f75a46c041f7fb117e0cbb68055114
F src/vdbe.h 5081dcc497777efe5e9ebe7330d283a044a005e4bdda2e2e984f03bf89a0d907
F src/vdbeInt.h f1f35f70460698d8f5a2bdef1001114babf318e2983a067804e2ae077d8e9827
F src/vdbeapi.c 2ba821c5929a2769e4b217dd85843479c718b8989d414723ec8af0616a83d611
-F src/vdbeaux.c 1ee77344fe9fd6ac11fae6f0150f81e0eadf349a9957340089cf82284e6b379a
+F src/vdbeaux.c 0a769638bf4d9a9eb7b6a29f66b707441711c5775265404bbe1fafa0daa0c891
F src/vdbeblob.c f5c70f973ea3a9e915d1693278a5f890dc78594300cf4d54e64f2b0917c94191
F src/vdbemem.c 81329ab760e4ec0162119d9cd10193e0303c45c5935bb20c7ae9139d44dd6641
F src/vdbesort.c 90aad5a92608f2dd771c96749beabdb562c9d881131a860a7a5bccf66dc3be7f
F test/aggnested.test 18b00de006597e960a6b27ccec51474ac66cf1070a87c1933e5694dc02190ef1
F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
F test/all.test ae17c4412639e16bd797c7617864a16c2badc0035c808ae8246f145e38f8e2f9
-F test/alter.test 31b4e9128887457f1a7bdfea4764513204e88f09e33e89bc32b84fdd3d21229a
+F test/alter.test 905d899b2f15d369244a8fa681d919423ecdffc4db44e317bc3499c9ccbcb154
F test/alter2.test 7ea05c7d92ac99349a802ef7ada17294dd647060
F test/alter3.test 4d79934d812eaeacc6f22781a080f8cfe012fdc3
-F test/alter4.test b6d7b86860111864f6cddb54af313f5862dda23b
-F test/altercol.test 42250da2cba6d94fdf21a4c39d79c733911d18a7c1453216ef0f48c6c118966d
+F test/alter4.test 7e93a21fe131e1dfeb317e90056856f96b10381fc7fe3a05e765569a23400433
+F test/altercol.test a5e24ad5e71afbf4a604336ee5f5287d3633ef26952b4ee8b5fe154a30ed2993
F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc
F test/altermalloc2.test 0231398534c494401a70a1d06a63d7849cb5b317fcc14228cbdb53039eba7eae
-F test/altertab.test 8c9631e9daca782905207c3c728c89181320d5ff8bfe1dc10cced233446a017f
+F test/altertab.test c273f24c1b23774ce3ab52e0e3535185e294efa93deb7032f07ab9ea2f8bb3e3
F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
F test/analyze.test b3a9c67d00e1df7588a5b7be9a0292899f94fe8cac1f94a017277474ca2e59df
F test/analyze3.test ff62d9029e6deb2c914490c6b00caf7fae47cc85cdc046e4a0d0a4d4b87c71d8
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 2e2cf992f5d6cae2030c3c03b0eb98af3b130e86a719b991e41380138751f615
-R 153fdf1759fc10e48330c4fc6a239581
-U drh
-Z bdf4e49e19b8f1e7f13ad081d0e19df8
+P 41b8f38b97bf0d1abcd6de8e940269fc4c51e2bbcf7b2e53e0c8440c58187c33
+R 6b89208f27f74179353ae212d55d532a
+U dan
+Z 6ba4d58b7303508fcf7931b53df7a7cd
-41b8f38b97bf0d1abcd6de8e940269fc4c51e2bbcf7b2e53e0c8440c58187c33
\ No newline at end of file
+336b8a0923bf65b7a2c35811cb6dec0e262a0b31e534d2a6ab093d2afdb05c1f
\ No newline at end of file
bQuote = sqlite3Isquote(pNew->z[0]);
sqlite3NestedParse(pParse,
"UPDATE \"%w\".%s SET "
- "sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d) "
+ "sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d, %d) "
"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,
+ zDb, pTab->zName, iCol, zNew, bQuote, iSchema==1,
pTab->zName
);
sqlite3NestedParse(pParse,
"UPDATE temp.%s SET "
- "sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d) "
+ "sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d, 1) "
"WHERE type IN ('trigger', 'view')",
MASTER_NAME,
zDb, pTab->zName, iCol, zNew, bQuote
** 5. iCol: Index of column to rename
** 6. zNew: New column name
** 7. bQuote: Non-zero if the new column name should be quoted.
+** 8. bTemp: True if zSql comes from temp schema
**
** Do a column rename operation on the CREATE statement given in zSql.
** The iCol-th column (left-most is 0) of table zTable is renamed from zCol
int iCol = sqlite3_value_int(argv[5]);
const char *zNew = (const char*)sqlite3_value_text(argv[6]);
int bQuote = sqlite3_value_int(argv[7]);
+ int bTemp = sqlite3_value_int(argv[8]);
const char *zOld;
- int bTemp = 0;
int rc;
Parse sParse;
Walker sWalker;
}
#ifndef SQLITE_OMIT_TRIGGER
- else if( sParse.pNewTrigger ){
+ else{
Trigger *pTrigger = sParse.pNewTrigger;
TriggerStep *pStep;
if( 0==sqlite3_stricmp(sParse.pNewTrigger->table, zOld)
*/
void sqlite3AlterFunctions(void){
static FuncDef aAlterTableFuncs[] = {
- FUNCTION(sqlite_rename_column, 8, 0, 0, renameColumnFunc),
+ FUNCTION(sqlite_rename_column, 9, 0, 0, renameColumnFunc),
FUNCTION(sqlite_rename_table, 5, 0, 0, renameTableFunc),
FUNCTION(sqlite_rename_test, 5, 0, 0, renameTableTest),
};
testcase( p->flags & MEM_Agg );
testcase( p->flags & MEM_Dyn );
testcase( p->xDel==sqlite3VdbeFrameMemDel );
- testcase( p->flags & MEM_RowSet );
if( p->flags&(MEM_Agg|MEM_Dyn) ){
sqlite3VdbeMemRelease(p);
}else if( p->szMalloc ){
# rename_table() functions do not crash when handed bad input.
#
do_test alter-9.1 {
- execsql {SELECT SQLITE_RENAME_COLUMN(0,0,0,0,0,0,0,0)}
+ execsql {SELECT SQLITE_RENAME_COLUMN(0,0,0,0,0,0,0,0,0)}
} {{}}
foreach {tn sql} {
1 { SELECT SQLITE_RENAME_TABLE(0,0,0,0,0) }
}
} {ok}
+reset_db
+do_execsql_test alter4-11.0 {
+ CREATE TABLE t1(c INTEGER PRIMARY KEY, d);
+ PRAGMA foreign_keys = on;
+ ALTER TABLE t1 ADD COLUMN e;
+}
+
+do_execsql_test alter4-11.1 {
+ ALTER TABLE t1 ADD COLUMN f REFERENCES t1;
+}
+
+do_catchsql_test alter4-11.2 {
+ ALTER TABLE t1 ADD COLUMN g REFERENCES t1 DEFAULT 4;
+} {1 {Cannot add a REFERENCES column with non-NULL default value}}
+
+do_catchsql_test alter4-11.3 {
+ ALTER TABLE t2 ADD COLUMN g;
+} {1 {no such table: t2}}
+
+ifcapable fts5 {
+ do_execsql_test alter4-11.4 {
+ CREATE VIRTUAL TABLE fff USING fts5(f);
+ }
+ do_catchsql_test alter4-11.2 {
+ ALTER TABLE fff ADD COLUMN g;
+ } {1 {virtual tables may not be altered}}
+}
+
finish_test
}
do_catchsql_test 12.3.2 {
ALTER TABLE ft RENAME a TO z;
- } {1 {columns of virtual table ft may not be renamed}}
+ } {1 {cannot rename columns of virtual table "ft"}}
}
do_execsql_test 12.4.1 {
), (
'CREATE TABLE x1(i INTEGER, t TEXT)',
'table', 'x1', 'main', 'notable', 0, 'zzz', 0
+ ), (
+ 'CREATE TABLE x1(i INTEGER, t TEXT)',
+ 'table', 'x1', 'main', 'ddd', -1, 'zzz', 0
);
} {}
do_execsql_test 14.2 {
SELECT
- sqlite_rename_column(sql, type, object, db, tbl, icol, znew, bquote)
+ sqlite_rename_column(sql, type, object, db, tbl, icol, znew, bquote, 0)
FROM ddd;
-} {{} {} {}}
+} {{} {} {} {}}
#-------------------------------------------------------------------------
#
SELECT * FROM v5;
} {3 456 20456 0}
+#-------------------------------------------------------------------------
+#
+do_execsql_test 17.0 {
+ CREATE TABLE u7(x, y, z);
+ CREATE TRIGGER u7t AFTER INSERT ON u7 BEGIN
+ INSERT INTO u8 VALUES(new.x, new.y, new.z);
+ END;
+} {}
+do_catchsql_test 17.1 {
+ ALTER TABLE u7 RENAME x TO xxx;
+} {1 {error in trigger u7t: no such table: main.u8}}
+
+do_execsql_test 17.2 {
+ CREATE TEMP TABLE uu7(x, y, z);
+ CREATE TRIGGER uu7t AFTER INSERT ON uu7 BEGIN
+ INSERT INTO u8 VALUES(new.x, new.y, new.z);
+ END;
+} {}
+do_catchsql_test 17.3 {
+ ALTER TABLE uu7 RENAME x TO xxx;
+} {1 {error in trigger uu7t: no such table: u8}}
+
+reset_db
+forcedelete test.db2
+do_execsql_test 18.0 {
+ ATTACH 'test.db2' AS aux;
+ CREATE TABLE t1(a);
+ CREATE TABLE aux.log(v);
+ CREATE TEMP TRIGGER tr1 AFTER INSERT ON t1 BEGIN
+ INSERT INTO log VALUES(new.a);
+ END;
+ INSERT INTO t1 VALUES(111);
+ SELECT v FROM log;
+} {111}
+
+do_execsql_test 18.1 {
+ ALTER TABLE t1 RENAME a TO b;
+}
+
+
finish_test
ALTER TABLE t2 RENAME TO one;
} {1 {error in view vv after rename: ambiguous column name: one.a}}
+#-------------------------------------------------------------------------
+
+register_tcl_module db
+proc tcl_command {method args} {
+ switch -- $method {
+ xConnect {
+ return "CREATE TABLE t1(a, b, c)"
+ }
+ }
+ return {}
+}
+
+do_execsql_test 6.0 {
+ CREATE VIRTUAL TABLE x1 USING tcl(tcl_command);
+}
+
+do_execsql_test 6.1 {
+ ALTER TABLE x1 RENAME TO x2;
+ SELECT sql FROM sqlite_master WHERE name = 'x2'
+} {{CREATE VIRTUAL TABLE "x2" USING tcl(tcl_command)}}
+
+do_execsql_test 7.1 {
+ CREATE TABLE ddd(db, sql, zOld, zNew, bTemp);
+ INSERT INTO ddd VALUES(
+ 'main', 'CREATE TABLE x1(i INTEGER, t TEXT)', 'ddd', NULL, 0
+ ), (
+ 'main', 'CREATE TABLE x1(i INTEGER, t TEXT)', NULL, 'eee', 0
+ ), (
+ 'main', NULL, 'ddd', 'eee', 0
+ );
+} {}
+
+do_execsql_test 7.2 {
+ SELECT
+ sqlite_rename_table(db, sql, zOld, zNew, bTemp)
+ FROM ddd;
+} {{} {} {}}
+
finish_test