Fossil SCM

Update the built-in SQLite to the latest 3.36.0 beta, including the bug fix to the authorizer callback such that it uses SQLITE_DROP_INDEX, not SQLITE_DROP_TEMP_INDEX, for attached indexes.

drh 2021-06-14 20:43 trunk
Commit a9917d4fc7da32d3479fe949bdf2f7aeb3f1aa9cf3e93b168c204e3dad7625c4
2 files changed +22 -8 +1 -1
+22 -8
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1205,11 +1205,11 @@
12051205
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
12061206
** [sqlite_version()] and [sqlite_source_id()].
12071207
*/
12081208
#define SQLITE_VERSION "3.36.0"
12091209
#define SQLITE_VERSION_NUMBER 3036000
1210
-#define SQLITE_SOURCE_ID "2021-06-14 14:52:27 3ddfe9ae55e6d0d922fbc209768b2ac4a4792f0f63af9a8fb53d66a4b8f1d94b"
1210
+#define SQLITE_SOURCE_ID "2021-06-14 20:41:20 e5a5acd6006133c5da4a7dd79726dbaa41c0d60ebeda890f848a6aafe5f9ef70"
12111211
12121212
/*
12131213
** CAPI3REF: Run-Time Library Version Numbers
12141214
** KEYWORDS: sqlite3_version sqlite3_sourceid
12151215
**
@@ -18801,10 +18801,11 @@
1880118801
#define SF_View 0x0200000 /* SELECT statement is a view */
1880218802
#define SF_NoopOrderBy 0x0400000 /* ORDER BY is ignored for this query */
1880318803
#define SF_UpdateFrom 0x0800000 /* Statement is an UPDATE...FROM */
1880418804
#define SF_PushDown 0x1000000 /* SELECT has be modified by push-down opt */
1880518805
#define SF_MultiPart 0x2000000 /* Has multiple incompatible PARTITIONs */
18806
+#define SF_CopyCte 0x4000000 /* SELECT statement is a copy of a CTE */
1880618807
1880718808
/*
1880818809
** The results of a SELECT can be distributed in several ways, as defined
1880918810
** by one of the following macros. The "SRT" prefix means "SELECT Result
1881018811
** Type".
@@ -108238,11 +108239,15 @@
108238108239
*/
108239108240
static int renameUnmapSelectCb(Walker *pWalker, Select *p){
108240108241
Parse *pParse = pWalker->pParse;
108241108242
int i;
108242108243
if( pParse->nErr ) return WRC_Abort;
108243
- if( p->selFlags & SF_View ) return WRC_Prune;
108244
+ if( p->selFlags & (SF_View|SF_CopyCte) ){
108245
+ testcase( pSelect->selFlags & SF_View );
108246
+ testcase( pSelect->selFlags & SF_CopyCte );
108247
+ return WRC_Prune;
108248
+ }
108244108249
if( ALWAYS(p->pEList) ){
108245108250
ExprList *pList = p->pEList;
108246108251
for(i=0; i<pList->nExpr; i++){
108247108252
if( pList->a[i].zEName && pList->a[i].eEName==ENAME_NAME ){
108248108253
sqlite3RenameTokenRemap(pParse, 0, (void*)pList->a[i].zEName);
@@ -108346,11 +108351,15 @@
108346108351
** This is a Walker select callback. It does nothing. It is only required
108347108352
** because without a dummy callback, sqlite3WalkExpr() and similar do not
108348108353
** descend into sub-select statements.
108349108354
*/
108350108355
static int renameColumnSelectCb(Walker *pWalker, Select *p){
108351
- if( p->selFlags & SF_View ) return WRC_Prune;
108356
+ if( p->selFlags & (SF_View|SF_CopyCte) ){
108357
+ testcase( pSelect->selFlags & SF_View );
108358
+ testcase( pSelect->selFlags & SF_CopyCte );
108359
+ return WRC_Prune;
108360
+ }
108352108361
renameWalkWith(pWalker, p);
108353108362
return WRC_Continue;
108354108363
}
108355108364
108356108365
/*
@@ -108982,11 +108991,15 @@
108982108991
*/
108983108992
static int renameTableSelectCb(Walker *pWalker, Select *pSelect){
108984108993
int i;
108985108994
RenameCtx *p = pWalker->u.pRename;
108986108995
SrcList *pSrc = pSelect->pSrc;
108987
- if( pSelect->selFlags & SF_View ) return WRC_Prune;
108996
+ if( pSelect->selFlags & (SF_View|SF_CopyCte) ){
108997
+ testcase( pSelect->selFlags & SF_View );
108998
+ testcase( pSelect->selFlags & SF_CopyCte );
108999
+ return WRC_Prune;
109000
+ }
108988109001
if( NEVER(pSrc==0) ){
108989109002
assert( pWalker->pParse->db->mallocFailed );
108990109003
return WRC_Abort;
108991109004
}
108992109005
for(i=0; i<pSrc->nSrc; i++){
@@ -116724,11 +116737,11 @@
116724116737
const char *zDb = db->aDb[iDb].zDbSName;
116725116738
const char *zTab = SCHEMA_TABLE(iDb);
116726116739
if( sqlite3AuthCheck(pParse, SQLITE_DELETE, zTab, 0, zDb) ){
116727116740
goto exit_drop_index;
116728116741
}
116729
- if( !OMIT_TEMPDB && iDb ) code = SQLITE_DROP_TEMP_INDEX;
116742
+ if( !OMIT_TEMPDB && iDb==1 ) code = SQLITE_DROP_TEMP_INDEX;
116730116743
if( sqlite3AuthCheck(pParse, code, pIndex->zName, pTab->zName, zDb) ){
116731116744
goto exit_drop_index;
116732116745
}
116733116746
}
116734116747
#endif
@@ -137252,10 +137265,11 @@
137252137265
pTab->iPKey = -1;
137253137266
pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
137254137267
pTab->tabFlags |= TF_Ephemeral | TF_NoVisibleRowid;
137255137268
pFrom->pSelect = sqlite3SelectDup(db, pCte->pSelect, 0);
137256137269
if( db->mallocFailed ) return 2;
137270
+ pFrom->pSelect->selFlags |= SF_CopyCte;
137257137271
assert( pFrom->pSelect );
137258137272
pFrom->fg.isCte = 1;
137259137273
pFrom->u2.pCteUse = pCteUse;
137260137274
pCteUse->nUse++;
137261137275
if( pCteUse->nUse>=2 && pCteUse->eM10d==M10d_Any ){
@@ -230554,11 +230568,11 @@
230554230568
int nArg, /* Number of args */
230555230569
sqlite3_value **apUnused /* Function arguments */
230556230570
){
230557230571
assert( nArg==0 );
230558230572
UNUSED_PARAM2(nArg, apUnused);
230559
- sqlite3_result_text(pCtx, "fts5: 2021-06-14 11:20:30 7068f1f69b4feef49260e80902e6bdae47c21a0daa16c96ed1a0984dd1f14cdc", -1, SQLITE_TRANSIENT);
230573
+ sqlite3_result_text(pCtx, "fts5: 2021-06-14 20:41:20 e5a5acd6006133c5da4a7dd79726dbaa41c0d60ebeda890f848a6aafe5f9ef70", -1, SQLITE_TRANSIENT);
230560230574
}
230561230575
230562230576
/*
230563230577
** Return true if zName is the extension on one of the shadow tables used
230564230578
** by this module.
@@ -235480,12 +235494,12 @@
235480235494
}
235481235495
#endif /* SQLITE_CORE */
235482235496
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
235483235497
235484235498
/************** End of stmt.c ************************************************/
235485
-#if __LINE__!=235485
235499
+#if __LINE__!=235499
235486235500
#undef SQLITE_SOURCE_ID
235487
-#define SQLITE_SOURCE_ID "2021-06-14 14:52:27 3ddfe9ae55e6d0d922fbc209768b2ac4a4792f0f63af9a8fb53d66a4b8f1alt2"
235501
+#define SQLITE_SOURCE_ID "2021-06-14 20:41:20 e5a5acd6006133c5da4a7dd79726dbaa41c0d60ebeda890f848a6aafe5f9alt2"
235488235502
#endif
235489235503
/* Return the source-id for this library */
235490235504
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
235491235505
/************************** End of sqlite3.c ******************************/
235492235506
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1205,11 +1205,11 @@
1205 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1206 ** [sqlite_version()] and [sqlite_source_id()].
1207 */
1208 #define SQLITE_VERSION "3.36.0"
1209 #define SQLITE_VERSION_NUMBER 3036000
1210 #define SQLITE_SOURCE_ID "2021-06-14 14:52:27 3ddfe9ae55e6d0d922fbc209768b2ac4a4792f0f63af9a8fb53d66a4b8f1d94b"
1211
1212 /*
1213 ** CAPI3REF: Run-Time Library Version Numbers
1214 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1215 **
@@ -18801,10 +18801,11 @@
18801 #define SF_View 0x0200000 /* SELECT statement is a view */
18802 #define SF_NoopOrderBy 0x0400000 /* ORDER BY is ignored for this query */
18803 #define SF_UpdateFrom 0x0800000 /* Statement is an UPDATE...FROM */
18804 #define SF_PushDown 0x1000000 /* SELECT has be modified by push-down opt */
18805 #define SF_MultiPart 0x2000000 /* Has multiple incompatible PARTITIONs */
 
18806
18807 /*
18808 ** The results of a SELECT can be distributed in several ways, as defined
18809 ** by one of the following macros. The "SRT" prefix means "SELECT Result
18810 ** Type".
@@ -108238,11 +108239,15 @@
108238 */
108239 static int renameUnmapSelectCb(Walker *pWalker, Select *p){
108240 Parse *pParse = pWalker->pParse;
108241 int i;
108242 if( pParse->nErr ) return WRC_Abort;
108243 if( p->selFlags & SF_View ) return WRC_Prune;
 
 
 
 
108244 if( ALWAYS(p->pEList) ){
108245 ExprList *pList = p->pEList;
108246 for(i=0; i<pList->nExpr; i++){
108247 if( pList->a[i].zEName && pList->a[i].eEName==ENAME_NAME ){
108248 sqlite3RenameTokenRemap(pParse, 0, (void*)pList->a[i].zEName);
@@ -108346,11 +108351,15 @@
108346 ** This is a Walker select callback. It does nothing. It is only required
108347 ** because without a dummy callback, sqlite3WalkExpr() and similar do not
108348 ** descend into sub-select statements.
108349 */
108350 static int renameColumnSelectCb(Walker *pWalker, Select *p){
108351 if( p->selFlags & SF_View ) return WRC_Prune;
 
 
 
 
108352 renameWalkWith(pWalker, p);
108353 return WRC_Continue;
108354 }
108355
108356 /*
@@ -108982,11 +108991,15 @@
108982 */
108983 static int renameTableSelectCb(Walker *pWalker, Select *pSelect){
108984 int i;
108985 RenameCtx *p = pWalker->u.pRename;
108986 SrcList *pSrc = pSelect->pSrc;
108987 if( pSelect->selFlags & SF_View ) return WRC_Prune;
 
 
 
 
108988 if( NEVER(pSrc==0) ){
108989 assert( pWalker->pParse->db->mallocFailed );
108990 return WRC_Abort;
108991 }
108992 for(i=0; i<pSrc->nSrc; i++){
@@ -116724,11 +116737,11 @@
116724 const char *zDb = db->aDb[iDb].zDbSName;
116725 const char *zTab = SCHEMA_TABLE(iDb);
116726 if( sqlite3AuthCheck(pParse, SQLITE_DELETE, zTab, 0, zDb) ){
116727 goto exit_drop_index;
116728 }
116729 if( !OMIT_TEMPDB && iDb ) code = SQLITE_DROP_TEMP_INDEX;
116730 if( sqlite3AuthCheck(pParse, code, pIndex->zName, pTab->zName, zDb) ){
116731 goto exit_drop_index;
116732 }
116733 }
116734 #endif
@@ -137252,10 +137265,11 @@
137252 pTab->iPKey = -1;
137253 pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
137254 pTab->tabFlags |= TF_Ephemeral | TF_NoVisibleRowid;
137255 pFrom->pSelect = sqlite3SelectDup(db, pCte->pSelect, 0);
137256 if( db->mallocFailed ) return 2;
 
137257 assert( pFrom->pSelect );
137258 pFrom->fg.isCte = 1;
137259 pFrom->u2.pCteUse = pCteUse;
137260 pCteUse->nUse++;
137261 if( pCteUse->nUse>=2 && pCteUse->eM10d==M10d_Any ){
@@ -230554,11 +230568,11 @@
230554 int nArg, /* Number of args */
230555 sqlite3_value **apUnused /* Function arguments */
230556 ){
230557 assert( nArg==0 );
230558 UNUSED_PARAM2(nArg, apUnused);
230559 sqlite3_result_text(pCtx, "fts5: 2021-06-14 11:20:30 7068f1f69b4feef49260e80902e6bdae47c21a0daa16c96ed1a0984dd1f14cdc", -1, SQLITE_TRANSIENT);
230560 }
230561
230562 /*
230563 ** Return true if zName is the extension on one of the shadow tables used
230564 ** by this module.
@@ -235480,12 +235494,12 @@
235480 }
235481 #endif /* SQLITE_CORE */
235482 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
235483
235484 /************** End of stmt.c ************************************************/
235485 #if __LINE__!=235485
235486 #undef SQLITE_SOURCE_ID
235487 #define SQLITE_SOURCE_ID "2021-06-14 14:52:27 3ddfe9ae55e6d0d922fbc209768b2ac4a4792f0f63af9a8fb53d66a4b8f1alt2"
235488 #endif
235489 /* Return the source-id for this library */
235490 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
235491 /************************** End of sqlite3.c ******************************/
235492
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1205,11 +1205,11 @@
1205 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1206 ** [sqlite_version()] and [sqlite_source_id()].
1207 */
1208 #define SQLITE_VERSION "3.36.0"
1209 #define SQLITE_VERSION_NUMBER 3036000
1210 #define SQLITE_SOURCE_ID "2021-06-14 20:41:20 e5a5acd6006133c5da4a7dd79726dbaa41c0d60ebeda890f848a6aafe5f9ef70"
1211
1212 /*
1213 ** CAPI3REF: Run-Time Library Version Numbers
1214 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1215 **
@@ -18801,10 +18801,11 @@
18801 #define SF_View 0x0200000 /* SELECT statement is a view */
18802 #define SF_NoopOrderBy 0x0400000 /* ORDER BY is ignored for this query */
18803 #define SF_UpdateFrom 0x0800000 /* Statement is an UPDATE...FROM */
18804 #define SF_PushDown 0x1000000 /* SELECT has be modified by push-down opt */
18805 #define SF_MultiPart 0x2000000 /* Has multiple incompatible PARTITIONs */
18806 #define SF_CopyCte 0x4000000 /* SELECT statement is a copy of a CTE */
18807
18808 /*
18809 ** The results of a SELECT can be distributed in several ways, as defined
18810 ** by one of the following macros. The "SRT" prefix means "SELECT Result
18811 ** Type".
@@ -108238,11 +108239,15 @@
108239 */
108240 static int renameUnmapSelectCb(Walker *pWalker, Select *p){
108241 Parse *pParse = pWalker->pParse;
108242 int i;
108243 if( pParse->nErr ) return WRC_Abort;
108244 if( p->selFlags & (SF_View|SF_CopyCte) ){
108245 testcase( pSelect->selFlags & SF_View );
108246 testcase( pSelect->selFlags & SF_CopyCte );
108247 return WRC_Prune;
108248 }
108249 if( ALWAYS(p->pEList) ){
108250 ExprList *pList = p->pEList;
108251 for(i=0; i<pList->nExpr; i++){
108252 if( pList->a[i].zEName && pList->a[i].eEName==ENAME_NAME ){
108253 sqlite3RenameTokenRemap(pParse, 0, (void*)pList->a[i].zEName);
@@ -108346,11 +108351,15 @@
108351 ** This is a Walker select callback. It does nothing. It is only required
108352 ** because without a dummy callback, sqlite3WalkExpr() and similar do not
108353 ** descend into sub-select statements.
108354 */
108355 static int renameColumnSelectCb(Walker *pWalker, Select *p){
108356 if( p->selFlags & (SF_View|SF_CopyCte) ){
108357 testcase( pSelect->selFlags & SF_View );
108358 testcase( pSelect->selFlags & SF_CopyCte );
108359 return WRC_Prune;
108360 }
108361 renameWalkWith(pWalker, p);
108362 return WRC_Continue;
108363 }
108364
108365 /*
@@ -108982,11 +108991,15 @@
108991 */
108992 static int renameTableSelectCb(Walker *pWalker, Select *pSelect){
108993 int i;
108994 RenameCtx *p = pWalker->u.pRename;
108995 SrcList *pSrc = pSelect->pSrc;
108996 if( pSelect->selFlags & (SF_View|SF_CopyCte) ){
108997 testcase( pSelect->selFlags & SF_View );
108998 testcase( pSelect->selFlags & SF_CopyCte );
108999 return WRC_Prune;
109000 }
109001 if( NEVER(pSrc==0) ){
109002 assert( pWalker->pParse->db->mallocFailed );
109003 return WRC_Abort;
109004 }
109005 for(i=0; i<pSrc->nSrc; i++){
@@ -116724,11 +116737,11 @@
116737 const char *zDb = db->aDb[iDb].zDbSName;
116738 const char *zTab = SCHEMA_TABLE(iDb);
116739 if( sqlite3AuthCheck(pParse, SQLITE_DELETE, zTab, 0, zDb) ){
116740 goto exit_drop_index;
116741 }
116742 if( !OMIT_TEMPDB && iDb==1 ) code = SQLITE_DROP_TEMP_INDEX;
116743 if( sqlite3AuthCheck(pParse, code, pIndex->zName, pTab->zName, zDb) ){
116744 goto exit_drop_index;
116745 }
116746 }
116747 #endif
@@ -137252,10 +137265,11 @@
137265 pTab->iPKey = -1;
137266 pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
137267 pTab->tabFlags |= TF_Ephemeral | TF_NoVisibleRowid;
137268 pFrom->pSelect = sqlite3SelectDup(db, pCte->pSelect, 0);
137269 if( db->mallocFailed ) return 2;
137270 pFrom->pSelect->selFlags |= SF_CopyCte;
137271 assert( pFrom->pSelect );
137272 pFrom->fg.isCte = 1;
137273 pFrom->u2.pCteUse = pCteUse;
137274 pCteUse->nUse++;
137275 if( pCteUse->nUse>=2 && pCteUse->eM10d==M10d_Any ){
@@ -230554,11 +230568,11 @@
230568 int nArg, /* Number of args */
230569 sqlite3_value **apUnused /* Function arguments */
230570 ){
230571 assert( nArg==0 );
230572 UNUSED_PARAM2(nArg, apUnused);
230573 sqlite3_result_text(pCtx, "fts5: 2021-06-14 20:41:20 e5a5acd6006133c5da4a7dd79726dbaa41c0d60ebeda890f848a6aafe5f9ef70", -1, SQLITE_TRANSIENT);
230574 }
230575
230576 /*
230577 ** Return true if zName is the extension on one of the shadow tables used
230578 ** by this module.
@@ -235480,12 +235494,12 @@
235494 }
235495 #endif /* SQLITE_CORE */
235496 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
235497
235498 /************** End of stmt.c ************************************************/
235499 #if __LINE__!=235499
235500 #undef SQLITE_SOURCE_ID
235501 #define SQLITE_SOURCE_ID "2021-06-14 20:41:20 e5a5acd6006133c5da4a7dd79726dbaa41c0d60ebeda890f848a6aafe5f9alt2"
235502 #endif
235503 /* Return the source-id for this library */
235504 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
235505 /************************** End of sqlite3.c ******************************/
235506
+1 -1
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123123
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124124
** [sqlite_version()] and [sqlite_source_id()].
125125
*/
126126
#define SQLITE_VERSION "3.36.0"
127127
#define SQLITE_VERSION_NUMBER 3036000
128
-#define SQLITE_SOURCE_ID "2021-06-14 14:52:27 3ddfe9ae55e6d0d922fbc209768b2ac4a4792f0f63af9a8fb53d66a4b8f1d94b"
128
+#define SQLITE_SOURCE_ID "2021-06-14 20:41:20 e5a5acd6006133c5da4a7dd79726dbaa41c0d60ebeda890f848a6aafe5f9ef70"
129129
130130
/*
131131
** CAPI3REF: Run-Time Library Version Numbers
132132
** KEYWORDS: sqlite3_version sqlite3_sourceid
133133
**
134134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.36.0"
127 #define SQLITE_VERSION_NUMBER 3036000
128 #define SQLITE_SOURCE_ID "2021-06-14 14:52:27 3ddfe9ae55e6d0d922fbc209768b2ac4a4792f0f63af9a8fb53d66a4b8f1d94b"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.36.0"
127 #define SQLITE_VERSION_NUMBER 3036000
128 #define SQLITE_SOURCE_ID "2021-06-14 20:41:20 e5a5acd6006133c5da4a7dd79726dbaa41c0d60ebeda890f848a6aafe5f9ef70"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
134

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button