]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Consolidate the two sqlite3SchemaToIndex() routines. reuse-schema1
authordan <dan@noemail.net>
Tue, 20 Nov 2018 16:02:52 +0000 (16:02 +0000)
committerdan <dan@noemail.net>
Tue, 20 Nov 2018 16:02:52 +0000 (16:02 +0000)
FossilOrigin-Name: dfab7170edf23de33013ea2af2f512ee978a689a6d218f6f490d46e48b9213b3

19 files changed:
manifest
manifest.uuid
src/alter.c
src/auth.c
src/btmutex.c
src/build.c
src/delete.c
src/expr.c
src/insert.c
src/pragma.c
src/prepare.c
src/resolve.c
src/select.c
src/sqliteInt.h
src/trigger.c
src/update.c
src/vdbeblob.c
src/vtab.c
src/where.c

index 81da51bb484f973667aa7052629bc6f4323b5b30..cbf5b5ee67c2bd63c9a5b3f391076f4459419dc6 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sproblem\swith\svirtual\stables\sin\sshared\sschemas.
-D 2018-11-19T20:41:26.113
+C Consolidate\sthe\stwo\ssqlite3SchemaToIndex()\sroutines.
+D 2018-11-20T16:02:52.908
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in b730006b54c990461d864c5387f2e6f13aadb0236804555fb010ed6865a5f058
@@ -440,25 +440,25 @@ F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca
 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
 F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
-F src/alter.c 3e283b5726186d72fa67c972487e2cd5898def7a2e891953c937e3f1b535e5aa
+F src/alter.c f4ba663ee11eaf3a17c0b21a8e377a9e8991627b0afe994fcce8f44faf566669
 F src/analyze.c 09c9684253a328735c63f714e1c50360e977b4020b7b1325d11dd46f2f192123
 F src/attach.c 92b51739a885da8bd84bc9a05485f1e48148bce5c15432f059b45af98fff75cd
-F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df
+F src/auth.c 6ea0bfef8f2d972358f40c349a7ae431649adb3ca2aac73dc2f3b4e8fb4c33b8
 F src/backup.c 78d3cecfbe28230a3a9a1793e2ead609f469be43e8f486ca996006be551857ab
 F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
-F src/btmutex.c aeee7f0458949b8d4a33ffc1a5c4f4a28dd7d5d754385096cb9494655afba02b
+F src/btmutex.c 786ad5319e5a889711043db3136c8b7f58bcdd53327410dd2330d02be1eab69d
 F src/btree.c 3ef104ecae8b1b5f0458be1f5fa7c1ecf25fdc322a9d63bb8151f89eb32d381e
 F src/btree.h febb2e817be499570b7a2e32a9bbb4b607a9234f6b84bb9ae84916d4806e96f2
 F src/btreeInt.h 620ab4c7235f43572cf3ac2ac8723cbdf68073be4d29da24897c7b77dda5fd96
-F src/build.c 6ef4b77f666dc68afa79aba8a5dc65faf9cdb85a6c3ccf64cbce5db6a8a43307
+F src/build.c d31ac32f9fe0e35f3953bd4f287c8d025ad89af6a78697e054ea8d59f07a4577
 F src/callback.c e5031c28f6e8eb2f290298e262eb1eb5f201ef2ae25db54b396882ae2059e944
 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
 F src/ctime.c 109e58d00f62e8e71ee1eb5944ac18b90171c928ab2e082e058056e1137cc20b
 F src/date.c ebe1dc7c8a347117bb02570f1a931c62dd78f4a2b1b516f4837d45b7d6426957
 F src/dbpage.c 135eb3b5e74f9ef74bde5cec2571192c90c86984fa534c88bf4a055076fa19b7
 F src/dbstat.c 3c8bd4e77f0244fd2bd7cc90acf116ad2f8e82d70e536637f35ac2bc99b726f9
-F src/delete.c 326f92e69ffc35e2006f9498b0fc7e1ff6acdb28c6848a4b75c204a51320a2ca
-F src/expr.c ddbc6be9e14869cce303f7a9ceed281e018b08762be9603c07eb1152ad85a8c5
+F src/delete.c 65e16dc1cf64eab1b6761aefbacefc4b983d2f9ed7265f050b88689a271c1741
+F src/expr.c 38c50318213e42b579189a7438a53c19833486ecbe97da9bfac3bd39242a0c56
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c 2c112c00667b3c4668023a000489261d5b72441c67f969b526a1af831d297d96
 F src/func.c 7c288b4ce309b5a8b8473514b88e1f8e69a80134509a8c0db8e39c858e367e7f
@@ -467,7 +467,7 @@ F src/hash.c 931ec82d7e070654a8facb42549bbb3a25720171d73ba94c3d3160580d01ef1f
 F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4
 F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da
 F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
