mirror of https://github.com/sqlite/sqlite
Show the preferred schema table names in the output of "PRAGMA table_list".
FossilOrigin-Name: 9147390d9885a37a62edc1058f313434627f1b59965c890877d2cb119e355c78
This commit is contained in:
parent
06b7281c94
commit
a4a871c286
24
manifest
24
manifest
|
@ -1,5 +1,5 @@
|
|||
C Change\sa\sbranch\smade\sunreachable\sby\sthe\sprevious\scheck-in\sinto\san\sassert().
|
||||
D 2021-11-04T11:34:04.310
|
||||
C Show\sthe\spreferred\sschema\stable\snames\sin\sthe\soutput\sof\s"PRAGMA\stable_list".
|
||||
D 2021-11-04T14:04:20.888
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
|
@ -483,7 +483,7 @@ F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca
|
|||
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
|
||||
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
|
||||
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
|
||||
F src/alter.c 92994fddf134fed3daf7d91d9626b45bedc46fe07891ebbd9b5baa01addf6a68
|
||||
F src/alter.c 23743384e59f9d36df870ce41adfdf7934fd0adb619d7fa6fd1aac77c28a7533
|
||||
F src/analyze.c 7518b99e07c5494111fe3bd867f28f804b6c5c1ad0703ec3d116de9bab3fa516
|
||||
F src/attach.c e3f9d9a2a4a844750f3f348f37afb244535f21382cbfcd840152cb21cb41cfaf
|
||||
F src/auth.c f4fa91b6a90bbc8e0d0f738aa284551739c9543a367071f55574681e0f24f8cf
|
||||
|
@ -493,7 +493,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
|
|||
F src/btree.c 2c8a52a7fd84b1aec4a79e7861b6368aecbf011a43247cc7d9a2946c7f0ae5ea
|
||||
F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
|
||||
F src/btreeInt.h ee9348c4cb9077243b049edc93a82c1f32ca48baeabf2140d41362b9f9139ff7
|
||||
F src/build.c 967d3ab8940879ed58f4fa1a50adcab8ce38d92abfd96ae31bee5e50adef5c19
|
||||
F src/build.c d82604122cb369fe6597cfe3b9b69bbaec4df9f31517e9c3f7894cd4bf0cd042
|
||||
F src/callback.c 106b585da1edd57d75fa579d823a5218e0bf37f191dbf7417eeb4a8a9a267dbc
|
||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||
F src/ctime.c 8159d5f706551861c18ec6c8f6bdf105e15ea00367f05d9ab65d31a1077facc1
|
||||
|
@ -542,7 +542,7 @@ F src/parse.y 0bd7971a7489bbf6c3726f1b50da6e508bdff8fa493e9cc3f5a96b12cbb2361e
|
|||
F src/pcache.c 084e638432c610f95aea72b8509f0845d2791293f39d1b82f0c0a7e089c3bb6b
|
||||
F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
|
||||
F src/pcache1.c 54881292a9a5db202b2c0ac541c5e3ef9a5e8c4f1c1383adb2601d5499a60e65
|
||||
F src/pragma.c c5fc9c849baa32e716c5ed1ae55237913461fffd886dba4380e31132ca960ed6
|
||||
F src/pragma.c c536665ce8431c8b1efbf7e0a5c01852f49f7bf28f1954f8118b2d28e4a3797f
|
||||
F src/pragma.h 87330ed2fbfa2a1274de93ca0ab850fba336189228cb256089202c3b52766fad
|
||||
F src/prepare.c 7520a371f1de8a53e3023eba75bc0d3473196833c6363d285cad8d002eabef0b
|
||||
F src/printf.c 5901672228f305f7d493cbc4e7d76a61a5caecdbc1cd06b1f9ec42ea4265cf8d
|
||||
|
@ -554,7 +554,7 @@ F src/shell.c.in f8854bcb0d14707d661732698d5210d7f01694000c46e8014b323ad18f575be
|
|||
F src/sqlite.h.in 99786216caf1c57aa3d70f95a7f84566dff6a9eeb50174799ea3b387eafd2a22
|
||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||
F src/sqlite3ext.h d8f6f67ae9ad990a70dd03c093bcdc8883e159ff4bfd16a496f8fb80c6840b5a
|
||||
F src/sqliteInt.h 26c7c88de66fb2259f309dd487fa2ececde6173b365348fa213e189136e950f7
|
||||
F src/sqliteInt.h c280f33f023f87864fa660925f5d5cb49ccfc82eea223fec4e37177c86a26b5a
|
||||
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
|
||||
F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
|
||||
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
||||
|
@ -615,13 +615,13 @@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
|
|||
F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
|
||||
F src/tokenize.c bae853ad129d1129c063de8630a3e99e306283bc40146f359b1bb91be2c08f1e
|
||||
F src/treeview.c 9dfdb7ff7f6645d0a6458dbdf4ffac041c071c4533a6db8bb6e502b979ac67bc
|
||||
F src/trigger.c 3f612ce5f0858b6c23460a3c799d01f408b49b0b29d931d8b8e6fc224a8667de
|
||||
F src/trigger.c 2ef56f0b7b75349a5557d0604b475126329c2e1a02432e7d49c4c710613e8254
|
||||
F src/update.c 69c4c10bc6873a80c0a77cb578f9fc60ee90003d03f9530bc3370fa24615772d
|
||||
F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937
|
||||
F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
|
||||
F src/util.c 30df8356e231dad33be10bb27897655002668343280004ba28c734489414a167
|
||||
F src/vacuum.c 6c38ddc52f0619865c91dae9c441d4d48bf3040d7dc1bc5b22da1e45547ed0b3
|
||||
F src/vdbe.c 460bed0a86aeee2269c8d8ae06fa26ac71302e0c36acaffddfc3ffd0b2bb489d
|
||||
F src/vdbe.c f2b30e312d2dc69d429998f17fab74298a4d9ed8c6d57c0d23d0284414c6ea1b
|
||||
F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
|
||||
F src/vdbeInt.h 38206c8dd6b60ff03d9fd4f626b1b4fd0eef7cdc44f2fc2c1973b0f932a3f26b
|
||||
F src/vdbeapi.c 7b83468feb1d42a09d4c2e5241a3eaa3d1f138e289a843cba9fd3f1dad95ca67
|
||||
|
@ -631,7 +631,7 @@ F src/vdbemem.c 71a449c57be10a66a8a5620e5c5a67ebb9ca70121556dc631ffd4c4458708d8c
|
|||
F src/vdbesort.c 513b481c8bab4a6578c92194a60cf3bc3b48736e4a53f8d2d7918121c5b594e7
|
||||
F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf823
|
||||
F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c
|
||||
F src/vtab.c 66d76837d7e30a301954caa0a52fef458b9530aae9d4a063bf7decd0bbb5a9e6
|
||||
F src/vtab.c 721f0dffc4d0a7b40ec6d07fd4e071005aed6aa2f55360850bbf11a80c273cb8
|
||||
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
||||
F src/wal.c 6ae14d4797f31c67fc2be659d24fbc6e1a6f5f423bdfb5ef831ea171bce42320
|
||||
F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
|
||||
|
@ -1930,7 +1930,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P 005a8642773556825fe4c5d0b2c12517d35289308a30df0151ef7f080acb0172
|
||||
R ad439cb6de03d60098cfb15c4c6d5c5f
|
||||
P 685a987c9afd1c30629c36f1ffb5e349eb2e26182837523036b916c6f81632c4
|
||||
R 75a1322f18e0eab7038f73fd329f31fc
|
||||
U drh
|
||||
Z 3ac3a88921e3dc242eca758dc886565c
|
||||
Z f3e329fd514f41aaa80c4252f41326cd
|
||||
|
|
|
@ -1 +1 @@
|
|||
685a987c9afd1c30629c36f1ffb5e349eb2e26182837523036b916c6f81632c4
|
||||
9147390d9885a37a62edc1058f313434627f1b59965c890877d2cb119e355c78
|
20
src/alter.c
20
src/alter.c
|
@ -60,7 +60,7 @@ static void renameTestSchema(
|
|||
pParse->colNamesSet = 1;
|
||||
sqlite3NestedParse(pParse,
|
||||
"SELECT 1 "
|
||||
"FROM \"%w\"." DFLT_SCHEMA_TABLE " "
|
||||
"FROM \"%w\"." LEGACY_SCHEMA_TABLE " "
|
||||
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
|
||||
" AND sql NOT LIKE 'create virtual%%'"
|
||||
" AND sqlite_rename_test(%Q, sql, type, name, %d, %Q, %d)=NULL ",
|
||||
|
@ -71,7 +71,7 @@ static void renameTestSchema(
|
|||
if( bTemp==0 ){
|
||||
sqlite3NestedParse(pParse,
|
||||
"SELECT 1 "
|
||||
"FROM temp." DFLT_SCHEMA_TABLE " "
|
||||
"FROM temp." LEGACY_SCHEMA_TABLE " "
|
||||
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
|
||||
" AND sql NOT LIKE 'create virtual%%'"
|
||||
" AND sqlite_rename_test(%Q, sql, type, name, 1, %Q, %d)=NULL ",
|
||||
|
@ -89,14 +89,14 @@ static void renameTestSchema(
|
|||
*/
|
||||
static void renameFixQuotes(Parse *pParse, const char *zDb, int bTemp){
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE \"%w\"." DFLT_SCHEMA_TABLE
|
||||
"UPDATE \"%w\"." LEGACY_SCHEMA_TABLE
|
||||
" SET sql = sqlite_rename_quotefix(%Q, sql)"
|
||||
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
|
||||
" AND sql NOT LIKE 'create virtual%%'" , zDb, zDb
|
||||
);
|
||||
if( bTemp==0 ){
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE temp." DFLT_SCHEMA_TABLE
|
||||
"UPDATE temp." LEGACY_SCHEMA_TABLE
|
||||
" SET sql = sqlite_rename_quotefix('temp', sql)"
|
||||
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
|
||||
" AND sql NOT LIKE 'create virtual%%'"
|
||||
|
@ -214,7 +214,7 @@ void sqlite3AlterRenameTable(
|
|||
/* Rewrite all CREATE TABLE, INDEX, TRIGGER or VIEW statements in
|
||||
** the schema to use the new table name. */
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
|
||||
"UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
|
||||
"sql = sqlite_rename_table(%Q, type, name, sql, %Q, %Q, %d) "
|
||||
"WHERE (type!='index' OR tbl_name=%Q COLLATE nocase)"
|
||||
"AND name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
|
||||
|
@ -224,7 +224,7 @@ void sqlite3AlterRenameTable(
|
|||
/* Update the tbl_name and name columns of the sqlite_schema table
|
||||
** as required. */
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE %Q." DFLT_SCHEMA_TABLE " SET "
|
||||
"UPDATE %Q." LEGACY_SCHEMA_TABLE " SET "
|
||||
"tbl_name = %Q, "
|
||||
"name = CASE "
|
||||
"WHEN type='table' THEN %Q "
|
||||
|
@ -413,7 +413,7 @@ void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
|
|||
assert( IsOrdinaryTable(pTab) );
|
||||
assert( IsOrdinaryTable(pNew) );
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
|
||||
"UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
|
||||
"sql = printf('%%.%ds, ',sql) || %Q"
|
||||
" || substr(sql,1+length(printf('%%.%ds',sql))) "
|
||||
"WHERE type = 'table' AND name = %Q",
|
||||
|
@ -647,7 +647,7 @@ void sqlite3AlterRenameColumn(
|
|||
assert( pNew->n>0 );
|
||||
bQuote = sqlite3Isquote(pNew->z[0]);
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
|
||||
"UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
|
||||
"sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d, %d) "
|
||||
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X' "
|
||||
" AND (type != 'index' OR tbl_name = %Q)",
|
||||
|
@ -657,7 +657,7 @@ void sqlite3AlterRenameColumn(
|
|||
);
|
||||
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE temp." DFLT_SCHEMA_TABLE " SET "
|
||||
"UPDATE temp." LEGACY_SCHEMA_TABLE " SET "
|
||||
"sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d, 1) "
|
||||
"WHERE type IN ('trigger', 'view')",
|
||||
zDb, pTab->zName, iCol, zNew, bQuote
|
||||
|
@ -2138,7 +2138,7 @@ void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, const Token *pName){
|
|||
renameTestSchema(pParse, zDb, iDb==1, "", 0);
|
||||
renameFixQuotes(pParse, zDb, iDb==1);
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
|
||||
"UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
|
||||
"sql = sqlite_drop_column(%d, sql, %d) "
|
||||
"WHERE (type=='table' AND tbl_name=%Q COLLATE nocase)"
|
||||
, zDb, iDb, iCol, pTab->zName
|
||||
|
|
48
src/build.c
48
src/build.c
|
@ -387,17 +387,17 @@ Table *sqlite3FindTable(sqlite3 *db, const char *zName, const char *zDatabase){
|
|||
p = sqlite3HashFind(&db->aDb[i].pSchema->tblHash, zName);
|
||||
if( p==0 && sqlite3StrNICmp(zName, "sqlite_", 7)==0 ){
|
||||
if( i==1 ){
|
||||
if( sqlite3StrICmp(zName+7, &ALT_TEMP_SCHEMA_TABLE[7])==0
|
||||
|| sqlite3StrICmp(zName+7, &ALT_SCHEMA_TABLE[7])==0
|
||||
|| sqlite3StrICmp(zName+7, &DFLT_SCHEMA_TABLE[7])==0
|
||||
if( sqlite3StrICmp(zName+7, &PREFERRED_TEMP_SCHEMA_TABLE[7])==0
|
||||
|| sqlite3StrICmp(zName+7, &PREFERRED_SCHEMA_TABLE[7])==0
|
||||
|| sqlite3StrICmp(zName+7, &LEGACY_SCHEMA_TABLE[7])==0
|
||||
){
|
||||
p = sqlite3HashFind(&db->aDb[1].pSchema->tblHash,
|
||||
DFLT_TEMP_SCHEMA_TABLE);
|
||||
LEGACY_TEMP_SCHEMA_TABLE);
|
||||
}
|
||||
}else{
|
||||
if( sqlite3StrICmp(zName+7, &ALT_SCHEMA_TABLE[7])==0 ){
|
||||
if( sqlite3StrICmp(zName+7, &PREFERRED_SCHEMA_TABLE[7])==0 ){
|
||||
p = sqlite3HashFind(&db->aDb[i].pSchema->tblHash,
|
||||
DFLT_SCHEMA_TABLE);
|
||||
LEGACY_SCHEMA_TABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -415,11 +415,11 @@ Table *sqlite3FindTable(sqlite3 *db, const char *zName, const char *zDatabase){
|
|||
if( p ) break;
|
||||
}
|
||||
if( p==0 && sqlite3StrNICmp(zName, "sqlite_", 7)==0 ){
|
||||
if( sqlite3StrICmp(zName+7, &ALT_SCHEMA_TABLE[7])==0 ){
|
||||
p = sqlite3HashFind(&db->aDb[0].pSchema->tblHash, DFLT_SCHEMA_TABLE);
|
||||
}else if( sqlite3StrICmp(zName+7, &ALT_TEMP_SCHEMA_TABLE[7])==0 ){
|
||||
if( sqlite3StrICmp(zName+7, &PREFERRED_SCHEMA_TABLE[7])==0 ){
|
||||
p = sqlite3HashFind(&db->aDb[0].pSchema->tblHash, LEGACY_SCHEMA_TABLE);
|
||||
}else if( sqlite3StrICmp(zName+7, &PREFERRED_TEMP_SCHEMA_TABLE[7])==0 ){
|
||||
p = sqlite3HashFind(&db->aDb[1].pSchema->tblHash,
|
||||
DFLT_TEMP_SCHEMA_TABLE);
|
||||
LEGACY_TEMP_SCHEMA_TABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -515,6 +515,22 @@ Table *sqlite3LocateTableItem(
|
|||
return sqlite3LocateTable(pParse, flags, p->zName, zDb);
|
||||
}
|
||||
|
||||
/*
|
||||
** Return the preferred table name for system tables. Translate legacy
|
||||
** names into the new preferred names, as appropriate.
|
||||
*/
|
||||
const char *sqlite3PreferredTableName(const char *zName){
|
||||
if( sqlite3StrNICmp(zName, "sqlite_", 7)==0 ){
|
||||
if( sqlite3StrICmp(zName+7, &LEGACY_SCHEMA_TABLE[7])==0 ){
|
||||
return PREFERRED_SCHEMA_TABLE;
|
||||
}
|
||||
if( sqlite3StrICmp(zName+7, &LEGACY_TEMP_SCHEMA_TABLE[7])==0 ){
|
||||
return PREFERRED_TEMP_SCHEMA_TABLE;
|
||||
}
|
||||
}
|
||||
return zName;
|
||||
}
|
||||
|
||||
/*
|
||||
** Locate the in-memory structure that describes
|
||||
** a particular index given the name of that index
|
||||
|
@ -913,7 +929,7 @@ char *sqlite3NameFromToken(sqlite3 *db, const Token *pName){
|
|||
*/
|
||||
void sqlite3OpenSchemaTable(Parse *p, int iDb){
|
||||
Vdbe *v = sqlite3GetVdbe(p);
|
||||
sqlite3TableLock(p, iDb, SCHEMA_ROOT, 1, DFLT_SCHEMA_TABLE);
|
||||
sqlite3TableLock(p, iDb, SCHEMA_ROOT, 1, LEGACY_SCHEMA_TABLE);
|
||||
sqlite3VdbeAddOp4Int(v, OP_OpenWrite, 0, SCHEMA_ROOT, iDb, 5);
|
||||
if( p->nTab==0 ){
|
||||
p->nTab = 1;
|
||||
|
@ -2854,7 +2870,7 @@ void sqlite3EndTable(
|
|||
** the information we've collected.
|
||||
*/
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE %Q." DFLT_SCHEMA_TABLE
|
||||
"UPDATE %Q." LEGACY_SCHEMA_TABLE
|
||||
" SET type='%s', name=%Q, tbl_name=%Q, rootpage=#%d, sql=%Q"
|
||||
" WHERE rowid=#%d",
|
||||
db->aDb[iDb].zDbSName,
|
||||
|
@ -3233,7 +3249,7 @@ static void destroyRootPage(Parse *pParse, int iTable, int iDb){
|
|||
** token for additional information.
|
||||
*/
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE %Q." DFLT_SCHEMA_TABLE
|
||||
"UPDATE %Q." LEGACY_SCHEMA_TABLE
|
||||
" SET rootpage=%d WHERE #%d AND rootpage=#%d",
|
||||
pParse->db->aDb[iDb].zDbSName, iTable, r1, r1);
|
||||
#endif
|
||||
|
@ -3368,7 +3384,7 @@ void sqlite3CodeDropTable(Parse *pParse, Table *pTab, int iDb, int isView){
|
|||
** database.
|
||||
*/
|
||||
sqlite3NestedParse(pParse,
|
||||
"DELETE FROM %Q." DFLT_SCHEMA_TABLE
|
||||
"DELETE FROM %Q." LEGACY_SCHEMA_TABLE
|
||||
" WHERE tbl_name=%Q and type!='trigger'",
|
||||
pDb->zDbSName, pTab->zName);
|
||||
if( !isView && !IsVirtual(pTab) ){
|
||||
|
@ -4385,7 +4401,7 @@ void sqlite3CreateIndex(
|
|||
/* Add an entry in sqlite_schema for this index
|
||||
*/
|
||||
sqlite3NestedParse(pParse,
|
||||
"INSERT INTO %Q." DFLT_SCHEMA_TABLE " VALUES('index',%Q,%Q,#%d,%Q);",
|
||||
"INSERT INTO %Q." LEGACY_SCHEMA_TABLE " VALUES('index',%Q,%Q,#%d,%Q);",
|
||||
db->aDb[iDb].zDbSName,
|
||||
pIndex->zName,
|
||||
pTab->zName,
|
||||
|
@ -4571,7 +4587,7 @@ void sqlite3DropIndex(Parse *pParse, SrcList *pName, int ifExists){
|
|||
if( v ){
|
||||
sqlite3BeginWriteOperation(pParse, 1, iDb);
|
||||
sqlite3NestedParse(pParse,
|
||||
"DELETE FROM %Q." DFLT_SCHEMA_TABLE " WHERE name=%Q AND type='index'",
|
||||
"DELETE FROM %Q." LEGACY_SCHEMA_TABLE " WHERE name=%Q AND type='index'",
|
||||
db->aDb[iDb].zDbSName, pIndex->zName
|
||||
);
|
||||
sqlite3ClearStatTables(pParse, iDb, "idx", pIndex->zName);
|
||||
|
|
|
@ -1271,7 +1271,7 @@ void sqlite3Pragma(
|
|||
}
|
||||
sqlite3VdbeMultiLoad(v, 1, "sssiii",
|
||||
db->aDb[ii].zDbSName,
|
||||
pTab->zName,
|
||||
sqlite3PreferredTableName(pTab->zName),
|
||||
zType,
|
||||
pTab->nCol,
|
||||
(pTab->tabFlags & TF_WithoutRowid)!=0,
|
||||
|
@ -1291,7 +1291,7 @@ void sqlite3Pragma(
|
|||
for(i=sqliteHashFirst(&pDb->pSchema->tblHash); i; i=sqliteHashNext(i)){
|
||||
Table *pTab = sqliteHashData(i);
|
||||
sqlite3VdbeMultiLoad(v, 1, "ssiii",
|
||||
pTab->zName,
|
||||
sqlite3PreferredTableName(pTab->zName),
|
||||
0,
|
||||
pTab->szTabRow,
|
||||
pTab->nRowLogEst,
|
||||
|
|
|
@ -1052,11 +1052,25 @@ struct BusyHandler {
|
|||
|
||||
/*
|
||||
** Name of table that holds the database schema.
|
||||
**
|
||||
** The PREFERRED names are used whereever possible. But LEGACY is also
|
||||
** used for backwards compatibility.
|
||||
**
|
||||
** 1. Queries can use either the PREFERRED or the LEGACY names
|
||||
** 2. The sqlite3_set_authorizer() callback uses the LEGACY name
|
||||
** 3. The PRAGMA table_list statement uses the PREFERRED name
|
||||
**
|
||||
** The LEGACY names are stored in the internal symbol hash table
|
||||
** in support of (2). Names are translated using sqlite3PreferredTableName()
|
||||
** for (3). The sqlite3FindTable() function takes care of translating
|
||||
** names for (1).
|
||||
**
|
||||
** Note that "sqlite_temp_schema" can also be called "temp.sqlite_schema".
|
||||
*/
|
||||
#define DFLT_SCHEMA_TABLE "sqlite_master"
|
||||
#define DFLT_TEMP_SCHEMA_TABLE "sqlite_temp_master"
|
||||
#define ALT_SCHEMA_TABLE "sqlite_schema"
|
||||
#define ALT_TEMP_SCHEMA_TABLE "sqlite_temp_schema"
|
||||
#define LEGACY_SCHEMA_TABLE "sqlite_master"
|
||||
#define LEGACY_TEMP_SCHEMA_TABLE "sqlite_temp_master"
|
||||
#define PREFERRED_SCHEMA_TABLE "sqlite_schema"
|
||||
#define PREFERRED_TEMP_SCHEMA_TABLE "sqlite_temp_schema"
|
||||
|
||||
|
||||
/*
|
||||
|
@ -1068,7 +1082,7 @@ struct BusyHandler {
|
|||
** The name of the schema table. The name is different for TEMP.
|
||||
*/
|
||||
#define SCHEMA_TABLE(x) \
|
||||
((!OMIT_TEMPDB)&&(x==1)?DFLT_TEMP_SCHEMA_TABLE:DFLT_SCHEMA_TABLE)
|
||||
((!OMIT_TEMPDB)&&(x==1)?LEGACY_TEMP_SCHEMA_TABLE:LEGACY_SCHEMA_TABLE)
|
||||
|
||||
/*
|
||||
** A convenience macro that returns the number of elements in
|
||||
|
@ -4592,6 +4606,7 @@ Table *sqlite3FindTable(sqlite3*,const char*, const char*);
|
|||
#define LOCATE_VIEW 0x01
|
||||
#define LOCATE_NOERR 0x02
|
||||
Table *sqlite3LocateTable(Parse*,u32 flags,const char*, const char*);
|
||||
const char *sqlite3PreferredTableName(const char*);
|
||||
Table *sqlite3LocateTableItem(Parse*,u32 flags,SrcItem *);
|
||||
Index *sqlite3FindIndex(sqlite3*,const char*, const char*);
|
||||
void sqlite3UnlinkAndDeleteTable(sqlite3*,int,const char*);
|
||||
|
|
|
@ -361,7 +361,7 @@ void sqlite3FinishTrigger(
|
|||
z = sqlite3DbStrNDup(db, (char*)pAll->z, pAll->n);
|
||||
testcase( z==0 );
|
||||
sqlite3NestedParse(pParse,
|
||||
"INSERT INTO %Q." DFLT_SCHEMA_TABLE
|
||||
"INSERT INTO %Q." LEGACY_SCHEMA_TABLE
|
||||
" VALUES('trigger',%Q,%Q,0,'CREATE TRIGGER %q')",
|
||||
db->aDb[iDb].zDbSName, zName,
|
||||
pTrig->table, z);
|
||||
|
@ -675,7 +675,7 @@ void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
|
|||
*/
|
||||
if( (v = sqlite3GetVdbe(pParse))!=0 ){
|
||||
sqlite3NestedParse(pParse,
|
||||
"DELETE FROM %Q." DFLT_SCHEMA_TABLE " WHERE name=%Q AND type='trigger'",
|
||||
"DELETE FROM %Q." LEGACY_SCHEMA_TABLE " WHERE name=%Q AND type='trigger'",
|
||||
db->aDb[iDb].zDbSName, pTrigger->zName
|
||||
);
|
||||
sqlite3ChangeCookie(pParse, iDb);
|
||||
|
|
|
@ -6515,7 +6515,7 @@ case OP_ParseSchema: {
|
|||
}else
|
||||
#endif
|
||||
{
|
||||
zSchema = DFLT_SCHEMA_TABLE;
|
||||
zSchema = LEGACY_SCHEMA_TABLE;
|
||||
initData.db = db;
|
||||
initData.iDb = iDb;
|
||||
initData.pzErrMsg = &p->zErrMsg;
|
||||
|
|
|
@ -485,7 +485,7 @@ void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
|
|||
*/
|
||||
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
|
||||
sqlite3NestedParse(pParse,
|
||||
"UPDATE %Q." DFLT_SCHEMA_TABLE " "
|
||||
"UPDATE %Q." LEGACY_SCHEMA_TABLE " "
|
||||
"SET type='table', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q "
|
||||
"WHERE rowid=#%d",
|
||||
db->aDb[iDb].zDbSName,
|
||||
|
|
Loading…
Reference in New Issue