diff options
author | drh <drh@noemail.net> | 2013-08-02 14:18:18 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2013-08-02 14:18:18 +0000 |
commit | 1e7d43c97718ba62d2afe9caeac65bbfa6b056e5 (patch) | |
tree | f941d10a1fd0c97cd6f6db6ee4a299f700f6c234 | |
parent | 3bf0ac17095ac5e8a34b5918c7c675f3ce77e717 (diff) | |
download | sqlite-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-- | manifest | 16 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | src/resolve.c | 19 | ||||
-rw-r--r-- | test/check.test | 6 | ||||
-rw-r--r-- | test/index6.test | 10 |
5 files changed, 39 insertions, 14 deletions
@@ -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 |