aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <>2023-02-02 16:30:32 +0000
committerdrh <>2023-02-02 16:30:32 +0000
commit2dd3b645b67ad9e90b79832a977dcfd00a7b93f0 (patch)
treeeb12c73fceacf97e28e4c53850582b362ad8a261 /src/resolve.c
parent6f31eac7d857ab8215707433e5f4196be73c5ba8 (diff)
downloadsqlite-2dd3b645b67ad9e90b79832a977dcfd00a7b93f0.tar.gz
sqlite-2dd3b645b67ad9e90b79832a977dcfd00a7b93f0.zip
Improved and simplified logic for resolving the various aliases of the schema
table. FossilOrigin-Name: 5c19491c36b9e2128430e4f153bdef48c3f7b6541d44f36044e8fc2921ecc830
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/resolve.c b/src/resolve.c
index d5e639abc..9677f9de9 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -211,20 +211,19 @@ static SQLITE_NOINLINE int isValidSchemaTableName(
Schema *pSchema /* non-NULL if a database qualifier is present */
){
const char *zLegacy;
- const char *zPreferred;
assert( pTab!=0 );
assert( pTab->tnum==1 );
if( sqlite3StrNICmp(zTab, "sqlite_", 7)!=0 ) return 0;
zLegacy = pTab->zName;
- zPreferred = sqlite3PreferredTableName(zLegacy);
- if( sqlite3StrICmp(zTab, zPreferred)==0 ) return 1;
- if( pSchema && strcmp(zLegacy+7, &LEGACY_TEMP_SCHEMA_TABLE[7])==0){
- if( sqlite3StrICmp(zTab+7, &PREFERRED_TEMP_SCHEMA_TABLE[7])==0
- || sqlite3StrICmp(zTab+7, &PREFERRED_SCHEMA_TABLE[7])==0
- || sqlite3StrICmp(zTab+7, &LEGACY_SCHEMA_TABLE[7])==0
- ){
+ if( strcmp(zLegacy+7, &LEGACY_TEMP_SCHEMA_TABLE[7])==0 ){
+ if( sqlite3StrICmp(zTab+7, &PREFERRED_TEMP_SCHEMA_TABLE[7])==0 ){
return 1;
}
+ if( pSchema==0 ) return 0;
+ if( sqlite3StrICmp(zTab+7, &LEGACY_SCHEMA_TABLE[7])==0 ) return 1;
+ if( sqlite3StrICmp(zTab+7, &PREFERRED_SCHEMA_TABLE[7])==0 ) return 1;
+ }else{
+ if( sqlite3StrICmp(zTab+7, &PREFERRED_SCHEMA_TABLE[7])==0 ) return 1;
}
return 0;
}