]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Consolidate some code on this branch. main-alias-fix
authordan <dan@noemail.net>
Sat, 21 Mar 2020 15:10:40 +0000 (15:10 +0000)
committerdan <dan@noemail.net>
Sat, 21 Mar 2020 15:10:40 +0000 (15:10 +0000)
FossilOrigin-Name: a85c63daa640e02fdfd891a05a1a09e848c9621a5dd6e112338451008623ecbb

manifest
manifest.uuid
src/attach.c
src/build.c
src/resolve.c
src/shell.c.in
src/sqliteInt.h
src/trigger.c

index 8305f807c0bef2174958a8da25fdb9a2d3ba8f67..ea53eae3b10fe09d37d2523ee93cc88ad236b111 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Allow\s"main"\sto\sbe\sused\sto\srefer\sto\sthe\smain\sdatabase\seven\safter\sSQLITE_DBCONFIG_MAINDBNAME\shas\sbeen\sused\sto\sassign\sanother\salias.
-D 2020-03-20T20:54:28.101
+C Consolidate\ssome\scode\son\sthis\sbranch.
+D 2020-03-21T15:10:40.677
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -467,7 +467,7 @@ F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
 F src/alter.c f48a4423c8f198d7f1ae4940f74b606707d05384ac79fb219be8e3323af2a2de
 F src/analyze.c 831bb090988477a00d3b4c000746e1b0454dcc93b10b793e6ebe1c47f25d193a
-F src/attach.c 38314d9f79391a565b4cb58ff87054d77bc90dbab9463e9959b4de02c076cbf4
+F src/attach.c eb2835b8287ece726ac7962a42f82c5e6228c06f8f7a04968a59516767ed4da3
 F src/auth.c a3d5bfdba83d25abed1013a8c7a5f204e2e29b0c25242a56bc02bb0c07bf1e06
 F src/backup.c 5e617c087f1c2d6005c2ec694ce80d6e16bc68d906e1b1c556d7c7c2228b636b
 F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
@@ -475,7 +475,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
 F src/btree.c 7271a120a66dfd12edcee942443fcd7b3860514a5621cb26a374781af1462117
 F src/btree.h 6111552f19ed7a40f029cf4b33badc6fef9880314fffd80a945f0b7f43ab7471
 F src/btreeInt.h dee1a1d0c621524e006bb260bd6b66d5d1867da6fe38cba9ad7b6a9bb9c0c175
-F src/build.c 4aab281397506af925b9f94df9dc3b5729f8ea057214ca9761c6745afa6cd407
+F src/build.c 3d22f21c4701f62c1a191c6b6d17552fb1b593fe9a97c0613cca05ab104a9a51
 F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
 F src/ctime.c 6a77ec9e0eb87aea929e002c816298907e337094a7b556898ae2d1e6be209f90
@@ -529,14 +529,14 @@ F src/pragma.h 9473160d220416456b40f27323bb4b316d4e4e08ffbf8bf88c5f7045d49c38e5
 F src/prepare.c 8d4d6c8aa6afefc48027c54b41cdf134b4d6bc2fc4badbe483ad7fd9e1728a28
 F src/printf.c 9be6945837c839ba57837b4bc3af349eba630920fa5532aa518816defe42a7d4
 F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
-F src/resolve.c fb21c093554a91df3d72b8f06cbe105a17b441f8f3a8e8ed86f0ea3ccc75e9b8
+F src/resolve.c 0529815271886204fe0eb4b03a662434664f214a5d904408bda5a3c75c3683d2
 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
 F src/select.c 49d46acea0e69311aa891e18253973d63e81da2a9c135924bc827856d33872ad
-F src/shell.c.in 4631ab1a65b394214d2c7127c6feef562f092c0563dd8c4521ba1451443f78ac
+F src/shell.c.in f76590931c0cbbfef347f44f81ade6b335f80c46bc6e59b8b6114383a8df30e0
 F src/sqlite.h.in 802957feeb249ede54f8dfe99b72aa19e70a0b7737969c46e625dc2f9f2d42b0
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 9c5269260409eb3275324ccace6a13a96f4ad330c708415f70ca6097901ff4ee
-F src/sqliteInt.h 5f74c1c52b152259ee07f241821620f11736e4f590936cfaf1cbbff9a2f563d3
+F src/sqliteInt.h 493893267f7559c5d2efa78a9ed09a6ead39414a5391198fa79320deed005221
 F src/sqliteLimit.h 95cb8479ca459496d9c1c6a9f76b38aee12203a56ce1092fe13e50ae2454c032
 F src/status.c 9ff2210207c6c3b4d9631a8241a7d45ab1b26a0e9c84cb07a9b5ce2de9a3b278
 F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
