-C Merge\slatest\strunk\schanges\sinto\sthis\sbranch.
-D 2018-09-05T17:52:52.364
+C Ensure\sthat\sthe\stbl_name\scolumn\sin\sthe\ssqlite_temp_master\stable\sis\supdated\ncorrectly\sas\spart\sof\sa\sRENAME\sTABLE\soperation.
+D 2018-09-06T16:01:37.037
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 900f64f083ca8dde83bb40fde12df29a26dad85d8ad086456bf1b373a2034abf
+F src/alter.c 9088b817d4ca84504dc3b4237be6347cfeb3471aa8b29f57ffc4b102d9f62924
F src/analyze.c 3dc6b98cf007b005af89df165c966baaa48e8124f38c87b4d2b276fe7f0b9eb9
F src/attach.c 4bd5b92633671d3e8ce431153ebb1893b50335818423b5373f3f27969f79769a
F src/auth.c 32a5bbe3b755169ab6c66311c5225a3cd4f75a46c041f7fb117e0cbb68055114
F test/altercol.test a5e24ad5e71afbf4a604336ee5f5287d3633ef26952b4ee8b5fe154a30ed2993
F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc
F test/altermalloc2.test 0231398534c494401a70a1d06a63d7849cb5b317fcc14228cbdb53039eba7eae
-F test/altertab.test 51698a8ada7cd3627026b6377987becfb58d1a3cbf14d73f283110f908491ac9
+F test/altertab.test bd1fbe88c9e87c5ab9aedc2b1d1d29342d9364297bd6c4548b224188a9a351fb
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 f804336f083d8d26314bb1ba34cec427675065a67cbe2bf00bb42e40752aeb33 e628713338f6e584a32d5fc3436ddbd9ee8cf88401c321c1ebe7daa1e695c623
-R 41880ac914b2711bb962960eaec2ca98
+P 6f4f707f9c3c29f2437962fd5d7761876cf8e7ed7fdcb9d0ca4fd001fa226597
+R 736eb84ee6a36063403800095e80dcb4
U dan
-Z 12f9217db838b96229534e48a6d1f751
+Z 8b3bb9ab09ae82a5dd16cca46750c9c8
-6f4f707f9c3c29f2437962fd5d7761876cf8e7ed7fdcb9d0ca4fd001fa226597
\ No newline at end of file
+ffecfca511718e39e0003b380d5113755b8a11405a5bd80cc04503d9557f0842
\ No newline at end of file
"FROM \"%w\".%s "
"WHERE name NOT LIKE 'sqlite_%%'"
" AND sql NOT LIKE 'create virtual%%'"
- " AND sqlite_rename_test(%Q, sql, type, name, %d)=0 ",
+ " AND sqlite_rename_test(%Q, sql, type, name, %d)=NULL ",
zDb, MASTER_NAME,
zDb, bTemp
);
"FROM temp.%s "
"WHERE name NOT LIKE 'sqlite_%%'"
" AND sql NOT LIKE 'create virtual%%'"
- " AND sqlite_rename_test(%Q, sql, type, name, 1)=0 ",
+ " AND sqlite_rename_test(%Q, sql, type, name, 1)=NULL ",
MASTER_NAME, zDb
);
}
"UPDATE sqlite_temp_master SET "
"sql = sqlite_rename_table(%Q, type, name, sql, %Q, %Q, 1), "
"tbl_name = "
- "CASE WHEN tbl_name=%Q COLLATE nocase THEN %Q ELSE tbl_name END "
+ "CASE WHEN tbl_name=%Q COLLATE nocase AND "
+ " sqlite_rename_test(%Q, sql, type, name, 1) "
+ "THEN %Q ELSE tbl_name END "
"WHERE type IN ('view', 'trigger')"
- , zDb, zTabName, zName, zTabName, zTabName, zName);
+ , zDb, zTabName, zName, zTabName, zDb, zName);
}
renameReloadSchema(pParse, iDb);
** resolution problems in a CREATE TRIGGER|TABLE|VIEW|INDEX statement.
** After an ALTER TABLE .. RENAME operation is performed and the schema
** reloaded, this function is called on each SQL statement in the schema
-** to ensure that it are still usable.
+** to ensure that it is still usable.
**
** 0: Database name ("main", "temp" etc.).
** 1: SQL statement.
** 2: Object type ("view", "table", "trigger" or "index").
** 3: Object name.
** 4: True if object is from temp schema.
+**
+** Unless it finds an error, this function normally returns NULL. However, it
+** returns integer value 1 if:
+**
+** * the SQL argument creates a trigger, and
+** * the table that the trigger is attached to is in database zDb.
*/
static void renameTableTest(
sqlite3_context *context,
else if( sParse.pNewTrigger ){
rc = renameResolveTrigger(&sParse, bTemp ? 0 : zDb);
+ if( rc==SQLITE_OK ){
+ int i1 = sqlite3SchemaToIndex(db, sParse.pNewTrigger->pTabSchema);
+ int i2 = sqlite3FindDbName(db, zDb);
+ if( i1==i2 ) sqlite3_result_int(context, 1);
+ }
}
}
} {a b c}
}
-finish_test
+#-------------------------------------------------------------------------
+reset_db
+forcedelete test.db2
+db func trigger trigger
+set ::trigger [list]
+proc trigger {args} {
+ lappend ::trigger $args
+}
+do_execsql_test 11.0 {
+ ATTACH 'test.db2' AS aux;
+ CREATE TABLE aux.t1(a, b, c);
+ CREATE TABLE main.t1(a, b, c);
+ CREATE TEMP TRIGGER tr AFTER INSERT ON aux.t1 BEGIN
+ SELECT trigger(new.a, new.b, new.c);
+ END;
+}
+do_execsql_test 11.1 {
+ INSERT INTO main.t1 VALUES(1, 2, 3);
+ INSERT INTO aux.t1 VALUES(4, 5, 6);
+}
+do_test 11.2 { set ::trigger } {{4 5 6}}
+
+do_execsql_test 11.3 {
+ SELECT name, tbl_name FROM sqlite_temp_master;
+} {tr t1}
+
+do_execsql_test 11.4 {
+ ALTER TABLE main.t1 RENAME TO t2;
+ SELECT name, tbl_name FROM sqlite_temp_master;
+} {tr t1}
+
+do_execsql_test 11.5 {
+ ALTER TABLE aux.t1 RENAME TO t2;
+ SELECT name, tbl_name FROM sqlite_temp_master;
+} {tr t2}
+
+do_execsql_test 11.6 {
+ INSERT INTO aux.t2 VALUES(7, 8, 9);
+}
+do_test 11.7 { set ::trigger } {{4 5 6} {7 8 9}}
+
+finish_test