| | @@ -1,8 +1,8 @@ |
| 1 | 1 | /****************************************************************************** |
| 2 | 2 | ** This file is an amalgamation of many separate C source files from SQLite |
| 3 | | -** version 3.35.0. By combining all the individual C code files into this |
| 3 | +** version 3.35.2. By combining all the individual C code files into this |
| 4 | 4 | ** single large file, the entire code can be compiled as a single translation |
| 5 | 5 | ** unit. This allows many compilers to do optimizations that would not be |
| 6 | 6 | ** possible if the files were compiled separately. Performance improvements |
| 7 | 7 | ** of 5% or more are commonly seen when SQLite is compiled as a single |
| 8 | 8 | ** translation unit. |
| | @@ -1184,13 +1184,13 @@ |
| 1184 | 1184 | ** |
| 1185 | 1185 | ** See also: [sqlite3_libversion()], |
| 1186 | 1186 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 1187 | 1187 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 1188 | 1188 | */ |
| 1189 | | -#define SQLITE_VERSION "3.35.0" |
| 1190 | | -#define SQLITE_VERSION_NUMBER 3035000 |
| 1191 | | -#define SQLITE_SOURCE_ID "2021-03-12 15:10:09 acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b" |
| 1189 | +#define SQLITE_VERSION "3.35.2" |
| 1190 | +#define SQLITE_VERSION_NUMBER 3035002 |
| 1191 | +#define SQLITE_SOURCE_ID "2021-03-17 19:07:21 ea80f3002f4120f5dcee76e8779dfdc88e1e096c5cdd06904c20fd26d50c3827" |
| 1192 | 1192 | |
| 1193 | 1193 | /* |
| 1194 | 1194 | ** CAPI3REF: Run-Time Library Version Numbers |
| 1195 | 1195 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 1196 | 1196 | ** |
| | @@ -17005,11 +17005,14 @@ |
| 17005 | 17005 | u8 iDb; /* Which db file is being initialized */ |
| 17006 | 17006 | u8 busy; /* TRUE if currently initializing */ |
| 17007 | 17007 | unsigned orphanTrigger : 1; /* Last statement is orphaned TEMP trigger */ |
| 17008 | 17008 | unsigned imposterTable : 1; /* Building an imposter table */ |
| 17009 | 17009 | unsigned reopenMemdb : 1; /* ATTACH is really a reopen using MemDB */ |
| 17010 | + unsigned bDropColumn : 1; /* Doing schema check after DROP COLUMN */ |
| 17010 | 17011 | char **azInit; /* "type", "name", and "tbl_name" columns */ |
| 17012 | + /* or if bDropColumn, then azInit[0] is the */ |
| 17013 | + /* name of the column being dropped */ |
| 17011 | 17014 | } init; |
| 17012 | 17015 | int nVdbeActive; /* Number of VDBEs currently running */ |
| 17013 | 17016 | int nVdbeRead; /* Number of active VDBEs that read or write */ |
| 17014 | 17017 | int nVdbeWrite; /* Number of active VDBEs that read and write */ |
| 17015 | 17018 | int nVdbeExec; /* Number of nested calls to VdbeExec() */ |
| | @@ -22866,10 +22869,11 @@ |
| 22866 | 22869 | int i, n; |
| 22867 | 22870 | const unsigned char *z; |
| 22868 | 22871 | int eType; |
| 22869 | 22872 | memset(p, 0, sizeof(*p)); |
| 22870 | 22873 | if( argc==0 ){ |
| 22874 | + if( !sqlite3NotPureFunc(context) ) return 1; |
| 22871 | 22875 | return setDateTimeToCurrent(context, p); |
| 22872 | 22876 | } |
| 22873 | 22877 | if( (eType = sqlite3_value_type(argv[0]))==SQLITE_FLOAT |
| 22874 | 22878 | || eType==SQLITE_INTEGER ){ |
| 22875 | 22879 | setRawDateNumber(p, sqlite3_value_double(argv[0])); |
| | @@ -99165,10 +99169,11 @@ |
| 99165 | 99169 | */ |
| 99166 | 99170 | if( cnt==0 && zTab==0 ){ |
| 99167 | 99171 | assert( pExpr->op==TK_ID ); |
| 99168 | 99172 | if( ExprHasProperty(pExpr,EP_DblQuoted) |
| 99169 | 99173 | && areDoubleQuotedStringsEnabled(db, pTopNC) |
| 99174 | + && (db->init.bDropColumn==0 || sqlite3StrICmp(zCol, db->init.azInit[0])!=0) |
| 99170 | 99175 | ){ |
| 99171 | 99176 | /* If a double-quoted identifier does not match any known column name, |
| 99172 | 99177 | ** then treat it as a string. |
| 99173 | 99178 | ** |
| 99174 | 99179 | ** This hack was added in the early days of SQLite in a misguided attempt |
| | @@ -99179,10 +99184,15 @@ |
| 99179 | 99184 | ** programmers. To all those frustrated programmers, my apologies. |
| 99180 | 99185 | ** |
| 99181 | 99186 | ** Someday, I hope to get rid of this hack. Unfortunately there is |
| 99182 | 99187 | ** a huge amount of legacy SQL that uses it. So for now, we just |
| 99183 | 99188 | ** issue a warning. |
| 99189 | + ** |
| 99190 | + ** 2021-03-15: ticket 1c24a659e6d7f3a1 |
| 99191 | + ** Do not do the ID-to-STRING conversion when doing the schema |
| 99192 | + ** sanity check following a DROP COLUMN if the identifer name matches |
| 99193 | + ** the name of the column being dropped. |
| 99184 | 99194 | */ |
| 99185 | 99195 | sqlite3_log(SQLITE_WARNING, |
| 99186 | 99196 | "double-quoted string literal: \"%w\"", zCol); |
| 99187 | 99197 | #ifdef SQLITE_ENABLE_NORMALIZE |
| 99188 | 99198 | sqlite3VdbeAddDblquoteStr(db, pParse->pVdbe, zCol); |
| | @@ -106778,31 +106788,32 @@ |
| 106778 | 106788 | */ |
| 106779 | 106789 | static void renameTestSchema( |
| 106780 | 106790 | Parse *pParse, /* Parse context */ |
| 106781 | 106791 | const char *zDb, /* Name of db to verify schema of */ |
| 106782 | 106792 | int bTemp, /* True if this is the temp db */ |
| 106783 | | - const char *zWhen /* "when" part of error message */ |
| 106793 | + const char *zWhen, /* "when" part of error message */ |
| 106794 | + const char *zDropColumn /* Name of column being dropped */ |
| 106784 | 106795 | ){ |
| 106785 | 106796 | pParse->colNamesSet = 1; |
| 106786 | 106797 | sqlite3NestedParse(pParse, |
| 106787 | 106798 | "SELECT 1 " |
| 106788 | 106799 | "FROM \"%w\"." DFLT_SCHEMA_TABLE " " |
| 106789 | 106800 | "WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'" |
| 106790 | 106801 | " AND sql NOT LIKE 'create virtual%%'" |
| 106791 | | - " AND sqlite_rename_test(%Q, sql, type, name, %d, %Q)=NULL ", |
| 106802 | + " AND sqlite_rename_test(%Q, sql, type, name, %d, %Q, %Q)=NULL ", |
| 106792 | 106803 | zDb, |
| 106793 | | - zDb, bTemp, zWhen |
| 106804 | + zDb, bTemp, zWhen, zDropColumn |
| 106794 | 106805 | ); |
| 106795 | 106806 | |
| 106796 | 106807 | if( bTemp==0 ){ |
| 106797 | 106808 | sqlite3NestedParse(pParse, |
| 106798 | 106809 | "SELECT 1 " |
| 106799 | 106810 | "FROM temp." DFLT_SCHEMA_TABLE " " |
| 106800 | 106811 | "WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'" |
| 106801 | 106812 | " AND sql NOT LIKE 'create virtual%%'" |
| 106802 | | - " AND sqlite_rename_test(%Q, sql, type, name, 1, %Q)=NULL ", |
| 106803 | | - zDb, zWhen |
| 106813 | + " AND sqlite_rename_test(%Q, sql, type, name, 1, %Q, %Q)=NULL ", |
| 106814 | + zDb, zWhen, zDropColumn |
| 106804 | 106815 | ); |
| 106805 | 106816 | } |
| 106806 | 106817 | } |
| 106807 | 106818 | |
| 106808 | 106819 | /* |
| | @@ -106961,11 +106972,11 @@ |
| 106961 | 106972 | sqlite3NestedParse(pParse, |
| 106962 | 106973 | "UPDATE sqlite_temp_schema SET " |
| 106963 | 106974 | "sql = sqlite_rename_table(%Q, type, name, sql, %Q, %Q, 1), " |
| 106964 | 106975 | "tbl_name = " |
| 106965 | 106976 | "CASE WHEN tbl_name=%Q COLLATE nocase AND " |
| 106966 | | - " sqlite_rename_test(%Q, sql, type, name, 1, 'after rename') " |
| 106977 | + " sqlite_rename_test(%Q, sql, type, name, 1, 'after rename',0) " |
| 106967 | 106978 | "THEN %Q ELSE tbl_name END " |
| 106968 | 106979 | "WHERE type IN ('view', 'trigger')" |
| 106969 | 106980 | , zDb, zTabName, zName, zTabName, zDb, zName); |
| 106970 | 106981 | } |
| 106971 | 106982 | |
| | @@ -106981,11 +106992,11 @@ |
| 106981 | 106992 | sqlite3VdbeAddOp4(v, OP_VRename, i, 0, 0,(const char*)pVTab, P4_VTAB); |
| 106982 | 106993 | } |
| 106983 | 106994 | #endif |
| 106984 | 106995 | |
| 106985 | 106996 | renameReloadSchema(pParse, iDb, INITFLAG_AlterRename); |
| 106986 | | - renameTestSchema(pParse, zDb, iDb==1, "after rename"); |
| 106997 | + renameTestSchema(pParse, zDb, iDb==1, "after rename", 0); |
| 106987 | 106998 | |
| 106988 | 106999 | exit_rename_table: |
| 106989 | 107000 | sqlite3SrcListDelete(db, pSrc); |
| 106990 | 107001 | sqlite3DbFree(db, zName); |
| 106991 | 107002 | db->mDbFlags = savedDbFlags; |
| | @@ -107349,11 +107360,11 @@ |
| 107349 | 107360 | zDb, pTab->zName, iCol, zNew, bQuote |
| 107350 | 107361 | ); |
| 107351 | 107362 | |
| 107352 | 107363 | /* Drop and reload the database schema. */ |
| 107353 | 107364 | renameReloadSchema(pParse, iSchema, INITFLAG_AlterRename); |
| 107354 | | - renameTestSchema(pParse, zDb, iSchema==1, "after rename"); |
| 107365 | + renameTestSchema(pParse, zDb, iSchema==1, "after rename", 0); |
| 107355 | 107366 | |
| 107356 | 107367 | exit_rename_column: |
| 107357 | 107368 | sqlite3SrcListDelete(db, pSrc); |
| 107358 | 107369 | sqlite3DbFree(db, zOld); |
| 107359 | 107370 | sqlite3DbFree(db, zNew); |
| | @@ -107773,16 +107784,21 @@ |
| 107773 | 107784 | static int renameParseSql( |
| 107774 | 107785 | Parse *p, /* Memory to use for Parse object */ |
| 107775 | 107786 | const char *zDb, /* Name of schema SQL belongs to */ |
| 107776 | 107787 | sqlite3 *db, /* Database handle */ |
| 107777 | 107788 | const char *zSql, /* SQL to parse */ |
| 107778 | | - int bTemp /* True if SQL is from temp schema */ |
| 107789 | + int bTemp, /* True if SQL is from temp schema */ |
| 107790 | + const char *zDropColumn /* Name of column being dropped */ |
| 107779 | 107791 | ){ |
| 107780 | 107792 | int rc; |
| 107781 | 107793 | char *zErr = 0; |
| 107782 | 107794 | |
| 107783 | 107795 | db->init.iDb = bTemp ? 1 : sqlite3FindDbName(db, zDb); |
| 107796 | + if( zDropColumn ){ |
| 107797 | + db->init.bDropColumn = 1; |
| 107798 | + db->init.azInit = (char**)&zDropColumn; |
| 107799 | + } |
| 107784 | 107800 | |
| 107785 | 107801 | /* Parse the SQL statement passed as the first argument. If no error |
| 107786 | 107802 | ** occurs and the parse does not result in a new table, index or |
| 107787 | 107803 | ** trigger object, the database must be corrupt. */ |
| 107788 | 107804 | memset(p, 0, sizeof(Parse)); |
| | @@ -107811,10 +107827,11 @@ |
| 107811 | 107827 | } |
| 107812 | 107828 | } |
| 107813 | 107829 | #endif |
| 107814 | 107830 | |
| 107815 | 107831 | db->init.iDb = 0; |
| 107832 | + db->init.bDropColumn = 0; |
| 107816 | 107833 | return rc; |
| 107817 | 107834 | } |
| 107818 | 107835 | |
| 107819 | 107836 | /* |
| 107820 | 107837 | ** This function edits SQL statement zSql, replacing each token identified |
| | @@ -108112,11 +108129,11 @@ |
| 108112 | 108129 | sCtx.iCol = ((iCol==pTab->iPKey) ? -1 : iCol); |
| 108113 | 108130 | |
| 108114 | 108131 | #ifndef SQLITE_OMIT_AUTHORIZATION |
| 108115 | 108132 | db->xAuth = 0; |
| 108116 | 108133 | #endif |
| 108117 | | - rc = renameParseSql(&sParse, zDb, db, zSql, bTemp); |
| 108134 | + rc = renameParseSql(&sParse, zDb, db, zSql, bTemp, 0); |
| 108118 | 108135 | |
| 108119 | 108136 | /* Find tokens that need to be replaced. */ |
| 108120 | 108137 | memset(&sWalker, 0, sizeof(Walker)); |
| 108121 | 108138 | sWalker.pParse = &sParse; |
| 108122 | 108139 | sWalker.xExprCallback = renameColumnExprCb; |
| | @@ -108154,16 +108171,16 @@ |
| 108154 | 108171 | sqlite3WalkExprList(&sWalker, pIdx->aColExpr); |
| 108155 | 108172 | } |
| 108156 | 108173 | for(pIdx=sParse.pNewIndex; pIdx; pIdx=pIdx->pNext){ |
| 108157 | 108174 | sqlite3WalkExprList(&sWalker, pIdx->aColExpr); |
| 108158 | 108175 | } |
| 108159 | | - } |
| 108160 | 108176 | #ifndef SQLITE_OMIT_GENERATED_COLUMNS |
| 108161 | | - for(i=0; i<sParse.pNewTable->nCol; i++){ |
| 108162 | | - sqlite3WalkExpr(&sWalker, sParse.pNewTable->aCol[i].pDflt); |
| 108177 | + for(i=0; i<sParse.pNewTable->nCol; i++){ |
| 108178 | + sqlite3WalkExpr(&sWalker, sParse.pNewTable->aCol[i].pDflt); |
| 108179 | + } |
| 108180 | +#endif |
| 108163 | 108181 | } |
| 108164 | | -#endif |
| 108165 | 108182 | |
| 108166 | 108183 | for(pFKey=sParse.pNewTable->pFKey; pFKey; pFKey=pFKey->pNextFrom){ |
| 108167 | 108184 | for(i=0; i<pFKey->nCol; i++){ |
| 108168 | 108185 | if( bFKOnly==0 && pFKey->aCol[i].iFrom==iCol ){ |
| 108169 | 108186 | renameTokenFind(&sParse, &sCtx, (void*)&pFKey->aCol[i]); |
| | @@ -108316,11 +108333,11 @@ |
| 108316 | 108333 | sWalker.pParse = &sParse; |
| 108317 | 108334 | sWalker.xExprCallback = renameTableExprCb; |
| 108318 | 108335 | sWalker.xSelectCallback = renameTableSelectCb; |
| 108319 | 108336 | sWalker.u.pRename = &sCtx; |
| 108320 | 108337 | |
| 108321 | | - rc = renameParseSql(&sParse, zDb, db, zInput, bTemp); |
| 108338 | + rc = renameParseSql(&sParse, zDb, db, zInput, bTemp, 0); |
| 108322 | 108339 | |
| 108323 | 108340 | if( rc==SQLITE_OK ){ |
| 108324 | 108341 | int isLegacy = (db->flags & SQLITE_LegacyAlter); |
| 108325 | 108342 | if( sParse.pNewTable ){ |
| 108326 | 108343 | Table *pTab = sParse.pNewTable; |
| | @@ -108432,10 +108449,11 @@ |
| 108432 | 108449 | ** 1: SQL statement. |
| 108433 | 108450 | ** 2: Object type ("view", "table", "trigger" or "index"). |
| 108434 | 108451 | ** 3: Object name. |
| 108435 | 108452 | ** 4: True if object is from temp schema. |
| 108436 | 108453 | ** 5: "when" part of error message. |
| 108454 | +** 6: Name of column being dropped, or NULL. |
| 108437 | 108455 | ** |
| 108438 | 108456 | ** Unless it finds an error, this function normally returns NULL. However, it |
| 108439 | 108457 | ** returns integer value 1 if: |
| 108440 | 108458 | ** |
| 108441 | 108459 | ** * the SQL argument creates a trigger, and |
| | @@ -108450,10 +108468,11 @@ |
| 108450 | 108468 | char const *zDb = (const char*)sqlite3_value_text(argv[0]); |
| 108451 | 108469 | char const *zInput = (const char*)sqlite3_value_text(argv[1]); |
| 108452 | 108470 | int bTemp = sqlite3_value_int(argv[4]); |
| 108453 | 108471 | int isLegacy = (db->flags & SQLITE_LegacyAlter); |
| 108454 | 108472 | char const *zWhen = (const char*)sqlite3_value_text(argv[5]); |
| 108473 | + char const *zDropColumn = (const char*)sqlite3_value_text(argv[6]); |
| 108455 | 108474 | |
| 108456 | 108475 | #ifndef SQLITE_OMIT_AUTHORIZATION |
| 108457 | 108476 | sqlite3_xauth xAuth = db->xAuth; |
| 108458 | 108477 | db->xAuth = 0; |
| 108459 | 108478 | #endif |
| | @@ -108460,11 +108479,11 @@ |
| 108460 | 108479 | |
| 108461 | 108480 | UNUSED_PARAMETER(NotUsed); |
| 108462 | 108481 | if( zDb && zInput ){ |
| 108463 | 108482 | int rc; |
| 108464 | 108483 | Parse sParse; |
| 108465 | | - rc = renameParseSql(&sParse, zDb, db, zInput, bTemp); |
| 108484 | + rc = renameParseSql(&sParse, zDb, db, zInput, bTemp, zDropColumn); |
| 108466 | 108485 | if( rc==SQLITE_OK ){ |
| 108467 | 108486 | if( isLegacy==0 && sParse.pNewTable && sParse.pNewTable->pSelect ){ |
| 108468 | 108487 | NameContext sNC; |
| 108469 | 108488 | memset(&sNC, 0, sizeof(sNC)); |
| 108470 | 108489 | sNC.pParse = &sParse; |
| | @@ -108528,11 +108547,11 @@ |
| 108528 | 108547 | sqlite3_xauth xAuth = db->xAuth; |
| 108529 | 108548 | db->xAuth = 0; |
| 108530 | 108549 | #endif |
| 108531 | 108550 | |
| 108532 | 108551 | UNUSED_PARAMETER(NotUsed); |
| 108533 | | - rc = renameParseSql(&sParse, zDb, db, zSql, iSchema==1); |
| 108552 | + rc = renameParseSql(&sParse, zDb, db, zSql, iSchema==1, 0); |
| 108534 | 108553 | if( rc!=SQLITE_OK ) goto drop_column_done; |
| 108535 | 108554 | pTab = sParse.pNewTable; |
| 108536 | 108555 | if( pTab==0 || pTab->nCol==1 || iCol>=pTab->nCol ){ |
| 108537 | 108556 | /* This can happen if the sqlite_schema table is corrupt */ |
| 108538 | 108557 | rc = SQLITE_CORRUPT_BKPT; |
| | @@ -108621,21 +108640,21 @@ |
| 108621 | 108640 | |
| 108622 | 108641 | /* Edit the sqlite_schema table */ |
| 108623 | 108642 | iDb = sqlite3SchemaToIndex(db, pTab->pSchema); |
| 108624 | 108643 | assert( iDb>=0 ); |
| 108625 | 108644 | zDb = db->aDb[iDb].zDbSName; |
| 108626 | | - renameTestSchema(pParse, zDb, iDb==1, ""); |
| 108645 | + renameTestSchema(pParse, zDb, iDb==1, "", 0); |
| 108627 | 108646 | sqlite3NestedParse(pParse, |
| 108628 | 108647 | "UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET " |
| 108629 | 108648 | "sql = sqlite_drop_column(%d, sql, %d) " |
| 108630 | 108649 | "WHERE (type=='table' AND tbl_name=%Q COLLATE nocase)" |
| 108631 | 108650 | , zDb, iDb, iCol, pTab->zName |
| 108632 | 108651 | ); |
| 108633 | 108652 | |
| 108634 | 108653 | /* Drop and reload the database schema. */ |
| 108635 | 108654 | renameReloadSchema(pParse, iDb, INITFLAG_AlterDrop); |
| 108636 | | - renameTestSchema(pParse, zDb, iDb==1, "after drop column"); |
| 108655 | + renameTestSchema(pParse, zDb, iDb==1, "after drop column", zCol); |
| 108637 | 108656 | |
| 108638 | 108657 | /* Edit rows of table on disk */ |
| 108639 | 108658 | if( pParse->nErr==0 && (pTab->aCol[iCol].colFlags & COLFLAG_VIRTUAL)==0 ){ |
| 108640 | 108659 | int i; |
| 108641 | 108660 | int addr; |
| | @@ -108691,11 +108710,11 @@ |
| 108691 | 108710 | */ |
| 108692 | 108711 | SQLITE_PRIVATE void sqlite3AlterFunctions(void){ |
| 108693 | 108712 | static FuncDef aAlterTableFuncs[] = { |
| 108694 | 108713 | INTERNAL_FUNCTION(sqlite_rename_column, 9, renameColumnFunc), |
| 108695 | 108714 | INTERNAL_FUNCTION(sqlite_rename_table, 7, renameTableFunc), |
| 108696 | | - INTERNAL_FUNCTION(sqlite_rename_test, 6, renameTableTest), |
| 108715 | + INTERNAL_FUNCTION(sqlite_rename_test, 7, renameTableTest), |
| 108697 | 108716 | INTERNAL_FUNCTION(sqlite_drop_column, 3, dropColumnFunc), |
| 108698 | 108717 | }; |
| 108699 | 108718 | sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs)); |
| 108700 | 108719 | } |
| 108701 | 108720 | #endif /* SQLITE_ALTER_TABLE */ |
| | @@ -135116,10 +135135,11 @@ |
| 135116 | 135135 | |
| 135117 | 135136 | /* Restriction (23) */ |
| 135118 | 135137 | if( (p->selFlags & SF_Recursive) ) return 0; |
| 135119 | 135138 | |
| 135120 | 135139 | if( pSrc->nSrc>1 ){ |
| 135140 | + if( pParse->nSelect>500 ) return 0; |
| 135121 | 135141 | aCsrMap = sqlite3DbMallocZero(db, pParse->nTab*sizeof(int)); |
| 135122 | 135142 | } |
| 135123 | 135143 | } |
| 135124 | 135144 | |
| 135125 | 135145 | /***** If we reach this point, flattening is permitted. *****/ |
| | @@ -135192,10 +135212,11 @@ |
| 135192 | 135212 | p->op = TK_ALL; |
| 135193 | 135213 | pSubitem->pTab = pItemTab; |
| 135194 | 135214 | if( pNew==0 ){ |
| 135195 | 135215 | p->pPrior = pPrior; |
| 135196 | 135216 | }else{ |
| 135217 | + pNew->selId = ++pParse->nSelect; |
| 135197 | 135218 | if( aCsrMap && db->mallocFailed==0 ){ |
| 135198 | 135219 | renumberCursors(pParse, pNew, iFrom, aCsrMap); |
| 135199 | 135220 | } |
| 135200 | 135221 | pNew->pPrior = pPrior; |
| 135201 | 135222 | if( pPrior ) pPrior->pNext = pNew; |
| | @@ -229190,11 +229211,11 @@ |
| 229190 | 229211 | int nArg, /* Number of args */ |
| 229191 | 229212 | sqlite3_value **apUnused /* Function arguments */ |
| 229192 | 229213 | ){ |
| 229193 | 229214 | assert( nArg==0 ); |
| 229194 | 229215 | UNUSED_PARAM2(nArg, apUnused); |
| 229195 | | - sqlite3_result_text(pCtx, "fts5: 2021-03-12 15:10:09 acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b", -1, SQLITE_TRANSIENT); |
| 229216 | + sqlite3_result_text(pCtx, "fts5: 2021-03-17 19:07:21 ea80f3002f4120f5dcee76e8779dfdc88e1e096c5cdd06904c20fd26d50c3827", -1, SQLITE_TRANSIENT); |
| 229196 | 229217 | } |
| 229197 | 229218 | |
| 229198 | 229219 | /* |
| 229199 | 229220 | ** Return true if zName is the extension on one of the shadow tables used |
| 229200 | 229221 | ** by this module. |
| | @@ -234116,12 +234137,12 @@ |
| 234116 | 234137 | } |
| 234117 | 234138 | #endif /* SQLITE_CORE */ |
| 234118 | 234139 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */ |
| 234119 | 234140 | |
| 234120 | 234141 | /************** End of stmt.c ************************************************/ |
| 234121 | | -#if __LINE__!=234121 |
| 234142 | +#if __LINE__!=234142 |
| 234122 | 234143 | #undef SQLITE_SOURCE_ID |
| 234123 | | -#define SQLITE_SOURCE_ID "2021-03-12 15:10:09 acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115alt2" |
| 234144 | +#define SQLITE_SOURCE_ID "2021-03-17 19:07:21 ea80f3002f4120f5dcee76e8779dfdc88e1e096c5cdd06904c20fd26d50calt2" |
| 234124 | 234145 | #endif |
| 234125 | 234146 | /* Return the source-id for this library */ |
| 234126 | 234147 | SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; } |
| 234127 | 234148 | /************************** End of sqlite3.c ******************************/ |
| 234128 | 234149 | |