aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2013-08-02 14:18:18 +0000
committerdrh <drh@noemail.net>2013-08-02 14:18:18 +0000
commit1e7d43c97718ba62d2afe9caeac65bbfa6b056e5 (patch)
treef941d10a1fd0c97cd6f6db6ee4a299f700f6c234
parent3bf0ac17095ac5e8a34b5918c7c675f3ce77e717 (diff)
downloadsqlite-1e7d43c97718ba62d2afe9caeac65bbfa6b056e5.tar.gz
sqlite-1e7d43c97718ba62d2afe9caeac65bbfa6b056e5.zip
Silently ignore database name qualifiers in CHECK constraints and in
partial index WHERE clauses. FossilOrigin-Name: 2e8c845eb5011a2743dace333aa38383588f2080
-rw-r--r--manifest16
-rw-r--r--manifest.uuid2
-rw-r--r--src/resolve.c19
-rw-r--r--test/check.test6
-rw-r--r--test/index6.test10
5 files changed, 39 insertions, 14 deletions
diff --git a/manifest b/manifest
index afa35d682..ba20bcdf0 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sbug\sin\sthe\slogic\sthat\sdetermines\sthe\send\sof\sa\sCREATE\sINDEX\sstatement.\nAdded\sa\sVACUUM\stest\scase\sthat\sexposed\sthe\sbug.
-D 2013-08-01T16:02:40.113
+C Silently\signore\sdatabase\sname\squalifiers\sin\sCHECK\sconstraints\sand\sin\npartial\sindex\sWHERE\sclauses.
+D 2013-08-02T14:18:18.252
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -214,7 +214,7 @@ F src/pragma.c 590c75750d93ec5a1f903e4bb0dc6d2a0845bf8b
F src/prepare.c fa6988589f39af8504a61731614cd4f6ae71554f
F src/printf.c 41c49dac366a3a411190001a8ab495fa8887974e
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
-F src/resolve.c 8b3c7a439cc6ba242e45566284adb72fa770b7c8
+F src/resolve.c 17e670996729ac41aadf6a31f57b4e6f29b3d819
F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
F src/select.c 20369c82dc38eb4a77b458c8f6e353ef550580c9
F src/shell.c 52f975eae87c8338c4dfbf4c2842d2a0971f01fd
@@ -362,7 +362,7 @@ F test/capi3c.test 93d24621c9ff84da9da060f30431e0453db1cdb0
F test/capi3d.test 6d0fc0a86d73f42dd19a7d8b7761ab9bc02277d0
F test/capi3e.test ad90088b18b0367125ff2d4b5400153fd2f99aab
F test/cast.test 4c275cbdc8202d6f9c54a3596701719868ac7dc3
-F test/check.test 2eb93611139a7dfaed3be80067c7dc5ceb5fb287
+F test/check.test 1e9be446eb0bbd47a5f65955802e9632425096ab
F test/close.test 340bd24cc58b16c6bc01967402755027c37eb815
F test/closure01.test dbb28f1ea9eeaf0a53ec5bc0fed352e479def8c7
F test/coalesce.test cee0dccb9fbd2d494b77234bccf9dc6c6786eb91
@@ -589,7 +589,7 @@ F test/index2.test ee83c6b5e3173a3d7137140d945d9a5d4fdfb9d6
F test/index3.test 423a25c789fc8cc51aaf2a4370bbdde2d9e9eed7
F test/index4.test 2983216eb8c86ee62d9ed7cb206b5cc3331c0026
F test/index5.test fc07c14193c0430814e7a08b5da46888ee795c33
-F test/index6.test 3967161678dd5268e6ad1e263cc82e2b8050d055
+F test/index6.test 0005b3093012c6d0f20cc54d9057210221216143
F test/indexedby.test 0e959308707c808515c3a51363f7a9835027108c
F test/indexfault.test 31d4ab9a7d2f6e9616933eb079722362a883eb1d
F test/init.test 15c823093fdabbf7b531fe22cf037134d09587a7
@@ -1104,7 +1104,7 @@ F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
F tool/wherecosttest.c f407dc4c79786982a475261866a161cd007947ae
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P 0c8cfdfae215c95cf167f404a1d346690b28e972
-R 7829f40a29ab8d32821ed080da801961
+P 2e3df0bc900c01286d3ce32c2bbf9e5293973f9b
+R b5d4ae8fe01e42e4e171b69c990dde10
U drh
-Z d181891086829543aa75dfb2ba9cf461
+Z 4a98808a1193d1ac659ec78aea29a043
diff --git a/manifest.uuid b/manifest.uuid
index e50da3aad..ed5e4f79d 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-2e3df0bc900c01286d3ce32c2bbf9e5293973f9b \ No newline at end of file
+2e8c845eb5011a2743dace333aa38383588f2080 \ No newline at end of file
diff --git a/src/resolve.c b/src/resolve.c
index f288ed930..a194a2655 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -240,11 +240,20 @@ static int lookupName(
** resulting in an appropriate error message toward the end of this routine
*/
if( zDb ){
- for(i=0; i<db->nDb; i++){
- assert( db->aDb[i].zName );
- if( sqlite3StrICmp(db->aDb[i].zName,zDb)==0 ){
- pSchema = db->aDb[i].pSchema;
- break;
+ testcase( pNC->ncFlags & NC_PartIdx );
+ testcase( pNC->ncFlags & NC_IsCheck );
+ if( (pNC->ncFlags & (NC_PartIdx|NC_IsCheck))!=0 ){
+ /* Silently ignore database qualifiers inside CHECK constraints and partial
+ ** indices. Do not raise errors because that might break legacy and
+ ** because it does not hurt anything to just ignore the database name. */
+ zDb = 0;
+ }else{
+ for(i=0; i<db->nDb; i++){
+ assert( db->aDb[i].zName );
+ if( sqlite3StrICmp(db->aDb[i].zName,zDb)==0 ){
+ pSchema = db->aDb[i].pSchema;
+ break;
+ }
}
}
}
diff --git a/test/check.test b/test/check.test
index 99b72ac8a..f7ebc2cb4 100644
--- a/test/check.test
+++ b/test/check.test
@@ -451,5 +451,11 @@ do_test 7.8 {
catchsql { INSERT INTO t6 VALUES(12) } db2
} {1 {constraint failed}}
+# 2013-08-02: Silently ignore database name qualifiers in CHECK constraints.
+#
+do_execsql_test 8.1 {
+ CREATE TABLE t810(a, CHECK( main.t810.a>0 ));
+ CREATE TABLE t811(b, CHECK( xyzzy.t811.b BETWEEN 5 AND 10 ));
+} {}
finish_test
diff --git a/test/index6.test b/test/index6.test
index ddd200c40..e9ea570b8 100644
--- a/test/index6.test
+++ b/test/index6.test
@@ -217,4 +217,14 @@ do_execsql_test index6-4.0 {
PRAGMA integrity_check;
} {ok}
+# Silently ignore database name qualifiers in partial indices.
+#
+do_execsql_test index6-5.0 {
+ CREATE INDEX t3b ON t3(b) WHERE xyzzy.t3.b BETWEEN 5 AND 10;
+ /* ^^^^^-- ignored */
+ ANALYZE;
+ SELECT count(*) FROM t3 WHERE t3.b BETWEEN 5 AND 10;
+ SELECT stat+0 FROM sqlite_stat1 WHERE idx='t3b';
+} {6 6}
+
finish_test