Index: third_party/sqlite/src/test/alter2.test |
diff --git a/third_party/sqlite/src/test/alter2.test b/third_party/sqlite/src/test/alter2.test |
index 0ce023b8fdcb069b9abf400da295dcdb777fa455..712960c0eaf9e3cffacc97995329fb1bb92e993d 100644 |
--- a/third_party/sqlite/src/test/alter2.test |
+++ b/third_party/sqlite/src/test/alter2.test |
@@ -22,9 +22,10 @@ source $testdir/tester.tcl |
# We have to have pragmas in order to do this test |
ifcapable {!pragma} return |
-# These tests do not work if there is a codec. |
+# Do not use a codec for tests in this file, as the database file is |
+# manipulated directly using tcl scripts. See proc [set_file_format]. |
# |
-#if {[catch {sqlite3 -has_codec} r] || $r} return |
+do_not_use_codec |
# The file format change affects the way row-records stored in tables (but |
# not indices) are interpreted. Before version 3.1.3, a row-record for a |
@@ -72,6 +73,21 @@ proc alter_table {tbl sql {file_format 2}} { |
set_file_format 2 |
} |
+# Create bogus application-defined functions for functions used |
+# internally by ALTER TABLE, to ensure that ALTER TABLE falls back |
+# to the built-in functions. |
+# |
+proc failing_app_func {args} {error "bad function"} |
+do_test alter2-1.0 { |
+ db func substr failing_app_func |
+ db func like failing_app_func |
+ db func sqlite_rename_table failing_app_func |
+ db func sqlite_rename_trigger failing_app_func |
+ db func sqlite_rename_parent failing_app_func |
+ catchsql {SELECT substr('abcdefg',1,3)} |
+} {1 {bad function}} |
+ |
+ |
#----------------------------------------------------------------------- |
# Some basic tests to make sure short rows are handled. |
# |
@@ -233,7 +249,8 @@ ifcapable trigger { |
do_test alter2-4.1 { |
db close |
set_file_format 5 |
- sqlite3 db test.db |
+ catch { sqlite3 db test.db } |
+ set {} {} |
} {} |
do_test alter2-4.2 { |
# We have to run two queries here because the Tcl interface uses |