]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add experimental 'xShadowName2' method for virtual table modules.
authormistachkin <mistachkin@noemail.net>
Fri, 22 Jul 2022 20:24:38 +0000 (20:24 +0000)
committermistachkin <mistachkin@noemail.net>
Fri, 22 Jul 2022 20:24:38 +0000 (20:24 +0000)
FossilOrigin-Name: 57beb700c081b20758d52ad4d395be34ef53f71a231f3dd27613030ac232bca8

36 files changed:
ext/expert/sqlite3expert.c
ext/fts3/fts3.c
ext/fts3/fts3_aux.c
ext/fts3/fts3_term.c
ext/fts3/fts3_tokenize_vtab.c
ext/fts5/fts5_main.c
ext/fts5/fts5_test_tok.c
ext/fts5/fts5_vocab.c
ext/misc/amatch.c
ext/misc/btreeinfo.c
ext/misc/closure.c
ext/misc/completion.c
ext/misc/dbdata.c
ext/misc/explain.c
ext/misc/fileio.c
ext/misc/fossildelta.c
ext/misc/memstat.c
ext/misc/prefixes.c
ext/misc/qpvtab.c
ext/misc/series.c
ext/misc/stmt.c
ext/misc/templatevtab.c
ext/misc/unionvtab.c
ext/misc/vtablog.c
ext/misc/zipfile.c
ext/rtree/geopoly.c
ext/rtree/rtree.c
manifest
manifest.uuid
src/build.c
src/dbpage.c
src/dbstat.c
src/json.c
src/pragma.c
src/sqlite.h.in
src/vdbevtab.c

index f29b8a9e0bfeb41dd209b12ae594e6a0f293e015..47114e594135c06cbdc4cb16a15f77f52b7124ca 100644 (file)
@@ -662,6 +662,7 @@ static int idxRegisterVtab(sqlite3expert *p){
     0,                            /* xRelease */
     0,                            /* xRollbackTo */
     0,                            /* xShadowName */
+    0                             /* xShadowName2 */
   };
 
   return sqlite3_create_module(p->dbv, "expert", &expertModule, (void*)p);
index 1a1672512ada2622e89f663cc116eb53af2c0ebc..b20ad319f8266c21a691e260af20218720d6933b 100644 (file)
@@ -3980,8 +3980,13 @@ static int fts3ShadowName(const char *zName){
   return 0;
 }
 
+static int fts3ShadowName2(sqlite3_vtab *pVtab, const char *zName){
+  UNUSED_PARAMETER(pVtab);
+  return fts3ShadowName(zName);
+}
+
 static const sqlite3_module fts3Module = {
-  /* iVersion      */ 3,
+  /* iVersion      */ 4,
   /* xCreate       */ fts3CreateMethod,
   /* xConnect      */ fts3ConnectMethod,
   /* xBestIndex    */ fts3BestIndexMethod,
@@ -4000,11 +4005,12 @@ static const sqlite3_module fts3Module = {
   /* xCommit       */ fts3CommitMethod,
   /* xRollback     */ fts3RollbackMethod,
   /* xFindFunction */ fts3FindFunctionMethod,
-  /* xRename */       fts3RenameMethod,
+  /* xRename       */ fts3RenameMethod,
   /* xSavepoint    */ fts3SavepointMethod,
   /* xRelease      */ fts3ReleaseMethod,
   /* xRollbackTo   */ fts3RollbackToMethod,
   /* xShadowName   */ fts3ShadowName,
+  /* xShadowName2  */ fts3ShadowName2
 };
 
 /*
index d3b194c942bff9a1352720c1812348aff04172df..88018f6539c33dcd25014fd30f18a8e192edc1fd 100644 (file)
@@ -545,7 +545,8 @@ int sqlite3Fts3InitAux(sqlite3 *db){
      0,                           /* xSavepoint    */
      0,                           /* xRelease      */
      0,                           /* xRollbackTo   */
-     0                            /* xShadowName   */
+     0,                           /* xShadowName   */
+     0                            /* xShadowName2  */
   };
   int rc;                         /* Return code */
 
index 47e244e22ccc044c56802ce5eec272580a893173..b2663bf4a85cb032f824ec29d6eb5130dc09b7df 100644 (file)
@@ -362,7 +362,8 @@ int sqlite3Fts3InitTerm(sqlite3 *db){
      0,                           /* xSavepoint    */
      0,                           /* xRelease      */
      0,                           /* xRollbackTo   */
-     0                            /* xShadowName   */
+     0,                           /* xShadowName   */
+     0                            /* xShadowName2  */
   };
   int rc;                         /* Return code */
 
index 65d7eef4c33d193ccf86d4cc27ea1d213d5a843e..c558f7242bc545e34b44acf49514072cb09fe5a8 100644 (file)
@@ -445,7 +445,8 @@ int sqlite3Fts3InitTok(sqlite3 *db, Fts3Hash *pHash, void(*xDestroy)(void*)){
      0,                           /* xSavepoint    */
      0,                           /* xRelease      */
      0,                           /* xRollbackTo   */
-     0                            /* xShadowName   */
+     0,                           /* xShadowName   */
+     0                            /* xShadowName2  */
   };
   int rc;                         /* Return code */
 
index 9a8b2fadb452ee6750cab0eb8b871dc14d53bdd9..1482ebfcf75bc547cc5d55eca26cec54356b6e74 100644 (file)
@@ -2811,9 +2811,14 @@ static int fts5ShadowName(const char *zName){
   return 0;
 }
 