-F src/insert.c 1b72e96ae672c512e8e680594f13ef00d08e6fdd65ac845fa5a445579bf7af37
+F src/insert.c 037e39bd36cef876e376663e3c1fb74b19267b0f13036c304fbb2b01c4aaff05
 F src/legacy.c 134ab3e3fae00a0f67a5187981d6935b24b337bcf0f4b3e5c9fa5763da95bf4e
 F src/loadext.c 448eab53ecdb566a1259ee2d45ebff9c0bc4a2cf393774488775c33e4fbe89bf
 F src/main.c 63ec9559c244c7e10eafc0efe0f66387fc40b8683ba20aeb0422e334f4eb0a52
@@ -499,19 +499,19 @@ F src/parse.y 6840fe7c0b5eb4dd25ee5d075213bc8255ed4c0678d71bfb6744d0520d91c179
 F src/pcache.c 4196eb6ed3bbf00b80596c8e0b4f50e57eb7d890c19fb27a7354306abb7f983d
 F src/pcache.h 072f94d29281cffd99e46c1539849f248c4b56ae7684c1f36626797fee375170
 F src/pcache1.c 716975564c15eb6679e97f734cec1bfd6c16ac3d4010f05f1f8e509fc7d19880
-F src/pragma.c 1c96a1f32407caf1854a5525fc2fcd6228ba4dd44bd20abe8a86d1ab830931fc
+F src/pragma.c f9b6a7f8136a1df3830d3e91e526a43c75a2b1db24795813871fbc86dd683db7
 F src/pragma.h fdd03d78a7497f74a3f652909f945328480089189526841ae829ce7313d98d13
-F src/prepare.c b64a19ee9b0ba1f3a67c4f5d1be308e9f67f8fb07fe90725982dfa9b616d211f
+F src/prepare.c fc8c448c4df0c23d5087e8069a2e03598ed1be9a567c9bc70f49b829e76b61ad
 F src/printf.c 0f1177cf1dd4d7827bf64d840768514ec76409abecaca9e8b577dbd065150381
 F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
-F src/resolve.c d6580c08986e4b42bfc88b37a792ba116b55cc3b8c2e9d42233e453c7a579bed
+F src/resolve.c 23c3d8c311b71da12b57be43b27e84a97b500dabda4eabb74d2bbc750a5ab7c1
 F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93
-F src/select.c 594fd2e0a13c25921b59898874a494263f6aeb47f136aa9fcb53f0cfc6f159cd
+F src/select.c 88f6aab4f5f0d1c13fef55d07ff6dcfb8d44aec8b65ca8e7038ef3f889f9e324
 F src/shell.c.in 91ccfc85bcd28015c5db01449275e7fba3e9f97aa2533b53b73e81906eebaac0
 F src/sqlite.h.in 3baffc1c299e0c10dc63f31ce4b322d14548dae6ac73b0719ba505b37966bac3
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 960f1b86c3610fa23cb6a267572a97dcf286e77aa0dd3b9b23292ffaa1ea8683
-F src/sqliteInt.h aae85408ebe7cd65ffb6ca3365fd086c1f52e3e73149fe9df16685dd68cc3a70
+F src/sqliteInt.h a499dea6afe4123faf1ef1461b9b23738b6578009a648bbab0fab1e7c2e696ad
 F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
 F src/status.c b651e68af3cb859e4083c79e0e7177e2aeb35ed23e3892d7bbe5b732d38bf2b9
 F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
@@ -571,8 +571,8 @@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
 F src/tokenize.c 9e781e1ca80eefe7b5d6a9e2cd5c678c847da55fd6f093781fad7950934d4c83
 F src/treeview.c 7b12ac059de54c939b6eb0dbffc9410c29c80d2470cee5cbe07d5ff9ea2d9253
-F src/trigger.c dc20aaa75197d06cef02529cc97bada3d3e830065828b693f66c00754863724a
-F src/update.c 6659f40af73ac786b788b35c98038579052a80bcd8784b79dfd33a6710a0a6bc
+F src/trigger.c e143e102daa1791d990a447ef4bfb0fb5f6a502bebf98fee7f868e66f6664c38
+F src/update.c 792c3c1ccef5794a63a9b2cb0fc183b9357dd64b3614c7aa1460dd3becd177c5
 F src/upsert.c 0dd81b40206841814d46942a7337786932475f085716042d0cb2fc7791bf8ca4
 F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5
 F src/util.c d9eb0a6c4aae1b00a7369eadd7ca0bbe946cb4c953b6751aa20d357c2f482157
