diff options
author | drh <> | 2023-02-02 16:30:32 +0000 |
---|---|---|
committer | drh <> | 2023-02-02 16:30:32 +0000 |
commit | 2dd3b645b67ad9e90b79832a977dcfd00a7b93f0 (patch) | |
tree | eb12c73fceacf97e28e4c53850582b362ad8a261 /src/resolve.c | |
parent | 6f31eac7d857ab8215707433e5f4196be73c5ba8 (diff) | |
download | sqlite-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.c | 15 |
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; } |