+static int fts5ShadowName2(sqlite3_vtab *pVtab, const char *zName){
+  UNUSED_PARAMETER(pVtab);
+  return fts5ShadowName(zName);
+}
+
 static int fts5Init(sqlite3 *db){
   static const sqlite3_module fts5Mod = {
-    /* iVersion      */ 3,
+    /* iVersion      */ 4,
     /* xCreate       */ fts5CreateMethod,
     /* xConnect      */ fts5ConnectMethod,
     /* xBestIndex    */ fts5BestIndexMethod,
@@ -2836,7 +2841,8 @@ static int fts5Init(sqlite3 *db){
     /* xSavepoint    */ fts5SavepointMethod,
     /* xRelease      */ fts5ReleaseMethod,
     /* xRollbackTo   */ fts5RollbackToMethod,
-    /* xShadowName   */ fts5ShadowName
+    /* xShadowName   */ fts5ShadowName,
+    /* xShadowName2  */ fts5ShadowName2
   };
 
   int rc;
index a5d839da66ed6c358faa249f728eba7f9b8034d0..c93535718c71cfc829fb9089f45a3faf75312e4e 100644 (file)
@@ -472,7 +472,8 @@ int sqlite3Fts5TestRegisterTok(sqlite3 *db, fts5_api *pApi){
      0,                           /* xSavepoint    */
      0,                           /* xRelease      */
      0,                           /* xRollbackTo   */
-     0                            /* xShadowName   */
+     0,                           /* xShadowName   */
+     0                            /* xShadowName2  */
   };
   int rc;                         /* Return code */
 
index 18774c4e4aaa113342c9f50db8acfc7b6a45e93c..480f046081f2ec5bf8bfcc392bfb5678c413d0a0 100644 (file)
@@ -783,7 +783,8 @@ int sqlite3Fts5VocabInit(Fts5Global *pGlobal, sqlite3 *db){
     /* xSavepoint    */ 0,
     /* xRelease      */ 0,
     /* xRollbackTo   */ 0,
-    /* xShadowName   */ 0
+    /* xShadowName   */ 0,
+    /* xShadowName2  */ 0
   };
   void *p = (void*)pGlobal;
 
index bafa43283ab2e9344e2e6533887f9f039e3cb7b9..7f30a8a0479f2942ce18d4377807d68ca6c07e2d 100644 (file)
@@ -1475,7 +1475,8 @@ static sqlite3_module amatchModule = {
   0,                      /* xSavepoint */
   0,                      /* xRelease */
   0,                      /* xRollbackTo */
-  0                       /* xShadowName */
+  0,                      /* xShadowName */
+  0                       /* xShadowName2 */
 };
 
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
index 22f8268139f6e1303461df84ea3210c86295fd46..04979278a650f33813143bd0826ddf47971e94ca 100644 (file)
@@ -411,7 +411,8 @@ int sqlite3BinfoRegister(sqlite3 *db){
     0,                           /* xSavepoint */
     0,                           /* xRelease */
     0,                           /* xRollbackTo */
-    0                            /* xShadowName */
+    0,                           /* xShadowName */
+    0                            /* xShadowName2 */
   };
   return sqlite3_create_module(db, "sqlite_btreeinfo", &binfo_module, 0);
 }
index db9b2b73944d452fbdc8d667cb6bf3ac92379e15..e54589f2eef5eccaa73219b7592bc06cbaca7228 100644 (file)
@@ -939,7 +939,8 @@ static sqlite3_module closureModule = {
   0,                      /* xSavepoint */
   0,                      /* xRelease */
   0,                      /* xRollbackTo */
-  0                       /* xShadowName */
+  0,                      /* xShadowName */
+  0                       /* xShadowName2 */
 };
 
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
index d9e7b85972ddb0898a7aede0e3cddfa391209f53..7ef8930c61fd45ae84486537c86e8fe2b8a1005d 100644 (file)
@@ -470,7 +470,8 @@ static sqlite3_module completionModule = {
   0,                         /* xSavepoint */
   0,                         /* xRelease */
   0,                         /* xRollbackTo */
-  0                          /* xShadowName */
+  0,                         /* xShadowName */
+  0                          /* xShadowName2 */
 };
 
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
index 7405e7c8909c6c043a8633d7fa856c3cd18a3391..b91b68020150504faf85050ddd0011db2ba281f0 100644 (file)
@@ -828,7 +828,8 @@ static int sqlite3DbdataRegister(sqlite3 *db){
     0,                            /* xSavepoint */
     0,                            /* xRelease */
     0,                            /* xRollbackTo */
-    0                             /* xShadowName */
+    0,                            /* xShadowName */
+    0                             /* xShadowName2 */
   };
 
   int rc = sqlite3_create_module(db, "sqlite_dbdata", &dbdata_module, 0);
index 00951945706828719c7787ecc56f2ada38b72171..559d65f0a01ee35f4b3d9ffa1f1760b8e1fba144 100644 (file)
@@ -293,6 +293,7 @@ static sqlite3_module explainModule = {
   0,                         /* xRelease */
   0,                         /* xRollbackTo */
   0,                         /* xShadowName */
+  0                          /* xShadowName2 */
 };
 
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
index 7cdbd5968f5b03f1de6f0081ec53245b66e619a8..be3be42b9463b84394dc58d05e934f2c73dc6bc7 100644 (file)
@@ -983,6 +983,7 @@ static int fsdirRegister(sqlite3 *db){
     0,                         /* xRelease */
     0,                         /* xRollbackTo */
     0,                         /* xShadowName */
+    0                          /* xShadowName2 */
   };
 
   int rc = sqlite3_create_module(db, "fsdir", &fsdirModule, 0);
index 6a597e0d7d40b30872498f2044283a3e8aa1f747..7ddc8a1b80239ccaecf671fa0c193c6c38ac5442 100644 (file)
@@ -1035,30 +1035,31 @@ static int deltaparsevtabBestIndex(
 ** virtual table.
 */
 static sqlite3_module deltaparsevtabModule = {
-  /* iVersion    */ 0,
-  /* xCreate     */ 0,
-  /* xConnect    */ deltaparsevtabConnect,
-  /* xBestIndex  */ deltaparsevtabBestIndex,
-  /* xDisconnect */ deltaparsevtabDisconnect,
-  /* xDestroy    */ 0,
-  /* xOpen       */ deltaparsevtabOpen,
-  /* xClose      */ deltaparsevtabClose,
-  /* xFilter     */ deltaparsevtabFilter,
-  /* xNext       */ deltaparsevtabNext,
-  /* xEof        */ deltaparsevtabEof,
-  /* xColumn     */ deltaparsevtabColumn,
-  /* xRowid      */ deltaparsevtabRowid,
-  /* xUpdate     */ 0,
-  /* xBegin      */ 0,
-  /* xSync       */ 0,
-  /* xCommit     */ 0,
-  /* xRollback   */ 0,
-  /* xFindMethod */ 0,
-  /* xRename     */ 0,
-  /* xSavepoint  */ 0,
-  /* xRelease    */ 0,
-  /* xRollbackTo */ 0,
-  /* xShadowName */ 0
+  /* iVersion     */ 0,
+  /* xCreate      */ 0,
+  /* xConnect     */ deltaparsevtabConnect,
+  /* xBestIndex   */ deltaparsevtabBestIndex,
+  /* xDisconnect  */ deltaparsevtabDisconnect,
+  /* xDestroy     */ 0,
+  /* xOpen        */ deltaparsevtabOpen,
+  /* xClose       */ deltaparsevtabClose,
+  /* xFilter      */ deltaparsevtabFilter,
+  /* xNext        */ deltaparsevtabNext,
+  /* xEof         */ deltaparsevtabEof,
+  /* xColumn      */ deltaparsevtabColumn,
+  /* xRowid       */ deltaparsevtabRowid,
+  /* xUpdate      */ 0,
+  /* xBegin       */ 0,
+  /* xSync        */ 0,
+  /* xCommit      */ 0,
+  /* xRollback    */ 0,
+  /* xFindMethod  */ 0,
+  /* xRename      */ 0,
+  /* xSavepoint   */ 0,
+  /* xRelease     */ 0,
+  /* xRollbackTo  */ 0,
+  /* xShadowName  */ 0,
+  /* xShadowName2 */ 0
 };
 
 
index 800a86e7a4484017241f75eefda5de8d15706f03..ffe71e518b08c27e7f31ce855f68e2050a24e8d4 100644 (file)
@@ -396,6 +396,7 @@ static sqlite3_module memstatModule = {
   0,                         /* xRelease */
   0,                         /* xRollbackTo */
   0,                         /* xShadowName */
+  0                          /* xShadowName2 */
 };
 
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
index 3f053b7f1c1bb2d2f3430f889d7e9f7454ff0824..e0d4179227f2ec7994724fcd0b5b5ab76d50b6cc 100644 (file)
@@ -225,30 +225,31 @@ static int prefixesBestIndex(
 ** virtual table.
 */
 static sqlite3_module prefixesModule = {
-  /* iVersion    */ 0,
-  /* xCreate     */ 0,
-  /* xConnect    */ prefixesConnect,
-  /* xBestIndex  */ prefixesBestIndex,
-  /* xDisconnect */ prefixesDisconnect,
-  /* xDestroy    */ 0,
-  /* xOpen       */ prefixesOpen,
-  /* xClose      */ prefixesClose,
-  /* xFilter     */ prefixesFilter,
-  /* xNext       */ prefixesNext,
-  /* xEof        */ prefixesEof,
-  /* xColumn     */ prefixesColumn,
-  /* xRowid      */ prefixesRowid,
-  /* xUpdate     */ 0,
-  /* xBegin      */ 0,
-  /* xSync       */ 0,
-  /* xCommit     */ 0,
-  /* xRollback   */ 0,
-  /* xFindMethod */ 0,
-  /* xRename     */ 0,
-  /* xSavepoint  */ 0,
-  /* xRelease    */ 0,
-  /* xRollbackTo */ 0,
-  /* xShadowName */ 0
+  /* iVersion     */ 0,
+  /* xCreate      */ 0,
+  /* xConnect     */ prefixesConnect,
+  /* xBestIndex   */ prefixesBestIndex,
+  /* xDisconnect  */ prefixesDisconnect,
+  /* xDestroy     */ 0,
+  /* xOpen        */ prefixesOpen,
+  /* xClose       */ prefixesClose,
+  /* xFilter      */ prefixesFilter,
+  /* xNext        */ prefixesNext,
+  /* xEof         */ prefixesEof,
+  /* xColumn      */ prefixesColumn,
+  /* xRowid       */ prefixesRowid,
+  /* xUpdate      */ 0,
+  /* xBegin       */ 0,
+  /* xSync        */ 0,
+  /* xCommit      */ 0,
+  /* xRollback    */ 0,
+  /* xFindMethod  */ 0,
+  /* xRename      */ 0,
+  /* xSavepoint   */ 0,
+  /* xRelease     */ 0,
+  /* xRollbackTo  */ 0,
+  /* xShadowName  */ 0,
+  /* xShadowName2 */ 0
 };
 
 /*
index fb0c155a27ccc3fe4756444737bd42f282dd60c4..5fed46af436024621ce1aa66d6e6ce7878281ea9 100644 (file)
@@ -416,30 +416,31 @@ static int qpvtabBestIndex(
 ** virtual table.
 */
 static sqlite3_module qpvtabModule = {
-  /* iVersion    */ 0,
-  /* xCreate     */ 0,
-  /* xConnect    */ qpvtabConnect,
-  /* xBestIndex  */ qpvtabBestIndex,
-  /* xDisconnect */ qpvtabDisconnect,
-  /* xDestroy    */ 0,
-  /* xOpen       */ qpvtabOpen,
-  /* xClose      */ qpvtabClose,
-  /* xFilter     */ qpvtabFilter,
-  /* xNext       */ qpvtabNext,
-  /* xEof        */ qpvtabEof,
-  /* xColumn     */ qpvtabColumn,
-  /* xRowid      */ qpvtabRowid,
-  /* xUpdate     */ 0,
-  /* xBegin      */ 0,
-  /* xSync       */ 0,
-  /* xCommit     */ 0,
-  /* xRollback   */ 0,
-  /* xFindMethod */ 0,
-  /* xRename     */ 0,
-  /* xSavepoint  */ 0,
-  /* xRelease    */ 0,
-  /* xRollbackTo */ 0,
-  /* xShadowName */ 0
+  /* iVersion     */ 0,
+  /* xCreate      */ 0,
+  /* xConnect     */ qpvtabConnect,
+  /* xBestIndex   */ qpvtabBestIndex,
+  /* xDisconnect  */ qpvtabDisconnect,
+  /* xDestroy     */ 0,
+  /* xOpen        */ qpvtabOpen,
+  /* xClose       */ qpvtabClose,
+  /* xFilter      */ qpvtabFilter,
+  /* xNext        */ qpvtabNext,
+  /* xEof         */ qpvtabEof,
+  /* xColumn      */ qpvtabColumn,
+  /* xRowid       */ qpvtabRowid,
+  /* xUpdate      */ 0,
+  /* xBegin       */ 0,
+  /* xSync        */ 0,
+  /* xCommit      */ 0,
+  /* xRollback    */ 0,
+  /* xFindMethod  */ 0,
+  /* xRename      */ 0,
+  /* xSavepoint   */ 0,
+  /* xRelease     */ 0,
+  /* xRollbackTo  */ 0,
+  /* xShadowName  */ 0,
+  /* xShadowName2 */ 0
 };
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
 
index 3941d96c47670ad6d139336de77e8a6c90c66b38..dfac31936099f8054a092acf6c03f576bec6b294 100644 (file)
@@ -432,7 +432,8 @@ static sqlite3_module seriesModule = {
   0,                         /* xSavepoint */
   0,                         /* xRelease */
   0,                         /* xRollbackTo */
-  0                          /* xShadowName */
+  0,                         /* xShadowName */
+  0                          /* xShadowName2 */
 };
 
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
index 1687f419782ba8f35552cff52237e73e87406191..7a7ea53e8f95b5c29def4bd71397d96bceffddf5 100644 (file)
@@ -305,6 +305,7 @@ static sqlite3_module stmtModule = {
   0,                         /* xRelease */
   0,                         /* xRollbackTo */
   0,                         /* xShadowName */
+  0                          /* xShadowName2 */
 };
 
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
index d7efa2b40edcb176c2d87f0c9cacb91f44c643b8..be80de49f13f0b7a54c0b187a518322709542dc1 100644 (file)
@@ -226,30 +226,31 @@ static int templatevtabBestIndex(
 ** virtual table.
 */
 static sqlite3_module templatevtabModule = {
-  /* iVersion    */ 0,
-  /* xCreate     */ 0,
-  /* xConnect    */ templatevtabConnect,
-  /* xBestIndex  */ templatevtabBestIndex,
-  /* xDisconnect */ templatevtabDisconnect,
-  /* xDestroy    */ 0,
-  /* xOpen       */ templatevtabOpen,
-  /* xClose      */ templatevtabClose,
-  /* xFilter     */ templatevtabFilter,
-  /* xNext       */ templatevtabNext,
-  /* xEof        */ templatevtabEof,
-  /* xColumn     */ templatevtabColumn,
-  /* xRowid      */ templatevtabRowid,
-  /* xUpdate     */ 0,
-  /* xBegin      */ 0,
-  /* xSync       */ 0,
-  /* xCommit     */ 0,
-  /* xRollback   */ 0,
-  /* xFindMethod */ 0,
-  /* xRename     */ 0,
-  /* xSavepoint  */ 0,
-  /* xRelease    */ 0,
-  /* xRollbackTo */ 0,
-  /* xShadowName */ 0
+  /* iVersion     */ 0,
+  /* xCreate      */ 0,
+  /* xConnect     */ templatevtabConnect,
+  /* xBestIndex   */ templatevtabBestIndex,
+  /* xDisconnect  */ templatevtabDisconnect,
+  /* xDestroy     */ 0,
+  /* xOpen        */ templatevtabOpen,
+  /* xClose       */ templatevtabClose,
+  /* xFilter      */ templatevtabFilter,
+  /* xNext        */ templatevtabNext,
+  /* xEof         */ templatevtabEof,
+  /* xColumn      */ templatevtabColumn,
+  /* xRowid       */ templatevtabRowid,
+  /* xUpdate      */ 0,
+  /* xBegin       */ 0,
+  /* xSync        */ 0,
+  /* xCommit      */ 0,
+  /* xRollback    */ 0,
+  /* xFindMethod  */ 0,
+  /* xRename      */ 0,
+  /* xSavepoint   */ 0,
+  /* xRelease     */ 0,
+  /* xRollbackTo  */ 0,
+  /* xShadowName  */ 0,
+  /* xShadowName2 */ 0
 };
 
 
index 6ac7ca6e95bb4bf07aa86f4a04c0dbe44f83713e..dd7b0001ee6ef3cd7e397fede84390d5d9386cbb 100644 (file)
@@ -1351,7 +1351,8 @@ static int createUnionVtab(sqlite3 *db){
     0,                            /* xSavepoint */
     0,                            /* xRelease */
     0,                            /* xRollbackTo */
-    0                             /* xShadowName */
+    0,                            /* xShadowName */
+    0                             /* xShadowName2 */
   };
   int rc;
 
index 424b3457ff7bb3aaa17e580c69c3456a02a44356..db8d6eeb8aa97a59a0a037465998eeefd5dca500 100644 (file)
@@ -493,6 +493,7 @@ static sqlite3_module vtablogModule = {
   0,                         /* xRelease */
   0,                         /* xRollbackTo */
   0,                         /* xShadowName */
+  0                          /* xShadowName2 */
 };
 
 #ifdef _WIN32
index f818fbc11c19ac57ae22aecea65106ec626494a3..d640438a2abca7f3c0cfe1b54fa3a5295d9a5329 100644 (file)
@@ -2178,7 +2178,8 @@ static int zipfileRegister(sqlite3 *db){
     0,                         /* xSavepoint */
     0,                         /* xRelease */
     0,                         /* xRollback */
-    0                          /* xShadowName */
+    0,                         /* xShadowName */
+    0                          /* xShadowName2 */
   };
 
   int rc = sqlite3_create_module(db, "zipfile"  , &zipfileModule, 0);
index 68cde873442d4f7e1aac0e5aea9b0925390c536b..5b3b0120307fd162ab8a7a7c209cd811dde436b4 100644 (file)
@@ -1736,7 +1736,7 @@ static int geopolyFindFunction(
 
 
 static sqlite3_module geopolyModule = {
-  3,                          /* iVersion */
+  4,                          /* iVersion */
   geopolyCreate,              /* xCreate - create a table */
   geopolyConnect,             /* xConnect - connect to an existing table */
   geopolyBestIndex,           /* xBestIndex - Determine search strategy */
@@ -1759,7 +1759,8 @@ static sqlite3_module geopolyModule = {
   rtreeSavepoint,             /* xSavepoint */
   0,                          /* xRelease */
   0,                          /* xRollbackTo */
-  rtreeShadowName             /* xShadowName */
+  rtreeShadowName,            /* xShadowName */
+  rtreeShadowName2            /* xShadowName2 */
 };
 
 static int sqlite3_geopoly_init(sqlite3 *db){
index 49053a2bccfe934a6de8daca2d98895f16bc2d47..d14fafc34360da48fe03f108de0e8b42b00c6c9e 100644 (file)
@@ -3477,8 +3477,13 @@ static int rtreeShadowName(const char *zName){
   return 0;
 }
 
+static int rtreeShadowName2(sqlite3_vtab *pVtab, const char *zName){
+  UNUSED_PARAMETER(pVtab);
+  return rtreeShadowName(zName);
+}
+
 static sqlite3_module rtreeModule = {
-  3,                          /* iVersion */
+  4,                          /* iVersion */
   rtreeCreate,                /* xCreate - create a table */
   rtreeConnect,               /* xConnect - connect to an existing table */
   rtreeBestIndex,             /* xBestIndex - Determine search strategy */
@@ -3501,7 +3506,8 @@ static sqlite3_module rtreeModule = {
   rtreeSavepoint,             /* xSavepoint */
   0,                          /* xRelease */
   0,                          /* xRollbackTo */
-  rtreeShadowName             /* xShadowName */
+  rtreeShadowName,            /* xShadowName */
+  rtreeShadowName2            /* xShadowName2 */
 };
 
 static int rtreeSqlInit(
index ddd8d2b466dab83c7b0c8b64292be3b11c45a460..4454e6013abb765876e4c18e7a934a416b771fcd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Omit\sthe\sEP_MemToken\sflag\sthat\swas\smade\sobsolete\sby\s[e1f1cfe7f4387b60],\sfor\na\ssize\sreduction\sand\sperformance\sincrease.
-D 2022-07-22T19:28:04.965
+C Add\sexperimental\s'xShadowName2'\smethod\sfor\svirtual\stable\smodules.
+D 2022-07-22T20:24:38.815
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -52,7 +52,7 @@ F ext/async/sqlite3async.h 46b47c79357b97ad85d20d2795942c0020dc20c532114a4980828
 F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3
 F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4
 F ext/expert/expert1.test 3c642a4e7bbb14f21ddab595436fb465a4733f47a0fe5b2855e1d5ff900ef08e
-F ext/expert/sqlite3expert.c 6ca30d73b9ed75bd56d6e0d7f2c962d2affaa72c505458619d0ff5d9cdfac204
+F ext/expert/sqlite3expert.c 48fc9a04cd9240b849a847c8944c949bce2df7dd2b77ec4b4fe36f0da80d482c
 F ext/expert/sqlite3expert.h ca81efc2679a92373a13a3e76a6138d0310e32be53d6c3bfaedabd158ea8969b
 F ext/expert/test_expert.c d56c194b769bdc90cf829a14c9ecbc1edca9c850b837a4d0b13be14095c32a72
 F ext/fiddle/EXPORTED_FUNCTIONS.fiddle 7fb73f7150ab79d83bb45a67d257553c905c78cd3d693101699243f36c5ae6c3
@@ -102,19 +102,19 @@ F ext/fts3/README.content b9078d0843a094d86af0d48dffbff13c906702b4c3558012e67b9c
 F ext/fts3/README.syntax a19711dc5458c20734b8e485e75fb1981ec2427a
 F ext/fts3/README.tokenizers b92bdeb8b46503f0dd301d364efc5ef59ef9fa8e2758b8e742f39fa93a2e422d
 F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
-F ext/fts3/fts3.c 8cd361bd8612de3e5ec451d33ced8575cbc5af6744e7efc05d54bde4d2df3cd0
+F ext/fts3/fts3.c 4aa9e9e8ba723e99507c003d99b362b29b03ebd5d0d370f519433ede7a50fc21
 F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
 F ext/fts3/fts3Int.h dafdc371f9fbab175744b06cfe019d5f040cdfdbd11fea752f5dc28d45b04c05
-F ext/fts3/fts3_aux.c f0dc9bd98582615b7750218899bd0c729879b6bbf94d1be57ca1833ff49afc6f
+F ext/fts3/fts3_aux.c 14065aaaa350e81b210bc4e4b787a91615afe0ab9759bd28473ad984e327cedc
 F ext/fts3/fts3_expr.c 903bfb9433109fffb10e910d7066c49cbf8eeae316adc93f0499c4da7dfc932a
 F ext/fts3/fts3_hash.c 8b6e31bfb0844c27dc6092c2620bdb1fca17ed613072db057d96952c6bdb48b7
 F ext/fts3/fts3_hash.h 39cf6874dc239d6b4e30479b1975fe5b22a3caaf
 F ext/fts3/fts3_icu.c 305ce7fb6036484085b5556a9c8e62acdc7763f0f4cdf5fd538212a9f3720116
 F ext/fts3/fts3_porter.c 3565faf04b626cddf85f03825e86056a4562c009
 F ext/fts3/fts3_snippet.c f9a8149173553113f3c495a503843e30028b5dc3723d0ca798c5ad6142e130e6
-F ext/fts3/fts3_term.c f45a1e7c6ef464abb1231245d123dae12266b69e05cc56e14045b76591ae92d1
+F ext/fts3/fts3_term.c 9358b719287237fc41271448f5586049d21ba4fcc6c2c01d190793d3fd41ea69
 F ext/fts3/fts3_test.c d8d7b2734f894e8a489987447658e374cdd3a3bc8575c401decf1911cb7c6454
-F ext/fts3/fts3_tokenize_vtab.c a95feda3590f3c3e17672fe35b67ea6112471aeea4c07ef7744a6606b66549aa
+F ext/fts3/fts3_tokenize_vtab.c f49552c108486b10d7f3ce3172dfa73ba2741e9adc40ff68415f18fa9eae70d6
 F ext/fts3/fts3_tokenizer.c 6d8fc150c48238955d5182bf661498db0dd473c8a2a80e00c16994a646fa96e7
 F ext/fts3/fts3_tokenizer.h 64c6ef6c5272c51ebe60fc607a896e84288fcbc3
 F ext/fts3/fts3_tokenizer1.c 5c98225a53705e5ee34824087478cf477bdb7004
@@ -137,15 +137,15 @@ F ext/fts5/fts5_config.c 501e7d3566bc92766b0e11c0109a7c5a6146bc41144195459af5422
 F ext/fts5/fts5_expr.c 40174a64829d30cc86e8266306ad24980f6911edd5ca0b8c1ce7821ea1341b88
 F ext/fts5/fts5_hash.c d4fb70940359f2120ccd1de7ffe64cc3efe65de9e8995b822cd536ff64c96982
 F ext/fts5/fts5_index.c 3e47d9c56e4e9a6dee78bc32e006d6a28a3b5ec9ff84f3b8c381c78323201720
-F ext/fts5/fts5_main.c 6078ae86d3b813753a4f1201054550aff21a3f660e97b30f200d2b1472874151
+F ext/fts5/fts5_main.c 9db1c09e6938920b96f7bdf35f0a77ccb6bcc134ad8ee7c465e4f75c7e131156
 F ext/fts5/fts5_storage.c 76c6085239eb44424004c022e9da17a5ecd5aaec859fba90ad47d3b08f4c8082
 F ext/fts5/fts5_tcl.c b1445cbe69908c411df8084a10b2485500ac70a9c747cdc8cda175a3da59d8ae
 F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee
-F ext/fts5/fts5_test_tok.c a2bed8edb25f6432e8cdb62aad5916935c19dba8dac2b8324950cfff397e25ff
+F ext/fts5/fts5_test_tok.c 1611181ea39e9f7bd8d1fba4d785658cbfe190e98302fccc38b0c0b0b2074d8d
 F ext/fts5/fts5_tokenize.c 5e251efb0f1af99a25ed50010ba6b1ad1250aca5921af1988fdcabe5ebc3cb43
 F ext/fts5/fts5_unicode2.c eca63dbc797f8ff0572e97caf4631389c0ab900d6364861b915bdd4735973f00
 F ext/fts5/fts5_varint.c e64d2113f6e1bfee0032972cffc1207b77af63319746951bf1d09885d1dadf80
-F ext/fts5/fts5_vocab.c 12138e84616b56218532e3e8feb1d3e0e7ae845e33408dbe911df520424dc9d6
+F ext/fts5/fts5_vocab.c d66013a4d47f7b4fd9145264e859358c91c38dd19290be9124668a4f38e78dd0
 F ext/fts5/fts5parse.y eb526940f892ade5693f22ffd6c4f2702543a9059942772526eac1fde256bb05
 F ext/fts5/mkportersteps.tcl 5acf962d2e0074f701620bb5308155fa1e4a63ba
 F ext/fts5/test/fts5_common.tcl b01c584144b5064f30e6c648145a2dd6bc440841
@@ -303,28 +303,28 @@ F ext/lsm1/test/lsm1_common.tcl 5ed4bab07c93be2e4f300ebe46007ecf4b3e20bc5fbe1ded
 F ext/lsm1/test/lsm1_simple.test a04d08e8661ae6fc53786c67f0bd102c6692f003e859dde03ed9ac3f12e066e5
 F ext/lsm1/tool/mklsm1c.tcl f31561bbee5349f0a554d1ad7236ac1991fc09176626f529f6078e07335398b0
 F ext/misc/README.md d6dd0fe1d8af77040216798a6a2b0c46c73054d2f0ea544fbbcdccf6f238c240
-F ext/misc/amatch.c e3ad5532799cee9a97647f483f67f43b38796b84b5a8c60594fe782a4338f358
+F ext/misc/amatch.c a2621d220d663ce4121d9d69017a3e337a5e7d926df717d4a9d2a740425d576c
 F ext/misc/anycollseq.c 5ffdfde9829eeac52219136ad6aa7cd9a4edb3b15f4f2532de52f4a22525eddb
 F ext/misc/appendvfs.c 9642c7a194a2a25dca7ad3e36af24a0a46d7702168c4ad7e59c9f9b0e16a3824
 F ext/misc/blobio.c a867c4c4617f6ec223a307ebfe0eabb45e0992f74dd47722b96f3e631c0edb2a
-F ext/misc/btreeinfo.c d28ce349b40054eaa9473e835837bad7a71deec33ba13e39f963d50933bfa0f9
+F ext/misc/btreeinfo.c 89f34855e26feee3907a15da534cfb5a723e214c0f2bc14b0445804f484f9430
 F ext/misc/carray.c b752f46411e4e47e34dce6f0c88bc8e51bb821ba9e49bfcd882506451c928f69
 F ext/misc/carray.h d2b1b12486d531367c37832d3d0dad34eea4bdd83ed839d445521ef01f0bc4e3
 F ext/misc/cksumvfs.c b42ef52eaaa510d54ec320c87bea149e934a3b06cd232be2093562bf669bd572
-F ext/misc/closure.c dbfd8543b2a017ae6b1a5843986b22ddf99ff126ec9634a2f4047cd14c85c243
-F ext/misc/completion.c 6dafd7f4348eecc7be9e920d4b419d1fb2af75d938cd9c59a20cfe8beb2f22b9
+F ext/misc/closure.c 0ef3169a738e02e903bb9a6a8667d486edda7c2bb6bdd61239c750102f7529f9
+F ext/misc/completion.c 638c2106f5f3089c30602e3f14e8bd26c6c8f8a0c71719b72277a392d00f8401
 F ext/misc/compress.c 3354c77a7c8e86e07d849916000cdac451ed96500bfb5bd83b20eb61eee012c9
 F ext/misc/csv.c ca8d6dafc5469639de81937cb66ae2e6b358542aba94c4f791910d355a8e7f73
-F ext/misc/dbdata.c e316fba936571584e55abd5b974a32a191727a6b746053a0c9d439bd2cf93940
+F ext/misc/dbdata.c 66195779c30941ba5562c0ef562f58c6f365ae5a944435e9b67ef434e61f17be
 F ext/misc/dbdump.c b8592f6f2da292c62991a13864a60d6c573c47a9cc58362131b9e6a64f823e01
 F ext/misc/decimal.c 09f967dcf4a1ee35a76309829308ec278d3648168733f4a1147820e11ebefd12
 F ext/misc/eval.c 04bc9aada78c888394204b4ed996ab834b99726fb59603b0ee3ed6e049755dc1
-F ext/misc/explain.c 0086fab288d4352ea638cf40ac382aad3b0dc5e845a1ea829a694c015fd970fe
-F ext/misc/fileio.c 4e7f7cd30de8df4820c552f14af3c9ca451c5ffe1f2e7bef34d598a12ebfb720
-F ext/misc/fossildelta.c 1240b2d3e52eab1d50c160c7fe1902a9bd210e052dc209200a750bbf885402d5
+F ext/misc/explain.c b750dc64eb61a2eb6d43ac2950c211581bfd5f8fe742319e25e53940f9f6e423
+F ext/misc/fileio.c a96bd8bb760543e6737e78edfdb133d528f04d00d7b8f150c4b10517c8ba2eed
+F ext/misc/fossildelta.c 9d11a0e032e32f8e77d47b2e37930a1f3655668f2f0b8fc7c9ef5e31258e50ea
 F ext/misc/fuzzer.c eae560134f66333e9e1ca4c8ffea75df42056e2ce8456734565dbe1c2a92bf3d
 F ext/misc/ieee754.c 984d51fe23e956484ec1049df6f5257002e3ab338cabceb39761c2e80ad10bf4
-F ext/misc/memstat.c 3017a0832c645c0f8c773435620d663855f04690172316bd127270d1a7523d4d
+F ext/misc/memstat.c 509083ef7a45431ed02a1694879462310fcac524af8db320ecd0ec2e28caf50b
 F ext/misc/memtrace.c 7c0d115d2ef716ad0ba632c91e05bd119cb16c1aedf3bec9f06196ead2d5537b
 F ext/misc/memvfs.c 7dffa8cc89c7f2d73da4bd4ccea1bcbd2bd283e3bb4cea398df7c372a197291b
 F ext/misc/mmapwarm.c 347caa99915fb254e8949ec131667b7fae99e2a9ce91bd468efb6dc372d9b7a9
@@ -332,31 +332,31 @@ F ext/misc/nextchar.c 7877914c2a80c2f181dd04c3dbef550dfb54c93495dc03da2403b5dd58
 F ext/misc/noop.c 81efe4cad9ec740e64388b14281cb983e6e2c223fed43eb77ab3e34946e0c1ab
 F ext/misc/normalize.c bd84355c118e297522aba74de34a4fd286fc775524e0499b14473918d09ea61f
 F ext/misc/percentile.c b9086e223d583bdaf8cb73c98a6539d501a2fc4282654adbfea576453d82e691
-F ext/misc/prefixes.c 0f4f8cff5aebc00a7e3ac4021fd59cfe1a8e17c800ceaf592859ecb9cbc38196
-F ext/misc/qpvtab.c 09738419e25f603a35c0ac8bd0a04daab794f48d08a9bc07a6085b9057b99009
+F ext/misc/prefixes.c f96de6685559abb661bcc96861dcd37a685364c71a3becacf8a809012750c7af
+F ext/misc/qpvtab.c fe47ff3d42e6734b33aa7505523953f74eaea97f122f569a47c65d19ab8100b2
 F ext/misc/regexp.c 5abed0ace2d9340b42b9ab1dbe64db9c276e4e8eba38a903232b6253e05ccdaf
 F ext/misc/remember.c add730f0f7e7436cd15ea3fd6a90fd83c3f706ab44169f7f048438b7d6baa69c
 F ext/misc/rot13.c 51ac5f51e9d5fd811db58a9c23c628ad5f333c173f1fc53c8491a3603d38556c
 F ext/misc/scrub.c 2a44b0d44c69584c0580ad2553f6290a307a49df4668941d2812135bfb96a946
-F ext/misc/series.c 8d79354f2c3d46b95ee21272a07cf0bcabb58d1f2b06d9e7b8a31dca1dacb3e5
+F ext/misc/series.c fba5f7221bd4e255492bc29e2b386a9b63eb91b86a86c11e98b5996274970ffe
 F ext/misc/sha1.c 4011aef176616872b2a0d5bccf0ecfb1f7ce3fe5c3d107f3a8e949d8e1e3f08d
 F ext/misc/shathree.c 7b17615869a495659f1569ada1d8d3d21b4a24614f2746d93cc87ef7c0b6b36d
 F ext/misc/showauth.c 732578f0fe4ce42d577e1c86dc89dd14a006ab52
 F ext/misc/spellfix.c 94df9bbfa514a563c1484f684a2df3d128a2f7209a84ca3ca100c68a0163e29f
 F ext/misc/sqlar.c 0ace5d3c10fe736dc584bf1159a36b8e2e60fab309d310cd8a0eecd9036621b6
-F ext/misc/stmt.c ed05ad78013edccd43f4fc33d8244001f6f886eb2dfd2106ba33616ac514c6fb
-F ext/misc/templatevtab.c 8a16a91a5ceaccfcbd6aaaa56d46828806e460dd194965b3f77bf38f14b942c4
+F ext/misc/stmt.c 83f73c3ba77487637281b1b92089bffa5bcaeafadae50ed64a94afbab9a00481
+F ext/misc/templatevtab.c 6f90d41cc09a9cf8948aeb9bb5d38c79b35322438d0c58569d153ed703bcd8eb
 F ext/misc/totype.c fa4aedeb07f66169005dffa8de3b0a2b621779fd44f85c103228a42afa71853b
 F ext/misc/uint.c 053fed3bce2e89583afcd4bf804d75d659879bbcedac74d0fa9ed548839a030b
-F ext/misc/unionvtab.c 36237f0607ca954ac13a4a0e2d2ac40c33bc6e032a5f55f431713061ef1625f9
+F ext/misc/unionvtab.c a03e6fdc9e50328b17b5d327677ccd1d6ca2e955e2ae9c5cb4affb171b7d4dfe
 F ext/misc/urifuncs.c f71360d14fa9e7626b563f1f781c6148109462741c5235ac63ae0f8917b9c751
 F ext/misc/uuid.c 5bb2264c1b64d163efa46509544fd7500cb8769cb7c16dd52052da8d961505cf
 F ext/misc/vfslog.c 3932ab932eeb2601dbc4447cb14d445aaa9fbe43b863ef5f014401c3420afd20
 F ext/misc/vfsstat.c 474d08efc697b8eba300082cb1eb74a5f0f3df31ed257db1cb07e72ab0e53dfb
-F ext/misc/vtablog.c 5538acd0c8ddaae372331bee11608d76973436b77d6a91e8635cfc9432fba5ae
+F ext/misc/vtablog.c 9d55383743afc57e420fb9e43071f76d6c4f242af84c949297695820f683727a
 F ext/misc/vtshim.c 1976e6dd68dd0d64508c91a6dfab8e75f8aaf6cd
 F ext/misc/wholenumber.c a838d1bea913c514ff316c69695efbb49ea3b8cb37d22afc57f73b6b010b4546
-F ext/misc/zipfile.c 22afe121d1a5e318453b7cdbc0f5492161d2fd4fce548ff3605da05e89be7140
+F ext/misc/zipfile.c b7bd56f9033c5b7c45dd5ca1fce5572b4313f8532ee2495558a70c0c07e7ca8f
 F ext/misc/zorder.c b0ff58fa643afa1d846786d51ea8d5c4b6b35aa0254ab5a82617db92f3adda64
 F ext/rbu/rbu.c 801450b24eaf14440d8fd20385aacc751d5c9d6123398df41b1b5aa804bf4ce8
 F ext/rbu/rbu1.test c62904bd9526dcdc3496a21199aaf14ae191bbadbf67f076bf16be6b3f2115c2
@@ -413,8 +413,8 @@ F ext/repair/test/checkfreelist01.test 3e8aa6aeb4007680c94a8d07b41c339aa635cc782
 F ext/repair/test/checkindex01.test b530f141413b587c9eb78ff734de6bb79bc3515c335096108c12c01bddbadcec
 F ext/repair/test/test.tcl 686d76d888dffd021f64260abf29a55c57b2cedfa7fc69150b42b1d6119aac3c
 F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
-F ext/rtree/geopoly.c cc3f89c11abcf114fa60d74709ae8b5bc1eae5a261b30bc1bb7085089c03bfab
-F ext/rtree/rtree.c d7b4b8b81d8d54376a7f81de5be85ec58b37c11604bcf42984a8418b34158d93
+F ext/rtree/geopoly.c e3cddfeb55a02f603f4c3f0cd6fdef343dee394434f5686d16b21b249c124293
+F ext/rtree/rtree.c 64be894f80bd408651b33b2d90e6c48b15c1306998b2776b2cccb8e4bbb08271
 F ext/rtree/rtree.h 4a690463901cb5e6127cf05eb8e642f127012fd5003830dbc974eca5802d9412
 F ext/rtree/rtree1.test d47f58832145fcfed9067bc457ca8664962196c4566c17a1ebd679367db55d11
 F ext/rtree/rtree2.test 9d9deddbb16fd0c30c36e6b4fdc3ee3132d765567f0f9432ee71e1303d32603d
@@ -513,13 +513,13 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
 F src/btree.c 1307d57f65023c9f37c2b6c62253343fca63877f161f694a593b14c0883cedda
 F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
 F src/btreeInt.h 8ce1332edd89dfd2461d561ac10a0ab5601c8e06200cb5230596c3caaf54482e
-F src/build.c 29fcc97af5197511788a571ed35a001eea472cbe3bcdbae88178e17fcafd4341
+F src/build.c acc401cea564a15cf61c8dbb0f5e286cedba890fdf94004017e42ca86297c5c1
 F src/callback.c 4c19af69835787bfe790ac560f3071a824eb629f34e41f97b52ce5235c77de1c
 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
 F src/ctime.c 026dbdcdbd8c3cde98a88483ee88310ff43150ab164ad768f12cc700a11495ad
 F src/date.c 272162554168e7af4976213850e1c4c5f33b964d299ceb0983f3d5cceba01d05
-F src/dbpage.c 5808e91bc27fa3981b028000f8fadfdc10ce9e59a34ce7dc4e035a69be3906ec
-F src/dbstat.c 861e08690fcb0f2ee1165eff0060ea8d4f3e2ea10f80dab7d32ad70443a6ff2d
+F src/dbpage.c 7ffeea65d78cf92ba576bf1b95713fc82676b8b7ecf3f3962e0f4f0fc48c2c0c
+F src/dbstat.c 6a78b43639235b608c0f340815216cb4fae185efb398cc2f3fbb12a0deba72e4
 F src/delete.c a8e844af211a48b13b5b358be77a12c860c6a557c21990ad51a548e2536500ce
 F src/expr.c 44f6b019a581f7c5a6599464d76d19111427edfa2710b4f007968fc64aaed0d1
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
@@ -531,7 +531,7 @@ F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51
 F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144
 F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
 F src/insert.c 173845e5a6bac96ae937409e4f876b631f26b31dabb9df8fd0eb3b130b2bb3a7
-F src/json.c 7749b98c62f691697c7ee536b570c744c0583cab4a89200fdd0fc2aa8cc8cbd6
+F src/json.c a39f1702dc37d9d86c34f684b4d6425c9de27d26c8229891578d379ed67fd3a4
 F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
 F src/loadext.c 853385cc7a604157e137585097949252d5d0c731768e16b044608e5c95c3614b
 F src/main.c b91c7e71af6f33640c35b8239a285040aad8dfcfdaaf979152e743c0f8017ea8
@@ -563,7 +563,7 @@ F src/parse.y 8e67d820030d2655b9942ffe61c1e7e6b96cea2f2f72183533299393907d0564
 F src/pcache.c 084e638432c610f95aea72b8509f0845d2791293f39d1b82f0c0a7e089c3bb6b
 F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
 F src/pcache1.c 54881292a9a5db202b2c0ac541c5e3ef9a5e8c4f1c1383adb2601d5499a60e65
-F src/pragma.c d1aead03e8418ff586c7cfca344c50a914b8eb06abd841e8e91a982d823671da
+F src/pragma.c d2612488c115f78dc5152fa3f1e8fb8e3443eec463707e072e0707d59c98eb5f
 F src/pragma.h e690a356c18e98414d2e870ea791c1be1545a714ba623719deb63f7f226d8bb7
 F src/prepare.c c62820c15dcb63013519c8e41d9f928d7478672cc902cfd0581c733c271dbf45
 F src/printf.c e99ee9741e79ae3873458146f59644276657340385ade4e76a5f5d1c25793764
@@ -572,7 +572,7 @@ F src/resolve.c efea4e5fbecfd6d0a9071b0be0d952620991673391b6ffaaf4c277b0bb674633
 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
 F src/select.c 45b93eee3c349f46240ddc14344365bbf34579ec332bd4c7bc061945e38172e2
 F src/shell.c.in 29749b34bbd19d0004fdb6f61f62659096e1c0b4dfb1ad2314e7fafbe9dd8d37
-F src/sqlite.h.in be265991edca9aea69986758b58ba81cbf5ae403fe0c4ea1d0c9df0cdc8f25ed
+F src/sqlite.h.in 2a2e89caa6826eb6ade6623c853b67b7f3992f8c1c9d41fded3cf6f41c0fd84c
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h a988810c9b21c0dc36dc7a62735012339dc76fc7ab448fb0792721d30eacb69d
 F src/sqliteInt.h c97b6351dba36b7bacd231610cd7173e7a7ef8469c2d9b849037415e0b1d8c79
@@ -651,7 +651,7 @@ F src/vdbeblob.c 5e61ce31aca17db8fb60395407457a8c1c7fb471dde405e0cd675974611dcfc
 F src/vdbemem.c 5ebf05c0182addedb1607ade848e1c83cef40981df94d1abfab0c59288c6064f
 F src/vdbesort.c 43756031ca7430f7aec3ef904824a7883c4ede783e51f280d99b9b65c0796e35
 F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf823
-F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c
+F src/vdbevtab.c b2530a32d1978070e0dc6761cc58ec8db5f40bf6cfaf1c9989c8287340bc2cf4
 F src/vtab.c 3d72c780d1ea08906a198e4f033921a658a54590e3ed72c544995d84f3f9464a
 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
 F src/wal.c b9df133a705093da8977da5eb202eaadb844839f1c7297c08d33471f5491843d
@@ -1981,8 +1981,11 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P c538d075350927222ab0a6598b844f7b15153c5dc008d71b921a2b73c4f4a7a4
-R 0a28921b7e90ddf823369af11249c300
-U drh
-Z 8e5ad3553ebf08b44289f99a5ac2ab7d
+P 28934a9d92d5e5ac862a0dc7169f071f39047f98dc79441db697cf353a4b9433
+R a4161f0056fd022904f14dd60f6489c3
+T *branch * xShadowName2
+T *sym-xShadowName2 *
+T -sym-trunk *
+U mistachkin
+Z e83a6f5786fc037d59d154d976bd34e1
 # Remove this line to create a well-formed Fossil manifest.
index 15e2267724c945e5ce4670e72ee256c1f2a9680b..00afbb343a815ff322d4b5c7b0b8c92d50093514 100644 (file)
@@ -1 +1 @@
-28934a9d92d5e5ac862a0dc7169f071f39047f98dc79441db697cf353a4b9433
\ No newline at end of file
+57beb700c081b20758d52ad4d395be34ef53f71a231f3dd27613030ac232bca8
\ No newline at end of file
index 31ab81b09bc99d844d3989a8970f6b7aba3990a2..43869e6abccd4c85d5eeeaf77f1911638c55b550 100644 (file)
@@ -2491,6 +2491,51 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
 
 
 #ifndef SQLITE_OMIT_VIRTUALTABLE
+/*
+** Returns non-zero if the module supports at least one of the xShadowName
+** or xShadowName2 methods.
+*/
+static int doesSupportShadowNames(
+  const sqlite3_module *pModule, /* The definition of the module */
+  VTable *pVTab                  /* The virtual table being asked */
+){
+  int iVersion;
+  assert( pModule!=0 );
+  iVersion = pModule->iVersion;
+  if( pVTab!=0 && iVersion>=4 && pModule->xShadowName2!=0 ) return 1;
+  if( iVersion>=3 && pModule->xShadowName!=0 ) return 1;
+  return 0;
+}
+
+/*
+** Attempts to calls one of the module xShadowName methods and returns its
+** result.  The xShadowName2 method will be preferred when supported (i.e.
+** the module is version 4 or later and has an xShadowName2 method).
+*/
+static int isShadowTableOf(
+  sqlite3 *db,      /* Database connection */
+  Table *pTab,      /* The Table that refers to the virtual table */
+  Module *pMod,     /* Definition of the module */
+  VTable *pVTab,    /* The virtual table being asked */
+  const char *zName /* Table name that may refer to a shadow table */
+){
+  int iVersion;
+  assert( pMod!=0 );
+  assert( pMod->pModule!=0 );
+  iVersion = pMod->pModule->iVersion;
+  assert( iVersion>=3 );
+  assert( zName!=0 );
+  assert( sqlite3Strlen30(zName)>0 );
+  if( pVTab!=0 && iVersion>=4 && pMod->pModule->xShadowName2!=0 ){
+    assert( pVTab->pVtab!=0 );
+    return pMod->pModule->xShadowName2(pVTab->pVtab, zName);
+  }
+  if( pMod->pModule->xShadowName!=0 ){
+    return pMod->pModule->xShadowName(zName);
+  }
+  return 0;
+}
+
 /*
 ** Return true if pTab is a virtual table and zName is a shadow table name
 ** for that virtual table.
@@ -2498,6 +2543,7 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
 int sqlite3IsShadowTableOf(sqlite3 *db, Table *pTab, const char *zName){
   int nName;                    /* Length of zName */
   Module *pMod;                 /* Module for the virtual table */
+  VTable *pVTab;                /* The virtual table being asked */
 
   if( !IsVirtual(pTab) ) return 0;
   nName = sqlite3Strlen30(pTab->zName);
@@ -2505,9 +2551,10 @@ int sqlite3IsShadowTableOf(sqlite3 *db, Table *pTab, const char *zName){
   if( zName[nName]!='_' ) return 0;
   pMod = (Module*)sqlite3HashFind(&db->aModule, pTab->u.vtab.azArg[0]);
   if( pMod==0 ) return 0;
-  if( pMod->pModule->iVersion<3 ) return 0;
-  if( pMod->pModule->xShadowName==0 ) return 0;
-  return pMod->pModule->xShadowName(zName+nName+1);
+  if( NEVER(pMod->pModule==0) ) return 0;
+  pVTab = sqlite3GetVTable(db, pTab);
+  if( !doesSupportShadowNames(pMod->pModule, pVTab) ) return 0;
+  return isShadowTableOf(db, pTab, pMod, pVTab, zName+nName+1);
 }
 #endif /* ifndef SQLITE_OMIT_VIRTUALTABLE */
 
@@ -2521,14 +2568,15 @@ int sqlite3IsShadowTableOf(sqlite3 *db, Table *pTab, const char *zName){
 void sqlite3MarkAllShadowTablesOf(sqlite3 *db, Table *pTab){
   int nName;                    /* Length of pTab->zName */
   Module *pMod;                 /* Module for the virtual table */
+  VTable *pVTab;                /* Virtual table instance */
   HashElem *k;                  /* For looping through the symbol table */
 
   assert( IsVirtual(pTab) );
   pMod = (Module*)sqlite3HashFind(&db->aModule, pTab->u.vtab.azArg[0]);
   if( pMod==0 ) return;
   if( NEVER(pMod->pModule==0) ) return;
-  if( pMod->pModule->iVersion<3 ) return;
-  if( pMod->pModule->xShadowName==0 ) return;
+  pVTab = sqlite3GetVTable(db, pTab);
+  if( !doesSupportShadowNames(pMod->pModule, pVTab) ) return;
   assert( pTab->zName!=0 );
   nName = sqlite3Strlen30(pTab->zName);
   for(k=sqliteHashFirst(&pTab->pSchema->tblHash); k; k=sqliteHashNext(k)){
@@ -2538,7 +2586,7 @@ void sqlite3MarkAllShadowTablesOf(sqlite3 *db, Table *pTab){
     if( pOther->tabFlags & TF_Shadow ) continue;
     if( sqlite3StrNICmp(pOther->zName, pTab->zName, nName)==0
      && pOther->zName[nName]=='_'
-     && pMod->pModule->xShadowName(pOther->zName+nName+1)
+     && isShadowTableOf(db, pTab, pMod, pVTab, pOther->zName+nName+1)
     ){
       pOther->tabFlags |= TF_Shadow;
     }
index 9b565177c54b465f93bfff08bd4142e84508d950..0d4bb7a4531d334539d485f82095c9c73bd55859 100644 (file)
@@ -409,7 +409,8 @@ int sqlite3DbpageRegister(sqlite3 *db){
     0,                            /* xSavepoint */
     0,                            /* xRelease */
     0,                            /* xRollbackTo */
-    0                             /* xShadowName */
+    0,                            /* xShadowName */
+    0                             /* xShadowName2 */
   };
   return sqlite3_create_module(db, "sqlite_dbpage", &dbpage_module, 0);
 }
index bb88a76f4081a61ced4112f5c97e152b4c60f2d1..13068376d03200807d844be0c53351fe836dc728 100644 (file)
@@ -891,7 +891,8 @@ int sqlite3DbstatRegister(sqlite3 *db){
     0,                            /* xSavepoint */
     0,                            /* xRelease */
     0,                            /* xRollbackTo */
-    0                             /* xShadowName */
+    0,                            /* xShadowName */
+    0                             /* xShadowName2 */
   };
   return sqlite3_create_module(db, "dbstat", &dbstat_module, 0);
 }
index 3636d36655cfdf5aaf7073a5bb2a48fe5f4df9d6..111e80bd8d524b213524539911890ccd7fff587f 100644 (file)
@@ -2606,7 +2606,8 @@ static sqlite3_module jsonEachModule = {
   0,                         /* xSavepoint */
   0,                         /* xRelease */
   0,                         /* xRollbackTo */
-  0                          /* xShadowName */
+  0,                         /* xShadowName */
+  0                          /* xShadowName2 */
 };
 
 /* The methods of the json_tree virtual table. */
@@ -2634,7 +2635,8 @@ static sqlite3_module jsonTreeModule = {
   0,                         /* xSavepoint */
   0,                         /* xRelease */
   0,                         /* xRollbackTo */
-  0                          /* xShadowName */
+  0,                         /* xShadowName */
+  0                          /* xShadowName2 */
 };
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
 #endif /* !defined(SQLITE_OMIT_JSON) */
index 9860da86d7d057f83c06d8b2f07a1b2314fc69bb..317b8efdc8c653f7f2cd7dd1ca03dd138eeb9deb 100644 (file)
@@ -2695,7 +2695,8 @@ static const sqlite3_module pragmaVtabModule = {
   0,                           /* xSavepoint */
   0,                           /* xRelease */
   0,                           /* xRollbackTo */
-  0                            /* xShadowName */
+  0,                           /* xShadowName */
+  0                            /* xShadowName2 */
 };
 
 /*
index f6b49b4d8831d935f93bbf7d42773cd7719526ad..a912ac6e9c2d2a360b785f66e9a1508ca265c2ea 100644 (file)
@@ -7014,6 +7014,9 @@ struct sqlite3_module {
   /* The methods above are in versions 1 and 2 of the sqlite_module object.
   ** Those below are for version 3 and greater. */
   int (*xShadowName)(const char*);
+  /* The methods above are in versions 1, 2, or 3 of the sqlite_module object.
+  ** Those below are for version 4 and greater. */
+  int (*xShadowName2)(sqlite3_vtab *pVTab, const char*);
 };
 
 /*
index e9bafd450fd61bf791fb2805b1184d836c4e280e..c1bc306ba92384b293192a4726d6c7418d6ed87b 100644 (file)
@@ -384,30 +384,31 @@ static int bytecodevtabBestIndex(
 ** virtual table.
 */
 static sqlite3_module bytecodevtabModule = {
-  /* iVersion    */ 0,
-  /* xCreate     */ 0,
-  /* xConnect    */ bytecodevtabConnect,
-  /* xBestIndex  */ bytecodevtabBestIndex,
-  /* xDisconnect */ bytecodevtabDisconnect,
-  /* xDestroy    */ 0,
-  /* xOpen       */ bytecodevtabOpen,
-  /* xClose      */ bytecodevtabClose,
-  /* xFilter     */ bytecodevtabFilter,
-  /* xNext       */ bytecodevtabNext,
-  /* xEof        */ bytecodevtabEof,
-  /* xColumn     */ bytecodevtabColumn,
-  /* xRowid      */ bytecodevtabRowid,
-  /* xUpdate     */ 0,
-  /* xBegin      */ 0,
-  /* xSync       */ 0,
-  /* xCommit     */ 0,
-  /* xRollback   */ 0,
-  /* xFindMethod */ 0,
-  /* xRename     */ 0,
-  /* xSavepoint  */ 0,
-  /* xRelease    */ 0,
-  /* xRollbackTo */ 0,
-  /* xShadowName */ 0
+  /* iVersion     */ 0,
+  /* xCreate      */ 0,
+  /* xConnect     */ bytecodevtabConnect,
+  /* xBestIndex   */ bytecodevtabBestIndex,
+  /* xDisconnect  */ bytecodevtabDisconnect,
+  /* xDestroy     */ 0,
+  /* xOpen        */ bytecodevtabOpen,
+  /* xClose       */ bytecodevtabClose,
+  /* xFilter      */ bytecodevtabFilter,
+  /* xNext        */ bytecodevtabNext,
+  /* xEof         */ bytecodevtabEof,
+  /* xColumn      */ bytecodevtabColumn,
+  /* xRowid       */ bytecodevtabRowid,
+  /* xUpdate      */ 0,
+  /* xBegin       */ 0,
+  /* xSync        */ 0,
+  /* xCommit      */ 0,
+  /* xRollback    */ 0,
+  /* xFindMethod  */ 0,
+  /* xRename      */ 0,
+  /* xSavepoint   */ 0,
+  /* xRelease     */ 0,
+  /* xRollbackTo  */ 0,
+  /* xShadowName  */ 0,
+  /* xShadowName2 */ 0
 };