@@ -582,16 +582,16 @@ F src/vdbe.h fda06d544a79e684797e7d433e5c410e563f8d3897098826e4c23cdb3be4193e
 F src/vdbeInt.h edfb25fc654f9d6d31ba47b161326f984f897e4b6e49cb8e9ee8708215023e0b
 F src/vdbeapi.c ecccfce6f614c33a95952efeec969d163e8349eac314ee2b7b163eda921b5eb0
 F src/vdbeaux.c 5e83d8a9e6513d14f17810c70a87d4876bf9f2b55eb78bec8571fe37a37ade1a
-F src/vdbeblob.c 377746310196c8c1751049349716630ef3e4df54d1f08f863009b70971f52945
+F src/vdbeblob.c bef4668e92c33b47933aa24ffa9a982617f59a5330d927fd5d33ab42bc3e01c6
 F src/vdbemem.c 7b3305bc4a5139f4536ac9b5f61da0f915e49d2e3fdfa87dfdfa9d7aba8bc1e9
 F src/vdbesort.c 90aad5a92608f2dd771c96749beabdb562c9d881131a860a7a5bccf66dc3be7f
 F src/vdbetrace.c 79d6dbbc479267b255a7de8080eee6e729928a0ef93ed9b0bfa5618875b48392
-F src/vtab.c bad08f463f8aa4bb86e9e2be322394bbe23b02db8cc6843d038306ccef831676
+F src/vtab.c 9b380532e2e9fa5c559e2f59b702c4e87b32a6146a9e273e299315547fbd705c
 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
 F src/wal.c 3f4f653daf234fe713edbcbca3fec2350417d159d28801feabc702a22c4e213f
 F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a
 F src/walker.c fb94aadc9099ff9c6506d0a8b88d51266005bcaa265403f3d7caf732a562eb66
-F src/where.c 9cf0501bb13f9ba6e3135d38d83dd55ce4772a298a9686b84c8ce02402591fed
+F src/where.c fded04f3d811ced6281f7d24cc2d03d9fc4d5ce403d616cfef7dbcccbdbaf4c3
 F src/whereInt.h f125f29fca80890768e0b2caa14f95db74b2dacd3a122a168f97aa7b64d6968f
 F src/wherecode.c c45f03aefc2266b990df0fc4d7acc4e27f56f881f4fc0fc355b7cbc4d7189da5
 F src/whereexpr.c 833b58f9d34fa8118bf671b695a9929028707e13bf7e16e932d80c9c64d5f0a3
@@ -1779,7 +1779,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 5328f89951b34c9543a7289efd830acb252422a976819eadd036725c1553ec0f
-R 464926b3663738e00ae8bff21674de23
+P 84be9220db4adaf4873cf38d7259a321900608d63be4d08603e74f8b7ae120ac
+R 6da38ba0540b642f9b1cc73aec9a5fb5
 U dan
-Z 562020b0df1fe8643da9b450b53b8ef5
+Z 47b1db7061e0aabc455eabfcd73eae34
index 978a74c8923e7fd3b2c1f558e5272dc55b60fd48..47c7f99e14648a0e28689c35735d2101a290029e 100644 (file)
@@ -1 +1 @@
-84be9220db4adaf4873cf38d7259a321900608d63be4d08603e74f8b7ae120ac
\ No newline at end of file
+dfab7170edf23de33013ea2af2f512ee978a689a6d218f6f490d46e48b9213b3
\ No newline at end of file
index ed781f8533b5485ec5605a464ae5ff9c287dc39e..aa74d79d1a47dfea66684f71a7ab7dccb45823d9 100644 (file)
@@ -106,7 +106,7 @@ void sqlite3AlterRenameTable(
 
   pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
   if( !pTab ) goto exit_rename_table;
-  iDb = sqlite3SchemaToIndex2(pParse->db, pTab->pSchema, 0);
+  iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema, 0);
   zDb = db->aDb[iDb].zDbSName;
   db->mDbFlags |= DBFLAG_PreferBuiltin;
 
@@ -276,7 +276,7 @@ void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
   assert( pNew );
 
   assert( sqlite3BtreeHoldsAllMutexes(db) );
-  iDb = sqlite3SchemaToIndex2(db, pNew->pSchema, 0);
+  iDb = sqlite3SchemaToIndex(db, pNew->pSchema, 0);
   zDb = db->aDb[iDb].zDbSName;
   zTab = &pNew->zName[16];  /* Skip the "sqlite_altertab_" prefix on the name */
   pCol = &pNew->aCol[pNew->nCol-1];
@@ -429,7 +429,7 @@ void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
   }
 
   assert( pTab->addColOffset>0 );
