Fossil SCM

Update the built-in SQLite to 3.35.4-rc1 for testing.

drh 2021-03-31 18:57 trunk
Commit 9313f2ad75452703ed6579553f735d45a97075f8d85487c71a345c892bea27a8
2 files changed +57 -18 +3 -3
+57 -18
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1,8 +1,8 @@
11
/******************************************************************************
22
** This file is an amalgamation of many separate C source files from SQLite
3
-** version 3.35.3. By combining all the individual C code files into this
3
+** version 3.35.4. By combining all the individual C code files into this
44
** single large file, the entire code can be compiled as a single translation
55
** unit. This allows many compilers to do optimizations that would not be
66
** possible if the files were compiled separately. Performance improvements
77
** of 5% or more are commonly seen when SQLite is compiled as a single
88
** translation unit.
@@ -1184,13 +1184,13 @@
11841184
**
11851185
** See also: [sqlite3_libversion()],
11861186
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
11871187
** [sqlite_version()] and [sqlite_source_id()].
11881188
*/
1189
-#define SQLITE_VERSION "3.35.3"
1190
-#define SQLITE_VERSION_NUMBER 3035003
1191
-#define SQLITE_SOURCE_ID "2021-03-26 12:12:52 4c5e6c200adc8afe0814936c67a971efc516d1bd739cb620235592f18f40be2a"
1189
+#define SQLITE_VERSION "3.35.4"
1190
+#define SQLITE_VERSION_NUMBER 3035004
1191
+#define SQLITE_SOURCE_ID "2021-03-31 17:49:52 3b916924cef383f3d395e1f10aed6584d22d39a26f3b3c9919bd1afc0db635aa"
11921192
11931193
/*
11941194
** CAPI3REF: Run-Time Library Version Numbers
11951195
** KEYWORDS: sqlite3_version sqlite3_sourceid
11961196
**
@@ -19762,10 +19762,11 @@
1976219762
SQLITE_PRIVATE Expr *sqlite3ExprSimplifiedAndOr(Expr*);
1976319763
SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*, int);
1976419764
SQLITE_PRIVATE void sqlite3ExprFunctionUsable(Parse*,Expr*,FuncDef*);
1976519765
SQLITE_PRIVATE void sqlite3ExprAssignVarNumber(Parse*, Expr*, u32);
1976619766
SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3*, Expr*);
19767
+SQLITE_PRIVATE void sqlite3ExprDeferredDelete(Parse*, Expr*);
1976719768
SQLITE_PRIVATE void sqlite3ExprUnmapAndDelete(Parse*, Expr*);
1976819769
SQLITE_PRIVATE ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*);
1976919770
SQLITE_PRIVATE ExprList *sqlite3ExprListAppendVector(Parse*,ExprList*,IdList*,Expr*);
1977019771
SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList*,int,int);
1977119772
SQLITE_PRIVATE void sqlite3ExprListSetName(Parse*,ExprList*,Token*,int);
@@ -99000,19 +99001,21 @@
9900099001
pTab = 0;
9900199002
#ifndef SQLITE_OMIT_TRIGGER
9900299003
if( pParse->pTriggerTab!=0 ){
9900399004
int op = pParse->eTriggerOp;
9900499005
assert( op==TK_DELETE || op==TK_UPDATE || op==TK_INSERT );
99005
- if( op!=TK_DELETE && zTab && sqlite3StrICmp("new",zTab) == 0 ){
99006
+ if( pParse->bReturning && (pNC->ncFlags & NC_UBaseReg)!=0 ){
99007
+ if( zTab==0 || sqlite3StrICmp(zTab,pParse->pTriggerTab->zName)==0 ){
99008
+ pExpr->iTable = op!=TK_DELETE;
99009
+ pTab = pParse->pTriggerTab;
99010
+ }
99011
+ }else if( op!=TK_DELETE && zTab && sqlite3StrICmp("new",zTab) == 0 ){
9900699012
pExpr->iTable = 1;
9900799013
pTab = pParse->pTriggerTab;
9900899014
}else if( op!=TK_INSERT && zTab && sqlite3StrICmp("old",zTab)==0 ){
9900999015
pExpr->iTable = 0;
9901099016
pTab = pParse->pTriggerTab;
99011
- }else if( pParse->bReturning && (pNC->ncFlags & NC_UBaseReg)!=0 ){
99012
- pExpr->iTable = op!=TK_DELETE;
99013
- pTab = pParse->pTriggerTab;
9901499017
}
9901599018
}
9901699019
#endif /* SQLITE_OMIT_TRIGGER */
9901799020
#ifndef SQLITE_OMIT_UPSERT
9901899021
if( (pNC->ncFlags & NC_UUpsert)!=0 && zTab!=0 ){
@@ -101603,12 +101606,12 @@
101603101606
}else if( pRight==0 ){
101604101607
return pLeft;
101605101608
}else if( (ExprAlwaysFalse(pLeft) || ExprAlwaysFalse(pRight))
101606101609
&& !IN_RENAME_OBJECT
101607101610
){
101608
- sqlite3ExprDelete(db, pLeft);
101609
- sqlite3ExprDelete(db, pRight);
101611
+ sqlite3ExprDeferredDelete(pParse, pLeft);
101612
+ sqlite3ExprDeferredDelete(pParse, pRight);
101610101613
return sqlite3Expr(db, TK_INTEGER, "0");
101611101614
}else{
101612101615
return sqlite3PExpr(pParse, TK_AND, pLeft, pRight);
101613101616
}
101614101617
}
@@ -101801,10 +101804,26 @@
101801101804
}
101802101805
SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3 *db, Expr *p){
101803101806
if( p ) sqlite3ExprDeleteNN(db, p);
101804101807
}
101805101808
101809
+
101810
+/*
101811
+** Arrange to cause pExpr to be deleted when the pParse is deleted.
101812
+** This is similar to sqlite3ExprDelete() except that the delete is
101813
+** deferred untilthe pParse is deleted.
101814
+**
101815
+** The pExpr might be deleted immediately on an OOM error.
101816
+**
101817
+** The deferred delete is (currently) implemented by adding the
101818
+** pExpr to the pParse->pConstExpr list with a register number of 0.
101819
+*/
101820
+SQLITE_PRIVATE void sqlite3ExprDeferredDelete(Parse *pParse, Expr *pExpr){
101821
+ pParse->pConstExpr =
101822
+ sqlite3ExprListAppend(pParse, pParse->pConstExpr, pExpr);
101823
+}
101824
+
101806101825
/* Invoke sqlite3RenameExprUnmap() and sqlite3ExprDelete() on the
101807101826
** expression.
101808101827
*/
101809101828
SQLITE_PRIVATE void sqlite3ExprUnmapAndDelete(Parse *pParse, Expr *p){
101810101829
if( p ){
@@ -106426,22 +106445,20 @@
106426106445
assert( iAgg>=0 && iAgg<pAggInfo->nColumn );
106427106446
if( pAggInfo->aCol[iAgg].pCExpr==pExpr ){
106428106447
pExpr = sqlite3ExprDup(db, pExpr, 0);
106429106448
if( pExpr ){
106430106449
pAggInfo->aCol[iAgg].pCExpr = pExpr;
106431
- pParse->pConstExpr =
106432
- sqlite3ExprListAppend(pParse, pParse->pConstExpr, pExpr);
106450
+ sqlite3ExprDeferredDelete(pParse, pExpr);
106433106451
}
106434106452
}
106435106453
}else{
106436106454
assert( iAgg>=0 && iAgg<pAggInfo->nFunc );
106437106455
if( pAggInfo->aFunc[iAgg].pFExpr==pExpr ){
106438106456
pExpr = sqlite3ExprDup(db, pExpr, 0);
106439106457
if( pExpr ){
106440106458
pAggInfo->aFunc[iAgg].pFExpr = pExpr;
106441
- pParse->pConstExpr =
106442
- sqlite3ExprListAppend(pParse, pParse->pConstExpr, pExpr);
106459
+ sqlite3ExprDeferredDelete(pParse, pExpr);
106443106460
}
106444106461
}
106445106462
}
106446106463
}
106447106464
return WRC_Continue;
@@ -139312,10 +139329,29 @@
139312139329
}else{
139313139330
sqlite3DbFree(db, zName);
139314139331
}
139315139332
return pSrc;
139316139333
}
139334
+
139335
+/*
139336
+** Return true if the pExpr term from the RETURNING clause argument
139337
+** list is of the form "*". Raise an error if the terms if of the
139338
+** form "table.*".
139339
+*/
139340
+static int isAsteriskTerm(
139341
+ Parse *pParse, /* Parsing context */
139342
+ Expr *pTerm /* A term in the RETURNING clause */
139343
+){
139344
+ assert( pTerm!=0 );
139345
+ if( pTerm->op==TK_ASTERISK ) return 1;
139346
+ if( pTerm->op!=TK_DOT ) return 0;
139347
+ assert( pTerm->pRight!=0 );
139348
+ assert( pTerm->pLeft!=0 );
139349
+ if( pTerm->pRight->op!=TK_ASTERISK ) return 0;
139350
+ sqlite3ErrorMsg(pParse, "RETURNING may not use \"TABLE.*\" wildcards");
139351
+ return 1;
139352
+}
139317139353
139318139354
/* The input list pList is the list of result set terms from a RETURNING
139319139355
** clause. The table that we are returning from is pTab.
139320139356
**
139321139357
** This routine makes a copy of the pList, and at the same time expands
@@ -139330,11 +139366,12 @@
139330139366
sqlite3 *db = pParse->db;
139331139367
int i;
139332139368
139333139369
for(i=0; i<pList->nExpr; i++){
139334139370
Expr *pOldExpr = pList->a[i].pExpr;
139335
- if( ALWAYS(pOldExpr!=0) && pOldExpr->op==TK_ASTERISK ){
139371
+ if( NEVER(pOldExpr==0) ) continue;
139372
+ if( isAsteriskTerm(pParse, pOldExpr) ){
139336139373
int jj;
139337139374
for(jj=0; jj<pTab->nCol; jj++){
139338139375
Expr *pNewExpr;
139339139376
if( IsHiddenColumn(pTab->aCol+jj) ) continue;
139340139377
pNewExpr = sqlite3Expr(db, TK_ID, pTab->aCol[jj].zName);
@@ -147568,10 +147605,11 @@
147568147605
#ifndef SQLITE_OMIT_WINDOWFUNC
147569147606
if( pSel->pWin ) return;
147570147607
#endif
147571147608
if( pSel->pPrior ) return;
147572147609
if( pSel->pWhere==0 ) return;
147610
+ if( pSel->pLimit ) return;
147573147611
if( 0==exprAnalyzeExistsFindEq(pSel, 0, 0) ) return;
147574147612
147575147613
pDup = sqlite3ExprDup(db, pExpr, 0);
147576147614
if( db->mallocFailed ){
147577147615
sqlite3ExprDelete(db, pDup);
@@ -155352,10 +155390,11 @@
155352155390
VdbeCoverageIf(v, eCond==0);
155353155391
VdbeCoverageIf(v, eCond==1);
155354155392
VdbeCoverageIf(v, eCond==2);
155355155393
}
155356155394
sqlite3VdbeAddOp3(v, aOp[eCond], regZero, sqlite3VdbeCurrentAddr(v)+2, reg);
155395
+ sqlite3VdbeChangeP5(v, SQLITE_AFF_NUMERIC);
155357155396
VdbeCoverageNeverNullIf(v, eCond==0); /* NULL case captured by */
155358155397
VdbeCoverageNeverNullIf(v, eCond==1); /* the OP_MustBeInt */
155359155398
VdbeCoverageNeverNullIf(v, eCond==2);
155360155399
VdbeCoverageNeverNullIf(v, eCond==3); /* NULL case caught by */
155361155400
VdbeCoverageNeverNullIf(v, eCond==4); /* the OP_Ge */
@@ -229251,11 +229290,11 @@
229251229290
int nArg, /* Number of args */
229252229291
sqlite3_value **apUnused /* Function arguments */
229253229292
){
229254229293
assert( nArg==0 );
229255229294
UNUSED_PARAM2(nArg, apUnused);
229256
- sqlite3_result_text(pCtx, "fts5: 2021-03-26 12:12:52 4c5e6c200adc8afe0814936c67a971efc516d1bd739cb620235592f18f40be2a", -1, SQLITE_TRANSIENT);
229295
+ sqlite3_result_text(pCtx, "fts5: 2021-03-31 17:49:52 3b916924cef383f3d395e1f10aed6584d22d39a26f3b3c9919bd1afc0db635aa", -1, SQLITE_TRANSIENT);
229257229296
}
229258229297
229259229298
/*
229260229299
** Return true if zName is the extension on one of the shadow tables used
229261229300
** by this module.
@@ -234177,12 +234216,12 @@
234177234216
}
234178234217
#endif /* SQLITE_CORE */
234179234218
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
234180234219
234181234220
/************** End of stmt.c ************************************************/
234182
-#if __LINE__!=234182
234221
+#if __LINE__!=234221
234183234222
#undef SQLITE_SOURCE_ID
234184
-#define SQLITE_SOURCE_ID "2021-03-26 12:12:52 4c5e6c200adc8afe0814936c67a971efc516d1bd739cb620235592f18f40alt2"
234223
+#define SQLITE_SOURCE_ID "2021-03-31 17:49:52 3b916924cef383f3d395e1f10aed6584d22d39a26f3b3c9919bd1afc0db6alt2"
234185234224
#endif
234186234225
/* Return the source-id for this library */
234187234226
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
234188234227
/************************** End of sqlite3.c ******************************/
234189234228
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1,8 +1,8 @@
1 /******************************************************************************
2 ** This file is an amalgamation of many separate C source files from SQLite
3 ** version 3.35.3. By combining all the individual C code files into this
4 ** single large file, the entire code can be compiled as a single translation
5 ** unit. This allows many compilers to do optimizations that would not be
6 ** possible if the files were compiled separately. Performance improvements
7 ** of 5% or more are commonly seen when SQLite is compiled as a single
8 ** translation unit.
@@ -1184,13 +1184,13 @@
1184 **
1185 ** See also: [sqlite3_libversion()],
1186 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1187 ** [sqlite_version()] and [sqlite_source_id()].
1188 */
1189 #define SQLITE_VERSION "3.35.3"
1190 #define SQLITE_VERSION_NUMBER 3035003
1191 #define SQLITE_SOURCE_ID "2021-03-26 12:12:52 4c5e6c200adc8afe0814936c67a971efc516d1bd739cb620235592f18f40be2a"
1192
1193 /*
1194 ** CAPI3REF: Run-Time Library Version Numbers
1195 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1196 **
@@ -19762,10 +19762,11 @@
19762 SQLITE_PRIVATE Expr *sqlite3ExprSimplifiedAndOr(Expr*);
19763 SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*, int);
19764 SQLITE_PRIVATE void sqlite3ExprFunctionUsable(Parse*,Expr*,FuncDef*);
19765 SQLITE_PRIVATE void sqlite3ExprAssignVarNumber(Parse*, Expr*, u32);
19766 SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3*, Expr*);
 
19767 SQLITE_PRIVATE void sqlite3ExprUnmapAndDelete(Parse*, Expr*);
19768 SQLITE_PRIVATE ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*);
19769 SQLITE_PRIVATE ExprList *sqlite3ExprListAppendVector(Parse*,ExprList*,IdList*,Expr*);
19770 SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList*,int,int);
19771 SQLITE_PRIVATE void sqlite3ExprListSetName(Parse*,ExprList*,Token*,int);
@@ -99000,19 +99001,21 @@
99000 pTab = 0;
99001 #ifndef SQLITE_OMIT_TRIGGER
99002 if( pParse->pTriggerTab!=0 ){
99003 int op = pParse->eTriggerOp;
99004 assert( op==TK_DELETE || op==TK_UPDATE || op==TK_INSERT );
99005 if( op!=TK_DELETE && zTab && sqlite3StrICmp("new",zTab) == 0 ){
 
 
 
 
 
99006 pExpr->iTable = 1;
99007 pTab = pParse->pTriggerTab;
99008 }else if( op!=TK_INSERT && zTab && sqlite3StrICmp("old",zTab)==0 ){
99009 pExpr->iTable = 0;
99010 pTab = pParse->pTriggerTab;
99011 }else if( pParse->bReturning && (pNC->ncFlags & NC_UBaseReg)!=0 ){
99012 pExpr->iTable = op!=TK_DELETE;
99013 pTab = pParse->pTriggerTab;
99014 }
99015 }
99016 #endif /* SQLITE_OMIT_TRIGGER */
99017 #ifndef SQLITE_OMIT_UPSERT
99018 if( (pNC->ncFlags & NC_UUpsert)!=0 && zTab!=0 ){
@@ -101603,12 +101606,12 @@
101603 }else if( pRight==0 ){
101604 return pLeft;
101605 }else if( (ExprAlwaysFalse(pLeft) || ExprAlwaysFalse(pRight))
101606 && !IN_RENAME_OBJECT
101607 ){
101608 sqlite3ExprDelete(db, pLeft);
101609 sqlite3ExprDelete(db, pRight);
101610 return sqlite3Expr(db, TK_INTEGER, "0");
101611 }else{
101612 return sqlite3PExpr(pParse, TK_AND, pLeft, pRight);
101613 }
101614 }
@@ -101801,10 +101804,26 @@
101801 }
101802 SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3 *db, Expr *p){
101803 if( p ) sqlite3ExprDeleteNN(db, p);
101804 }
101805
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101806 /* Invoke sqlite3RenameExprUnmap() and sqlite3ExprDelete() on the
101807 ** expression.
101808 */
101809 SQLITE_PRIVATE void sqlite3ExprUnmapAndDelete(Parse *pParse, Expr *p){
101810 if( p ){
@@ -106426,22 +106445,20 @@
106426 assert( iAgg>=0 && iAgg<pAggInfo->nColumn );
106427 if( pAggInfo->aCol[iAgg].pCExpr==pExpr ){
106428 pExpr = sqlite3ExprDup(db, pExpr, 0);
106429 if( pExpr ){
106430 pAggInfo->aCol[iAgg].pCExpr = pExpr;
106431 pParse->pConstExpr =
106432 sqlite3ExprListAppend(pParse, pParse->pConstExpr, pExpr);
106433 }
106434 }
106435 }else{
106436 assert( iAgg>=0 && iAgg<pAggInfo->nFunc );
106437 if( pAggInfo->aFunc[iAgg].pFExpr==pExpr ){
106438 pExpr = sqlite3ExprDup(db, pExpr, 0);
106439 if( pExpr ){
106440 pAggInfo->aFunc[iAgg].pFExpr = pExpr;
106441 pParse->pConstExpr =
106442 sqlite3ExprListAppend(pParse, pParse->pConstExpr, pExpr);
106443 }
106444 }
106445 }
106446 }
106447 return WRC_Continue;
@@ -139312,10 +139329,29 @@
139312 }else{
139313 sqlite3DbFree(db, zName);
139314 }
139315 return pSrc;
139316 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139317
139318 /* The input list pList is the list of result set terms from a RETURNING
139319 ** clause. The table that we are returning from is pTab.
139320 **
139321 ** This routine makes a copy of the pList, and at the same time expands
@@ -139330,11 +139366,12 @@
139330 sqlite3 *db = pParse->db;
139331 int i;
139332
139333 for(i=0; i<pList->nExpr; i++){
139334 Expr *pOldExpr = pList->a[i].pExpr;
139335 if( ALWAYS(pOldExpr!=0) && pOldExpr->op==TK_ASTERISK ){
 
139336 int jj;
139337 for(jj=0; jj<pTab->nCol; jj++){
139338 Expr *pNewExpr;
139339 if( IsHiddenColumn(pTab->aCol+jj) ) continue;
139340 pNewExpr = sqlite3Expr(db, TK_ID, pTab->aCol[jj].zName);
@@ -147568,10 +147605,11 @@
147568 #ifndef SQLITE_OMIT_WINDOWFUNC
147569 if( pSel->pWin ) return;
147570 #endif
147571 if( pSel->pPrior ) return;
147572 if( pSel->pWhere==0 ) return;
 
147573 if( 0==exprAnalyzeExistsFindEq(pSel, 0, 0) ) return;
147574
147575 pDup = sqlite3ExprDup(db, pExpr, 0);
147576 if( db->mallocFailed ){
147577 sqlite3ExprDelete(db, pDup);
@@ -155352,10 +155390,11 @@
155352 VdbeCoverageIf(v, eCond==0);
155353 VdbeCoverageIf(v, eCond==1);
155354 VdbeCoverageIf(v, eCond==2);
155355 }
155356 sqlite3VdbeAddOp3(v, aOp[eCond], regZero, sqlite3VdbeCurrentAddr(v)+2, reg);
 
155357 VdbeCoverageNeverNullIf(v, eCond==0); /* NULL case captured by */
155358 VdbeCoverageNeverNullIf(v, eCond==1); /* the OP_MustBeInt */
155359 VdbeCoverageNeverNullIf(v, eCond==2);
155360 VdbeCoverageNeverNullIf(v, eCond==3); /* NULL case caught by */
155361 VdbeCoverageNeverNullIf(v, eCond==4); /* the OP_Ge */
@@ -229251,11 +229290,11 @@
229251 int nArg, /* Number of args */
229252 sqlite3_value **apUnused /* Function arguments */
229253 ){
229254 assert( nArg==0 );
229255 UNUSED_PARAM2(nArg, apUnused);
229256 sqlite3_result_text(pCtx, "fts5: 2021-03-26 12:12:52 4c5e6c200adc8afe0814936c67a971efc516d1bd739cb620235592f18f40be2a", -1, SQLITE_TRANSIENT);
229257 }
229258
229259 /*
229260 ** Return true if zName is the extension on one of the shadow tables used
229261 ** by this module.
@@ -234177,12 +234216,12 @@
234177 }
234178 #endif /* SQLITE_CORE */
234179 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
234180
234181 /************** End of stmt.c ************************************************/
234182 #if __LINE__!=234182
234183 #undef SQLITE_SOURCE_ID
234184 #define SQLITE_SOURCE_ID "2021-03-26 12:12:52 4c5e6c200adc8afe0814936c67a971efc516d1bd739cb620235592f18f40alt2"
234185 #endif
234186 /* Return the source-id for this library */
234187 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
234188 /************************** End of sqlite3.c ******************************/
234189
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1,8 +1,8 @@
1 /******************************************************************************
2 ** This file is an amalgamation of many separate C source files from SQLite
3 ** version 3.35.4. By combining all the individual C code files into this
4 ** single large file, the entire code can be compiled as a single translation
5 ** unit. This allows many compilers to do optimizations that would not be
6 ** possible if the files were compiled separately. Performance improvements
7 ** of 5% or more are commonly seen when SQLite is compiled as a single
8 ** translation unit.
@@ -1184,13 +1184,13 @@
1184 **
1185 ** See also: [sqlite3_libversion()],
1186 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1187 ** [sqlite_version()] and [sqlite_source_id()].
1188 */
1189 #define SQLITE_VERSION "3.35.4"
1190 #define SQLITE_VERSION_NUMBER 3035004
1191 #define SQLITE_SOURCE_ID "2021-03-31 17:49:52 3b916924cef383f3d395e1f10aed6584d22d39a26f3b3c9919bd1afc0db635aa"
1192
1193 /*
1194 ** CAPI3REF: Run-Time Library Version Numbers
1195 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1196 **
@@ -19762,10 +19762,11 @@
19762 SQLITE_PRIVATE Expr *sqlite3ExprSimplifiedAndOr(Expr*);
19763 SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*, int);
19764 SQLITE_PRIVATE void sqlite3ExprFunctionUsable(Parse*,Expr*,FuncDef*);
19765 SQLITE_PRIVATE void sqlite3ExprAssignVarNumber(Parse*, Expr*, u32);
19766 SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3*, Expr*);
19767 SQLITE_PRIVATE void sqlite3ExprDeferredDelete(Parse*, Expr*);
19768 SQLITE_PRIVATE void sqlite3ExprUnmapAndDelete(Parse*, Expr*);
19769 SQLITE_PRIVATE ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*);
19770 SQLITE_PRIVATE ExprList *sqlite3ExprListAppendVector(Parse*,ExprList*,IdList*,Expr*);
19771 SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList*,int,int);
19772 SQLITE_PRIVATE void sqlite3ExprListSetName(Parse*,ExprList*,Token*,int);
@@ -99000,19 +99001,21 @@
99001 pTab = 0;
99002 #ifndef SQLITE_OMIT_TRIGGER
99003 if( pParse->pTriggerTab!=0 ){
99004 int op = pParse->eTriggerOp;
99005 assert( op==TK_DELETE || op==TK_UPDATE || op==TK_INSERT );
99006 if( pParse->bReturning && (pNC->ncFlags & NC_UBaseReg)!=0 ){
99007 if( zTab==0 || sqlite3StrICmp(zTab,pParse->pTriggerTab->zName)==0 ){
99008 pExpr->iTable = op!=TK_DELETE;
99009 pTab = pParse->pTriggerTab;
99010 }
99011 }else if( op!=TK_DELETE && zTab && sqlite3StrICmp("new",zTab) == 0 ){
99012 pExpr->iTable = 1;
99013 pTab = pParse->pTriggerTab;
99014 }else if( op!=TK_INSERT && zTab && sqlite3StrICmp("old",zTab)==0 ){
99015 pExpr->iTable = 0;
99016 pTab = pParse->pTriggerTab;
 
 
 
99017 }
99018 }
99019 #endif /* SQLITE_OMIT_TRIGGER */
99020 #ifndef SQLITE_OMIT_UPSERT
99021 if( (pNC->ncFlags & NC_UUpsert)!=0 && zTab!=0 ){
@@ -101603,12 +101606,12 @@
101606 }else if( pRight==0 ){
101607 return pLeft;
101608 }else if( (ExprAlwaysFalse(pLeft) || ExprAlwaysFalse(pRight))
101609 && !IN_RENAME_OBJECT
101610 ){
101611 sqlite3ExprDeferredDelete(pParse, pLeft);
101612 sqlite3ExprDeferredDelete(pParse, pRight);
101613 return sqlite3Expr(db, TK_INTEGER, "0");
101614 }else{
101615 return sqlite3PExpr(pParse, TK_AND, pLeft, pRight);
101616 }
101617 }
@@ -101801,10 +101804,26 @@
101804 }
101805 SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3 *db, Expr *p){
101806 if( p ) sqlite3ExprDeleteNN(db, p);
101807 }
101808
101809
101810 /*
101811 ** Arrange to cause pExpr to be deleted when the pParse is deleted.
101812 ** This is similar to sqlite3ExprDelete() except that the delete is
101813 ** deferred untilthe pParse is deleted.
101814 **
101815 ** The pExpr might be deleted immediately on an OOM error.
101816 **
101817 ** The deferred delete is (currently) implemented by adding the
101818 ** pExpr to the pParse->pConstExpr list with a register number of 0.
101819 */
101820 SQLITE_PRIVATE void sqlite3ExprDeferredDelete(Parse *pParse, Expr *pExpr){
101821 pParse->pConstExpr =
101822 sqlite3ExprListAppend(pParse, pParse->pConstExpr, pExpr);
101823 }
101824
101825 /* Invoke sqlite3RenameExprUnmap() and sqlite3ExprDelete() on the
101826 ** expression.
101827 */
101828 SQLITE_PRIVATE void sqlite3ExprUnmapAndDelete(Parse *pParse, Expr *p){
101829 if( p ){
@@ -106426,22 +106445,20 @@
106445 assert( iAgg>=0 && iAgg<pAggInfo->nColumn );
106446 if( pAggInfo->aCol[iAgg].pCExpr==pExpr ){
106447 pExpr = sqlite3ExprDup(db, pExpr, 0);
106448 if( pExpr ){
106449 pAggInfo->aCol[iAgg].pCExpr = pExpr;
106450 sqlite3ExprDeferredDelete(pParse, pExpr);
 
106451 }
106452 }
106453 }else{
106454 assert( iAgg>=0 && iAgg<pAggInfo->nFunc );
106455 if( pAggInfo->aFunc[iAgg].pFExpr==pExpr ){
106456 pExpr = sqlite3ExprDup(db, pExpr, 0);
106457 if( pExpr ){
106458 pAggInfo->aFunc[iAgg].pFExpr = pExpr;
106459 sqlite3ExprDeferredDelete(pParse, pExpr);
 
106460 }
106461 }
106462 }
106463 }
106464 return WRC_Continue;
@@ -139312,10 +139329,29 @@
139329 }else{
139330 sqlite3DbFree(db, zName);
139331 }
139332 return pSrc;
139333 }
139334
139335 /*
139336 ** Return true if the pExpr term from the RETURNING clause argument
139337 ** list is of the form "*". Raise an error if the terms if of the
139338 ** form "table.*".
139339 */
139340 static int isAsteriskTerm(
139341 Parse *pParse, /* Parsing context */
139342 Expr *pTerm /* A term in the RETURNING clause */
139343 ){
139344 assert( pTerm!=0 );
139345 if( pTerm->op==TK_ASTERISK ) return 1;
139346 if( pTerm->op!=TK_DOT ) return 0;
139347 assert( pTerm->pRight!=0 );
139348 assert( pTerm->pLeft!=0 );
139349 if( pTerm->pRight->op!=TK_ASTERISK ) return 0;
139350 sqlite3ErrorMsg(pParse, "RETURNING may not use \"TABLE.*\" wildcards");
139351 return 1;
139352 }
139353
139354 /* The input list pList is the list of result set terms from a RETURNING
139355 ** clause. The table that we are returning from is pTab.
139356 **
139357 ** This routine makes a copy of the pList, and at the same time expands
@@ -139330,11 +139366,12 @@
139366 sqlite3 *db = pParse->db;
139367 int i;
139368
139369 for(i=0; i<pList->nExpr; i++){
139370 Expr *pOldExpr = pList->a[i].pExpr;
139371 if( NEVER(pOldExpr==0) ) continue;
139372 if( isAsteriskTerm(pParse, pOldExpr) ){
139373 int jj;
139374 for(jj=0; jj<pTab->nCol; jj++){
139375 Expr *pNewExpr;
139376 if( IsHiddenColumn(pTab->aCol+jj) ) continue;
139377 pNewExpr = sqlite3Expr(db, TK_ID, pTab->aCol[jj].zName);
@@ -147568,10 +147605,11 @@
147605 #ifndef SQLITE_OMIT_WINDOWFUNC
147606 if( pSel->pWin ) return;
147607 #endif
147608 if( pSel->pPrior ) return;
147609 if( pSel->pWhere==0 ) return;
147610 if( pSel->pLimit ) return;
147611 if( 0==exprAnalyzeExistsFindEq(pSel, 0, 0) ) return;
147612
147613 pDup = sqlite3ExprDup(db, pExpr, 0);
147614 if( db->mallocFailed ){
147615 sqlite3ExprDelete(db, pDup);
@@ -155352,10 +155390,11 @@
155390 VdbeCoverageIf(v, eCond==0);
155391 VdbeCoverageIf(v, eCond==1);
155392 VdbeCoverageIf(v, eCond==2);
155393 }
155394 sqlite3VdbeAddOp3(v, aOp[eCond], regZero, sqlite3VdbeCurrentAddr(v)+2, reg);
155395 sqlite3VdbeChangeP5(v, SQLITE_AFF_NUMERIC);
155396 VdbeCoverageNeverNullIf(v, eCond==0); /* NULL case captured by */
155397 VdbeCoverageNeverNullIf(v, eCond==1); /* the OP_MustBeInt */
155398 VdbeCoverageNeverNullIf(v, eCond==2);
155399 VdbeCoverageNeverNullIf(v, eCond==3); /* NULL case caught by */
155400 VdbeCoverageNeverNullIf(v, eCond==4); /* the OP_Ge */
@@ -229251,11 +229290,11 @@
229290 int nArg, /* Number of args */
229291 sqlite3_value **apUnused /* Function arguments */
229292 ){
229293 assert( nArg==0 );
229294 UNUSED_PARAM2(nArg, apUnused);
229295 sqlite3_result_text(pCtx, "fts5: 2021-03-31 17:49:52 3b916924cef383f3d395e1f10aed6584d22d39a26f3b3c9919bd1afc0db635aa", -1, SQLITE_TRANSIENT);
229296 }
229297
229298 /*
229299 ** Return true if zName is the extension on one of the shadow tables used
229300 ** by this module.
@@ -234177,12 +234216,12 @@
234216 }
234217 #endif /* SQLITE_CORE */
234218 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
234219
234220 /************** End of stmt.c ************************************************/
234221 #if __LINE__!=234221
234222 #undef SQLITE_SOURCE_ID
234223 #define SQLITE_SOURCE_ID "2021-03-31 17:49:52 3b916924cef383f3d395e1f10aed6584d22d39a26f3b3c9919bd1afc0db6alt2"
234224 #endif
234225 /* Return the source-id for this library */
234226 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
234227 /************************** End of sqlite3.c ******************************/
234228
+3 -3
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -121,13 +121,13 @@
121121
**
122122
** See also: [sqlite3_libversion()],
123123
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124124
** [sqlite_version()] and [sqlite_source_id()].
125125
*/
126
-#define SQLITE_VERSION "3.35.3"
127
-#define SQLITE_VERSION_NUMBER 3035003
128
-#define SQLITE_SOURCE_ID "2021-03-26 12:12:52 4c5e6c200adc8afe0814936c67a971efc516d1bd739cb620235592f18f40be2a"
126
+#define SQLITE_VERSION "3.35.4"
127
+#define SQLITE_VERSION_NUMBER 3035004
128
+#define SQLITE_SOURCE_ID "2021-03-31 17:49:52 3b916924cef383f3d395e1f10aed6584d22d39a26f3b3c9919bd1afc0db635aa"
129129
130130
/*
131131
** CAPI3REF: Run-Time Library Version Numbers
132132
** KEYWORDS: sqlite3_version sqlite3_sourceid
133133
**
134134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -121,13 +121,13 @@
121 **
122 ** See also: [sqlite3_libversion()],
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.35.3"
127 #define SQLITE_VERSION_NUMBER 3035003
128 #define SQLITE_SOURCE_ID "2021-03-26 12:12:52 4c5e6c200adc8afe0814936c67a971efc516d1bd739cb620235592f18f40be2a"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -121,13 +121,13 @@
121 **
122 ** See also: [sqlite3_libversion()],
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.35.4"
127 #define SQLITE_VERSION_NUMBER 3035004
128 #define SQLITE_SOURCE_ID "2021-03-31 17:49:52 3b916924cef383f3d395e1f10aed6584d22d39a26f3b3c9919bd1afc0db635aa"
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