Add a test for the collation-sequence/CHECK constraint problem fixed by the previous commit.
FossilOrigin-Name: 82b6aa77c8d8de4c6fad1960f5958457a929a821
This commit is contained in:
parent
1e92fb59b2
commit
a2ebe4b418
12
manifest
12
manifest
@ -1,5 +1,5 @@
|
||||
C Fix\sa\sproblem\swith\sshared-cache\smode\sand\sCHECK\sconstraints\scausing\sone\sdb\shandle\sto\sinvoke\sa\scollation\ssequence\sfunction\sregistered\swith\sanother.
|
||||
D 2012-10-05T16:30:10.692
|
||||
C Add\sa\stest\sfor\sthe\scollation-sequence/CHECK\sconstraint\sproblem\sfixed\sby\sthe\sprevious\scommit.
|
||||
D 2012-10-05T17:18:16.288
|
||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||
F Makefile.in 5f4f26109f9d80829122e0e09f9cda008fa065fb
|
||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||
@ -702,7 +702,7 @@ F test/shared4.test 72d90821e8d2fc918a08f16d32880868d8ee8e9d
|
||||
F test/shared6.test 866bb4982c45ce216c61ded5e8fde4e7e2f3ffa9
|
||||
F test/shared7.test 960760bc8d03e1419e70dea69cf41db62853616e
|
||||
F test/shared8.test b27befbefbe7f4517f1d6b7ff8f64a41ec74165d
|
||||
F test/shared9.test 61cf645c716451642ae9be2342fada8b200649c3
|
||||
F test/shared9.test 3a5b09583e3ba3139a4bd66958061306b4331c7e
|
||||
F test/shared_err.test 91e26ec4f3fbe07951967955585137e2f18993de
|
||||
F test/sharedlock.test ffa0a3c4ac192145b310f1254f8afca4d553eabf
|
||||
F test/shell1.test 272384163432c0efd2c6817396beb0d119565d53
|
||||
@ -1019,7 +1019,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
|
||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
||||
F tool/win/sqlite.vsix 67d8a99aceb56384a81b3f30d6c71743146d2cc9
|
||||
P 2b370dea704b59262c604af0efcef5660b194454
|
||||
R b8d4e5a86ac362df32fe82058e93d169
|
||||
P c2c776ab73828374836af008aa320cc670c081b5
|
||||
R 944a2743bc72c249d323dde91a15aa61
|
||||
U dan
|
||||
Z c2b386d7cf024f01e0a45b9a845b3c47
|
||||
Z fb89a86dbc14aadae3bf562a37bf56e5
|
||||
|
@ -1 +1 @@
|
||||
c2c776ab73828374836af008aa320cc670c081b5
|
||||
82b6aa77c8d8de4c6fad1960f5958457a929a821
|
@ -17,15 +17,15 @@
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
set testprefix shared9
|
||||
|
||||
ifcapable !view||!trigger {
|
||||
finish_test
|
||||
return
|
||||
}
|
||||
|
||||
db close
|
||||
set enable_shared_cache [sqlite3_enable_shared_cache 1]
|
||||
|
||||
# Test organization:
|
||||
#
|
||||
# 1.* - Views.
|
||||
# 2.* - Virtual tables.
|
||||
#
|
||||
|
||||
sqlite3 db1 test.db
|
||||
sqlite3 db2 test.db
|
||||
forcedelete test.db2
|
||||
@ -48,31 +48,93 @@ do_test 1.1 {
|
||||
} {1 2}
|
||||
|
||||
do_test 1.2 { db2 eval "ATTACH 'test.db2' AS 'jones'" } {}
|
||||
do_test 1.2 { db2 eval "SELECT * FROM v1" } {}
|
||||
do_test 1.3 { db2 eval "INSERT INTO t2 VALUES(3, 4)" } {}
|
||||
do_test 1.3 { db2 eval "SELECT * FROM v1" } {}
|
||||
do_test 1.4 { db2 eval "INSERT INTO t2 VALUES(3, 4)" } {}
|
||||
|
||||
do_test 2.1 {
|
||||
db1 eval {
|
||||
CREATE VIRTUAL TABLE fred.t4 USING fts4;
|
||||
INSERT INTO t4 VALUES('hello world');
|
||||
}
|
||||
} {}
|
||||
ifcapable fts3 {
|
||||
do_test 1.5 {
|
||||
db1 eval {
|
||||
CREATE VIRTUAL TABLE fred.t4 USING fts4;
|
||||
INSERT INTO t4 VALUES('hello world');
|
||||
}
|
||||
} {}
|
||||
|
||||
do_test 2.2 {
|
||||
db2 eval {
|
||||
INSERT INTO t4 VALUES('shared cache');
|
||||
SELECT * FROM t4 WHERE t4 MATCH 'hello';
|
||||
}
|
||||
} {{hello world}}
|
||||
do_test 1.6 {
|
||||
db2 eval {
|
||||
INSERT INTO t4 VALUES('shared cache');
|
||||
SELECT * FROM t4 WHERE t4 MATCH 'hello';
|
||||
}
|
||||
} {{hello world}}
|
||||
|
||||
do_test 2.3 {
|
||||
db1 eval {
|
||||
SELECT * FROM t4 WHERE t4 MATCH 'c*';
|
||||
}
|
||||
} {{shared cache}}
|
||||
do_test 1.7 {
|
||||
db1 eval {
|
||||
SELECT * FROM t4 WHERE t4 MATCH 'c*';
|
||||
}
|
||||
} {{shared cache}}
|
||||
}
|
||||
|
||||
db1 close
|
||||
db2 close
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# The following tests attempt to find a similar problem with collation
|
||||
# sequence names - pointers to database handle specific allocations leaking
|
||||
# into schema objects and being used after the original handle has been
|
||||
# closed.
|
||||
#
|
||||
forcedelete test.db test.db2
|
||||
sqlite3 db1 test.db
|
||||
sqlite3 db2 test.db
|
||||
foreach x {collate1 collate2 collate3} {
|
||||
proc $x {a b} { string compare $a $b }
|
||||
db1 collate $x $x
|
||||
db2 collate $x $x
|
||||
}
|
||||
do_test 2.1 {
|
||||
db1 eval {
|
||||
CREATE TABLE t1(a, b, c COLLATE collate1);
|
||||
CREATE INDEX i1 ON t1(a COLLATE collate2, c, b);
|
||||
}
|
||||
} {}
|
||||
do_test 2.2 {
|
||||
db1 close
|
||||
db2 eval "INSERT INTO t1 VALUES('abc', 'def', 'ghi')"
|
||||
} {}
|
||||
db2 close
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# At one point, the following would cause a collation sequence belonging
|
||||
# to connection [db1] to be invoked by a call to [db2 eval]. Which is a
|
||||
# problem if [db1] has already been closed.
|
||||
#
|
||||
forcedelete test.db test.db2
|
||||
sqlite3 db1 test.db
|
||||
sqlite3 db2 test.db
|
||||
|
||||
proc mycollate_db1 {a b} {set ::invoked_mycollate_db1 1 ; string compare $a $b}
|
||||
proc mycollate_db2 {a b} {string compare $a $b}
|
||||
|
||||
db1 collate mycollate mycollate_db1
|
||||
db2 collate mycollate mycollate_db2
|
||||
|
||||
do_test 2.3 {
|
||||
set ::invoked_mycollate_db1 0
|
||||
db1 eval {
|
||||
CREATE TABLE t1(a COLLATE mycollate, CHECK (a IN ('one', 'two', 'three')));
|
||||
INSERT INTO t1 VALUES('one');
|
||||
}
|
||||
db1 close
|
||||
set ::invoked_mycollate_db1
|
||||
} {1}
|
||||
do_test 2.4 {
|
||||
set ::invoked_mycollate_db1 0
|
||||
db2 eval {
|
||||
INSERT INTO t1 VALUES('two');
|
||||
}
|
||||
db2 close
|
||||
set ::invoked_mycollate_db1
|
||||
} {0}
|
||||
|
||||
sqlite3_enable_shared_cache $::enable_shared_cache
|
||||
finish_test
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user