-  iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, 0);
+  iDb = sqlite3SchemaToIndex(db, pTab->pSchema, 0);
 
   /* Put a copy of the Table struct in Parse.pNewTable for the
   ** sqlite3AddColumn() function and friends to modify.  But modify
@@ -530,7 +530,7 @@ void sqlite3AlterRenameColumn(
   if( SQLITE_OK!=isRealTable(pParse, pTab) ) goto exit_rename_column;
 
   /* Which schema holds the table to be altered */  
-  iSchema = sqlite3SchemaToIndex2(db, pTab->pSchema, 0);
+  iSchema = sqlite3SchemaToIndex(db, pTab->pSchema, 0);
   assert( iSchema>=0 );
   zDb = db->aDb[iSchema].zDbSName;
 
@@ -1058,13 +1058,13 @@ static int renameResolveTrigger(Parse *pParse, const char *zDb){
   sNC.pParse = pParse;
   assert( pNew->pTabSchema );
   pParse->pTriggerTab = sqlite3FindTable(db, pNew->table, 
-      db->aDb[sqlite3SchemaToIndex2(db, pNew->pTabSchema, 0)].zDbSName
+      db->aDb[sqlite3SchemaToIndex(db, pNew->pTabSchema, 0)].zDbSName
   );
   pParse->eTriggerOp = pNew->op;
   /* ALWAYS() because if the table of the trigger does not exist, the
   ** error would have been hit before this point */
   if( ALWAYS(pParse->pTriggerTab) ){
-    int iDb = sqlite3SchemaToIndex2(db, pParse->pTriggerTab->pSchema, 0);
+    int iDb = sqlite3SchemaToIndex(db, pParse->pTriggerTab->pSchema, 0);
     rc = sqlite3ViewGetColumnNames(pParse, iDb, pParse->pTriggerTab);
   }
 
@@ -1083,7 +1083,7 @@ static int renameResolveTrigger(Parse *pParse, const char *zDb){
       if( pTarget==0 ){
         rc = SQLITE_ERROR;
       }else{
-        int iDb = sqlite3SchemaToIndex2(db, pTarget->pSchema, 0);
+        int iDb = sqlite3SchemaToIndex(db, pTarget->pSchema, 0);
         if( SQLITE_OK==(rc = sqlite3ViewGetColumnNames(pParse, iDb, pTarget)) ){
           SrcList sSrc;
           memset(&sSrc, 0, sizeof(sSrc));
@@ -1579,7 +1579,7 @@ static void renameTableTest(
           rc = renameResolveTrigger(&sParse, bTemp ? 0 : zDb);
         }
         if( rc==SQLITE_OK ){
-          int i1 = sqlite3SchemaToIndex2(db, sParse.pNewTrigger->pTabSchema, 0);
+          int i1 = sqlite3SchemaToIndex(db, sParse.pNewTrigger->pTabSchema, 0);
           int i2 = sqlite3FindDbName(db, zDb);
           if( i1==i2 ) sqlite3_result_int(context, 1);
         }
index 6fcdce251dc731ee3c37ea6c5a5bfd00ea6d135f..953a8b566098f13ab750ab1c116b28b74d8b8132 100644 (file)
@@ -153,7 +153,7 @@ void sqlite3AuthRead(
   assert( pExpr->op==TK_COLUMN || pExpr->op==TK_TRIGGER );
   assert( !IN_RENAME_OBJECT || db->xAuth==0 );
   if( db->xAuth==0 ) return;
-  iDb = sqlite3SchemaToIndex(pParse->db, pSchema);
+  iDb = sqlite3SchemaToIndex(pParse->db, pSchema, 0);      /* TODO! */
   if( iDb<0 ){
     /* An attempt to read a column out of a subquery or other
     ** temporary table. */
index 1b8ca43a67eae8bb26b988f70cb7d9c9fe29aa96..a606e30e5b12a0d0754a6ec89cbcca79bde3f878 100644 (file)
@@ -253,7 +253,7 @@ int sqlite3SchemaMutexHeld(sqlite3 *db, int iDb, Schema *pSchema){
   Btree *p;
   assert( db!=0 );
   if( pSchema && (db->openFlags & SQLITE_OPEN_REUSE_SCHEMA) ) return 1;
-  if( pSchema ) iDb = sqlite3SchemaToIndex2(db, pSchema, 0);
+  if( pSchema ) iDb = sqlite3SchemaToIndex(db, pSchema, 0);
   assert( iDb>=0 && iDb<db->nDb );
   if( !sqlite3_mutex_held(db->mutex) ) return 0;
   if( iDb==1 ) return 1;
index 263669720d0b7223bbfdb422d76cfc6b34af2cad..548cd719d58989755562f5b0f864f90aeaf638d1 100644 (file)
@@ -404,7 +404,7 @@ Table *sqlite3LocateTableItem(
       p->zDatabase = sqlite3DbStrDup(pParse->db, zDb);
     }
   }else if( p->pSchema ){
-    int iDb = sqlite3SchemaToIndex2(pParse->db, p->pSchema, 0);
+    int iDb = sqlite3SchemaToIndex(pParse->db, p->pSchema, 0);
     zDb = pParse->db->aDb[iDb].zDbSName;
   }else{
     zDb = p->zDatabase;
@@ -2004,7 +2004,7 @@ void sqlite3EndTable(
     }
   }
 
-  iDb = sqlite3SchemaToIndex2(db, p->pSchema, 0);
+  iDb = sqlite3SchemaToIndex(db, p->pSchema, 0);
 
 #ifndef SQLITE_OMIT_CHECK
   /* Resolve names in all CHECK constraint expressions.
@@ -2224,7 +2224,7 @@ void sqlite3CreateView(
   p = pParse->pNewTable;
   if( p==0 || pParse->nErr ) goto create_view_fail;
   sqlite3TwoPartName(pParse, pName1, pName2, &pName);
-  iDb = sqlite3SchemaToIndex2(db, p->pSchema, 0);
+  iDb = sqlite3SchemaToIndex(db, p->pSchema, 0);
   sqlite3FixInit(&sFix, pParse, iDb, "view", pName);
   if( sqlite3FixSelect(&sFix, pSelect) ) goto create_view_fail;
 
@@ -2541,7 +2541,7 @@ static void destroyTable(Parse *pParse, Table *pTab){
     if( iLargest==0 ){
       return;
     }else{
-      int iDb = sqlite3SchemaToIndex2(pParse->db, pTab->pSchema, 0);
+      int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema, 0);
       assert( iDb>=0 && iDb<pParse->db->nDb );
       destroyRootPage(pParse, iLargest, iDb);
       iDestroyed = iLargest;
@@ -2668,7 +2668,7 @@ void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView, int noErr){
     if( noErr ) sqlite3CodeVerifyNamedSchema(pParse, pName->a[0].zDatabase);
     goto exit_drop_table;
   }
-  iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, 0);
+  iDb = sqlite3SchemaToIndex(db, pTab->pSchema, 0);
   assert( iDb>=0 && iDb<db->nDb );
   sqlite3SchemaWritable(pParse, iDb);
 
@@ -3133,7 +3133,7 @@ void sqlite3CreateIndex(
     assert( pStart==0 );
     pTab = pParse->pNewTable;
     if( !pTab ) goto exit_create_index;
-    iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, 0);
+    iDb = sqlite3SchemaToIndex(db, pTab->pSchema, 0);
   }
   pDb = &db->aDb[iDb];
 
@@ -3682,7 +3682,7 @@ void sqlite3DropIndex(Parse *pParse, SrcList *pName, int ifExists){
       "or PRIMARY KEY constraint cannot be dropped", 0);
     goto exit_drop_index;
   }
-  iDb = sqlite3SchemaToIndex2(db, pIndex->pSchema, 0);
+  iDb = sqlite3SchemaToIndex(db, pIndex->pSchema, 0);
   sqlite3SchemaWritable(pParse, iDb);
 #ifndef SQLITE_OMIT_AUTHORIZATION
   {
index a3dd70d0462383b731c86626ed741aac6c59a3c4..694c0687d1c5c7bdf33c41af59175a8ec6ea25e9 100644 (file)
@@ -318,7 +318,7 @@ void sqlite3DeleteFrom(
   }
 #endif
 
-  iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, pTabList->a[0].zDatabase);
+  iDb = sqlite3SchemaToIndex(db, pTab->pSchema, pTabList->a[0].zDatabase);
   assert( iDb<db->nDb );
 
   /* If pTab is really a view, make sure it has been initialized.
index d473156cfe995c694a48736f3ae9c7774cd60da0..369260b13f95f1994637ee19543f6988814a7101 100644 (file)
@@ -2369,7 +2369,7 @@ int sqlite3FindInIndex(
     pTab = p->pSrc->a[0].pTab;
 
     /* Code an OP_Transaction and OP_TableLock for <table>. */
-    iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, p->pSrc->a[0].zDatabase);
+    iDb = sqlite3SchemaToIndex(db, pTab->pSchema, p->pSrc->a[0].zDatabase);
     sqlite3CodeVerifySchema(pParse, iDb);
     sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
 
index 12347e6d592a30664e7023bf4efac194f6ffb32d..c74d32f8562a2900a283fd16d5b42ab65c3a5622 100644 (file)
@@ -568,7 +568,7 @@ void sqlite3Insert(
   if( pTab==0 ){
     goto insert_cleanup;
   }
-  iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, pTabList->a[0].zDatabase);
+  iDb = sqlite3SchemaToIndex(db, pTab->pSchema, pTabList->a[0].zDatabase);
   assert( iDb<db->nDb );
   if( sqlite3AuthCheck(pParse, SQLITE_INSERT, pTab->zName, 0,
                        db->aDb[iDb].zDbSName) ){
@@ -2285,7 +2285,7 @@ static int xferOptimization(
 #ifdef SQLITE_TEST
   sqlite3_xferopt_count++;
 #endif
-  iDbSrc = sqlite3SchemaToIndex2(db, pSrc->pSchema, pItem->zDatabase);
+  iDbSrc = sqlite3SchemaToIndex(db, pSrc->pSchema, pItem->zDatabase);
   v = sqlite3GetVdbe(pParse);
   sqlite3CodeVerifySchema(pParse, iDbSrc);
   iSrc = pParse->nTab++;
index 575dca5999a20a6264d59a0cf15f6025e8ca96f3..6f3d8f15dad28e791d1763b1529cc20da1665a78 100644 (file)
@@ -1088,7 +1088,7 @@ void sqlite3Pragma(
     if( pTab ){
       int i, k;
       int nHidden = 0;
-      int iTabDb = sqlite3SchemaToIndex2(db, pTab->pSchema, zDb);
+      int iTabDb = sqlite3SchemaToIndex(db, pTab->pSchema, zDb);
       Column *pCol;
       Index *pPk = sqlite3PrimaryKeyIndex(pTab);
       pParse->nMem = 7;
index 57aacf6af3715cdc44129490018435a4bccef7de..a28e0081453f52b4b5c82dad646193ccd3b04ec9 100644 (file)
@@ -508,8 +508,18 @@ static void schemaIsValid(Parse *pParse){
 ** If the same database is attached more than once, the first
 ** attached database is returned.
 */
-int sqlite3SchemaToIndex(sqlite3 *db, Schema *pSchema){
-  int i = -1000000;
+int sqlite3SchemaToIndex(sqlite3 *db, Schema *pSchema, const char *zDb){
+  int i;
+
+  assert( sqlite3_mutex_held(db->mutex) );
+  if( zDb ){
+    int i;
+    for(i=0; i<db->nDb; i++){
+      if( i==1 ) continue;
+      if( sqlite3StrICmp(zDb, db->aDb[i].zDbSName)==0 ) return i;
+    }
+    assert( sqlite3StrICmp(zDb, "temp")==0 );
+  }
 
   /* If pSchema is NULL, then return -1000000. This happens when code in 
   ** expr.c is trying to resolve a reference to a transient table (i.e. one
@@ -521,7 +531,6 @@ int sqlite3SchemaToIndex(sqlite3 *db, Schema *pSchema){
   ** more likely to cause a segfault than -1 (of course there are assert()
   ** statements too, but it never hurts to play the odds).
   */
-  assert( sqlite3_mutex_held(db->mutex) );
   if( pSchema ){
     for(i=0; 1; i++){
       assert( i<db->nDb );
@@ -530,21 +539,12 @@ int sqlite3SchemaToIndex(sqlite3 *db, Schema *pSchema){
       }
     }
     assert( i>=0 && i<db->nDb );
+  }else{
+    i = -1000000;
   }
   return i;
 }
 
-int sqlite3SchemaToIndex2(sqlite3 *db, Schema *pSchema, const char *zDb){
-  if( zDb ){
-    int i;
-    for(i=0; i<db->nDb; i++){
-      if( i==1 ) continue;
-      if( sqlite3StrICmp(zDb, db->aDb[i].zDbSName)==0 ) return i;
-    }
-  }
-  return sqlite3SchemaToIndex(db, pSchema);
-}
-
 /*
 ** Free all memory allocations in the pParse object
 */
index b2d375c022d9067da23c5b8400b876903abdb101..fa7b0d8a5c5ffcd93b58509eae8e848daf3fb764 100644 (file)
@@ -257,7 +257,7 @@ static int lookupName(
           if( hit || zTab==0 ) continue;
         }
         if( zDb && (pTab->pSchema || pSchema) ){
-          int ii = sqlite3SchemaToIndex2(db, pTab->pSchema, pItem->zDatabase);
+          int ii = sqlite3SchemaToIndex(db, pTab->pSchema, pItem->zDatabase);
           if( ii!=iDb ) continue;
         }
         if( zTab ){
index 0bdc276904fae2398b40bb04b04ff37723923029..07572cc94a434e4fcfffe69d5709028950ce8243 100644 (file)
@@ -1445,7 +1445,7 @@ static void generateSortTail(
   /* Open any cursors needed for sorter-reference expressions */
   for(i=0; i<pSort->nDefer; i++){
     Table *pTab = pSort->aDefer[i].pTab;
-    int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
+    int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema, 0); /* TODO */
     sqlite3OpenTable(pParse, pSort->aDefer[i].iCsr, iDb, pTab, OP_OpenRead);
     nRefKey = MAX(nRefKey, pSort->aDefer[i].nKey);
   }
@@ -1713,7 +1713,8 @@ static const char *columnTypeImpl(
         }
         zOrigTab = pTab->zName;
         if( pNC->pParse && pTab->pSchema ){
-          int iDb = sqlite3SchemaToIndex(pNC->pParse->db, pTab->pSchema);
+          /* TODO: Fix the following for REUSE schemas */
+          int iDb = sqlite3SchemaToIndex(pNC->pParse->db, pTab->pSchema, 0);
           zOrigDb = pNC->pParse->db->aDb[iDb].zDbSName;
         }
 #else
@@ -4888,7 +4889,7 @@ static int selectExpander(Walker *pWalker, Select *p){
       if( IsVirtual(pTab) || pTab->pSelect ){
         int iSave = pParse->iFixDb;
         i16 nCol;
-        int iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, pFrom->zDatabase);
+        int iDb = sqlite3SchemaToIndex(db, pTab->pSchema, pFrom->zDatabase);
         pParse->iFixDb = 1 + iDb;
         if( sqlite3ViewGetColumnNames(pParse, iDb, pTab) ){
           pParse->iFixDb = iSave;
@@ -4991,7 +4992,7 @@ static int selectExpander(Walker *pWalker, Select *p){
             if( zTName && sqlite3StrICmp(zTName, zTabName)!=0 ){
               continue;
             }
-            iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, pFrom->zDatabase);
+            iDb = sqlite3SchemaToIndex(db, pTab->pSchema, pFrom->zDatabase);
             zSchemaName = iDb>=0 ? db->aDb[iDb].zDbSName : "*";
           }
           for(j=0; j<pTab->nCol; j++){
@@ -6482,7 +6483,7 @@ int sqlite3Select(
         ** is better to execute the op on an index, as indexes are almost
         ** always spread across less pages than their corresponding tables.
         */
-        const int iDb = sqlite3SchemaToIndex2(
+        const int iDb = sqlite3SchemaToIndex(
             pParse->db, pTab->pSchema, pTabList->a[0].zDatabase 
         );
         const int iCsr = pParse->nTab++;     /* Cursor to scan b-tree */
index e2f720e92fc37c918975d8876a30737ae413a5cc..c5ce59e43eecfe6b99c7819db77748ff5cd7969d 100644 (file)
@@ -4302,8 +4302,7 @@ void sqlite3SchemaUnuse(sqlite3*, int);
 void sqlite3SchemaReuse(sqlite3*, int);
 void sqlite3SchemaWritable(Parse*, int);
 Schema *sqlite3SchemaGet(sqlite3 *, Btree *);
-int sqlite3SchemaToIndex(sqlite3 *db, Schema *);
-int sqlite3SchemaToIndex2(sqlite3 *db, Schema *, const char*);
+int sqlite3SchemaToIndex(sqlite3 *db, Schema *, const char*);
 KeyInfo *sqlite3KeyInfoAlloc(sqlite3*,int,int);
 void sqlite3KeyInfoUnref(KeyInfo*);
 KeyInfo *sqlite3KeyInfoRef(KeyInfo*);
index b0f91702b03fb2bf4acc3c624c1129ce1fd96ca0..7c6cabe75ef7e14c96007d42547179cc73c39539 100644 (file)
@@ -215,7 +215,7 @@ void sqlite3BeginTrigger(
 
 #ifndef SQLITE_OMIT_AUTHORIZATION
   if( !IN_RENAME_OBJECT ){
-    int iTabDb = sqlite3SchemaToIndex2(db, pTab->pSchema, 0);
+    int iTabDb = sqlite3SchemaToIndex(db, pTab->pSchema, 0);
     int code = SQLITE_CREATE_TRIGGER;
     const char *zDb = db->aDb[iTabDb].zDbSName;
     const char *zDbTrig = isTemp ? db->aDb[1].zDbSName : zDb;
@@ -291,7 +291,7 @@ void sqlite3FinishTrigger(
   pParse->pNewTrigger = 0;
   if( NEVER(pParse->nErr) || !pTrig ) goto triggerfinish_cleanup;
   zName = pTrig->zName;
-  iDb = sqlite3SchemaToIndex2(pParse->db, pTrig->pSchema, 0);
+  iDb = sqlite3SchemaToIndex(pParse->db, pTrig->pSchema, 0);
   pTrig->step_list = pStepList;
   while( pStepList ){
     pStepList->pTrig = pTrig;
@@ -610,7 +610,7 @@ void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
   sqlite3 *db = pParse->db;
   int iDb;
 
-  iDb = sqlite3SchemaToIndex2(pParse->db, pTrigger->pSchema, 0);
+  iDb = sqlite3SchemaToIndex(pParse->db, pTrigger->pSchema, 0);
   assert( iDb>=0 && iDb<db->nDb );
   sqlite3SchemaWritable(pParse, iDb);
   pTable = tableOfTrigger(pTrigger);
index 14f110b46d0d79d920f27487606b26783f5fd60c..b5357c0c16de5736898757298bb998bef342cdfb 100644 (file)
@@ -212,7 +212,7 @@ void sqlite3Update(
   */
   pTab = sqlite3SrcListLookup(pParse, pTabList);
   if( pTab==0 ) goto update_cleanup;
-  iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, pTabList->a[0].zDatabase);
+  iDb = sqlite3SchemaToIndex(db, pTab->pSchema, pTabList->a[0].zDatabase);
 
   /* Figure out if we have any triggers and if the table being
   ** updated is a view.
index ec72cf9bde981e7bcbc75a8029c5f3e5eaefab17..288c779721a4004c3fd97c8c66cd128e0e8d0df2 100644 (file)
@@ -183,7 +183,7 @@ int sqlite3_blob_open(
       goto blob_open_out;
     }
     pBlob->pTab = pTab;
-    pBlob->zDb = db->aDb[sqlite3SchemaToIndex2(db,pTab->pSchema,zDb)].zDbSName;
+    pBlob->zDb = db->aDb[sqlite3SchemaToIndex(db,pTab->pSchema,zDb)].zDbSName;
 
     /* Now search pTab for the exact column. */
     for(iCol=0; iCol<pTab->nCol; iCol++) {
@@ -270,7 +270,7 @@ int sqlite3_blob_open(
         {OP_Halt,           0, 0, 0},  /* 5  */
       };
       Vdbe *v = (Vdbe *)pBlob->pStmt;
-      int iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, zDb);
+      int iDb = sqlite3SchemaToIndex(db, pTab->pSchema, zDb);
       VdbeOp *aOp;
 
       sqlite3VdbeAddOp4Int(v, OP_Transaction, iDb, wrFlag, 
index b392f70c341674b5be8098ec64322e8e6e3c5014..a690e848325347ed844cb3527e1a2ba2d82dbbbe 100644 (file)
@@ -363,7 +363,7 @@ void sqlite3VtabBeginParse(
   ** The second call, to obtain permission to create the table, is made now.
   */
   if( pTable->azModuleArg ){
-    int iDb = sqlite3SchemaToIndex(db, pTable->pSchema);
+    int iDb = sqlite3SchemaToIndex(db, pTable->pSchema, 0);   /* TODO */
     assert( iDb>=0 ); /* The database the table is being created in */
     sqlite3AuthCheck(pParse, SQLITE_CREATE_VTABLE, pTable->zName, 
             pTable->azModuleArg[0], pParse->db->aDb[iDb].zDbSName);
@@ -425,7 +425,7 @@ void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
     ** entry in the sqlite_master table tht was created for this vtab
     ** by sqlite3StartTable().
     */
-    iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
+    iDb = sqlite3SchemaToIndex(db, pTab->pSchema, 0);
     sqlite3NestedParse(pParse,
       "UPDATE %Q.%s "
          "SET type='table', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q "
index e61e62ec6b2e98cf04a9458d831a17730b600c7b..dc8cb42c7ba8e95fc952ff652da33d6d8f59115c 100644 (file)
@@ -1047,7 +1047,7 @@ static int vtabBestIndex(
   sqlite3_index_info *p
 ){
   Table *pTab = pSrc->pTab;
-  int iDb = sqlite3SchemaToIndex2(pParse->db, pTab->pSchema, pSrc->zDatabase);
+  int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema, pSrc->zDatabase);
   sqlite3_vtab *pVtab = sqlite3GetVTable(pParse->db, iDb, pTab)->pVtab;
   int rc;
 
@@ -4948,7 +4948,7 @@ WhereInfo *sqlite3WhereBegin(
 
     pTabItem = &pTabList->a[pLevel->iFrom];
     pTab = pTabItem->pTab;
-    iDb = sqlite3SchemaToIndex2(db, pTab->pSchema, pTabItem->zDatabase);
+    iDb = sqlite3SchemaToIndex(db, pTab->pSchema, pTabItem->zDatabase);
     pLoop = pLevel->pWLoop;
     if( (pTab->tabFlags & TF_Ephemeral)!=0 || pTab->pSelect ){
       /* Do nothing */