@@ -597,7 +597,7 @@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
 F src/tokenize.c 7b17f6e2f20f6cbcb0b215025a86b7457c38451fc7622f705e553d7a488c572d
 F src/treeview.c f78cd9cd79a889e70cd98bd6edd4a464c421452da833e65e987d97d8c41f71fe
-F src/trigger.c 101b9c33f44d5b5b263047e8e2092c7467ee1b2dc48227acb2fbbd35abd336ff
+F src/trigger.c 4ada1037cc99777f647a882cdacbd1a4deb6567b69daf02946286401b88cdc04
 F src/update.c 3eb778c42155d944377a4ee5e440b04520f07094804ed6ce63d2528f619614d9
 F src/upsert.c 2920de71b20f04fe25eb00b655d086f0ba60ea133c59d7fa3325c49838818e78
 F src/utf.c 95fb6e03a5ca679045c5adccd05380f0addccabef5911abddcb06af069500ab7
@@ -1860,10 +1860,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 86e98ddc19470410ccc6d2cf4ad56ef0bc5a23b7fbe6331b8cae374689f54529
-R 2fb87bc2534c4e6e0a570766a77d7f9e
-T *branch * main-alias-fix
-T *sym-main-alias-fix *
-T -sym-trunk *
+P 75c85ca32f9ae4a28fd8f8ff2f7639599413d22af706e9799a0e76cc560d14eb
+R 9f200a38f3d5dd609cc0e96ac8da06d4
 U dan
-Z c40c79050f8e14e276d5a37b2569a3a6
+Z 42bb12140840c55bbaec3b428d0e044c
index 8d2e2165f2f9389eadb21f0b37c0bf494d634229..dbae9bf1882d097777b33cadaec224bc6caf43ba 100644 (file)
@@ -1 +1 @@
-75c85ca32f9ae4a28fd8f8ff2f7639599413d22af706e9799a0e76cc560d14eb
\ No newline at end of file
+a85c63daa640e02fdfd891a05a1a09e848c9621a5dd6e112338451008623ecbb
\ No newline at end of file
index fa8f9efb3d45a4b6d6c7ef6016a3ddc87a27759e..a7fe8f9c5db3620a942e183539b97f1756fa9567 100644 (file)
@@ -45,6 +45,17 @@ static int resolveAttachExpr(NameContext *pName, Expr *pExpr)
   return rc;
 }
 
+/*
+** Return true if zName points to a name that may be used to refer to
+** database iDb attached to handle db.
+*/
+int sqlite3DbIsNamed(sqlite3 *db, int iDb, const char *zName){
+  return (
+      sqlite3StrICmp(db->aDb[iDb].zDbSName, zName)==0
+   || (iDb==0 && sqlite3StrICmp("main", zName)==0)
+  );
+}
+
 /*
 ** An SQL user-function registered to do the work of an ATTACH statement. The
 ** three arguments to the function come directly from an attach statement:
@@ -117,9 +128,8 @@ static void attachFunc(
       goto attach_error;
     }
     for(i=0; i<db->nDb; i++){
-      char *z = db->aDb[i].zDbSName;
-      assert( z && zName );
-      if( sqlite3StrICmp(z, zName)==0 || sqlite3StrICmp("main", zName)==0 ){
+      assert( zName );
+      if( sqlite3DbIsNamed(db, i, zName) ){
         zErrDyn = sqlite3MPrintf(db, "database %s is already in use", zName);
         goto attach_error;
       }
@@ -272,11 +282,7 @@ static void detachFunc(
   for(i=0; i<db->nDb; i++){
     pDb = &db->aDb[i];
     if( pDb->pBt==0 ) continue;
-    if( sqlite3StrICmp(pDb->zDbSName, zName)==0 
-     || (i==0 && sqlite3StrICmp("main", zName)==0)
-    ){
-      break;
-    }
+    if( sqlite3DbIsNamed(db, i, zName) ) break;
   }
 
   if( i>=db->nDb ){
@@ -473,6 +479,12 @@ int sqlite3FixSrcList(
   const char *zAlt = 0;
 
   if( NEVER(pList==0) ) return 0;
+
+  /* If zDb refers to the main database and the main database has been
+  ** renamed using DBCONFIG_MAINDBNAME, then items in pList may be
+  ** qualified using "main" or the new name as the database name. Set
+  ** zAlt to point to the alternative (alternative to zDb) name in this 
+  ** case. */
   zDb = pFix->zDb;
   if( sqlite3StrICmp(db->aDb[0].zDbSName, zDb)==0 ){ 
     zAlt = "main";
index ebb1e4b32473c95f9be09365eb21d10012f25aa6..dcd035e99d41cd8419338507460e55997f6d9eda 100644 (file)
@@ -315,10 +315,7 @@ Table *sqlite3FindTable(sqlite3 *db, const char *zName, const char *zDatabase){
   while(1){
     for(i=OMIT_TEMPDB; i<db->nDb; i++){
       int j = (i<2) ? i^1 : i;   /* Search TEMP before MAIN */
-      if( zDatabase==0 
-       || sqlite3StrICmp(zDatabase, db->aDb[j].zDbSName)==0 
-       || (j==0 && sqlite3StrICmp(zDatabase, "main")==0)
-      ){
+      if( zDatabase==0 || sqlite3DbIsNamed(db, j, zDatabase) ){
         assert( sqlite3SchemaMutexHeld(db, j, 0) );
         p = sqlite3HashFind(&db->aDb[j].pSchema->tblHash, zName);
         if( p ) return p;
@@ -440,12 +437,7 @@ Index *sqlite3FindIndex(sqlite3 *db, const char *zName, const char *zDb){
     int j = (i<2) ? i^1 : i;  /* Search TEMP before MAIN */
     Schema *pSchema = db->aDb[j].pSchema;
     assert( pSchema );
-    if( zDb 
-     && sqlite3StrICmp(zDb, db->aDb[j].zDbSName) 
-     && (j!=0 || sqlite3StrICmp(zDb, "main"))
-    ){
-      continue;
-    }
+    if( zDb && sqlite3DbIsNamed(db, j, zDb)==0 ) continue;
     assert( sqlite3SchemaMutexHeld(db, j, 0) );
     p = sqlite3HashFind(&pSchema->idxHash, zName);
     if( p ) break;
index 46305ccf17cd56f6055ae56547caae61b612adf7..0364407d454ec38e2d7911eb65a22045561d1fc0 100644 (file)
@@ -227,9 +227,6 @@ static int lookupName(
   assert( zCol );    /* The Z in X.Y.Z cannot be NULL */
   assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) );
 
-static int nCall = 0;
-nCall++;
-
   /* Initialize the node to no-match */
   pExpr->iTable = -1;
   ExprSetVVAProperty(pExpr, EP_NoReduce);
index 248c6b7d27e0a73d7850504d9c9973e049975388..728a4d051d52794ab8d60c5f8a2d76f4d4d0f9bc 100644 (file)
@@ -2952,7 +2952,7 @@ static int expertHandleSQL(
 ){
   assert( pState->expert.pExpert );
   assert( pzErr==0 || *pzErr==0 );
-    return sqlite3_expert_sql(pState->expert.pExpert, zSql, pzErr);
+  return sqlite3_expert_sql(pState->expert.pExpert, zSql, pzErr);
 }
 
 /*
index 7a00b576a00adf6807bb82764cca8fd690cb3db5..17715529a3b915ba2c93e343330b9cd14e53f3d4 100644 (file)
@@ -4394,6 +4394,7 @@ void sqlite3DeferForeignKey(Parse*, int);
 # define sqlite3AuthContextPush(a,b,c)
 # define sqlite3AuthContextPop(a)  ((void)(a))
 #endif
+int sqlite3DbIsNamed(sqlite3 *db, int iDb, const char *zName);
 void sqlite3Attach(Parse*, Expr*, Expr*, Expr*);
 void sqlite3Detach(Parse*, Expr*);
 void sqlite3FixInit(DbFixer*, Parse*, int, const char*, const Token*);
index b9548a64fd4609ecdb6272b4aa5219227815e182..646d6942d395d3f09f57991201d222fb4c6cfd63 100644 (file)
@@ -580,10 +580,7 @@ void sqlite3DropTrigger(Parse *pParse, SrcList *pName, int noErr){
   assert( zDb!=0 || sqlite3BtreeHoldsAllMutexes(db) );
   for(i=OMIT_TEMPDB; i<db->nDb; i++){
     int j = (i<2) ? i^1 : i;  /* Search TEMP before MAIN */
-    if( zDb 
-      && sqlite3StrICmp(db->aDb[j].zDbSName, zDb) 
-      && (j!=0 || sqlite3StrICmp("main", zDb))
-    ) continue;
+    if( zDb && sqlite3DbIsNamed(db, j, zDb)==0 ) continue;
     assert( sqlite3SchemaMutexHeld(db, j, 0) );
     pTrigger = sqlite3HashFind(&(db->aDb[j].pSchema->trigHash), zName);
     if( pTrigger ) break;