diff options
| author | 2021-03-19 13:59:55 +0500 | |
|---|---|---|
| committer | 2021-03-19 13:59:55 +0500 | |
| commit | 2377d8568337aa392b2c1323befc00167ac360a3 (patch) | |
| tree | 2cd31a919be546697b87f75bc428f5c20c19fca7 | |
| parent | ci: enable the bundled test (diff) | |
| download | zig-sqlite-2377d8568337aa392b2c1323befc00167ac360a3.tar.gz zig-sqlite-2377d8568337aa392b2c1323befc00167ac360a3.tar.xz zig-sqlite-2377d8568337aa392b2c1323befc00167ac360a3.zip | |
Update SQLite to 3.35.2
| -rw-r--r-- | c/sqlite3.c | 75 | ||||
| -rw-r--r-- | c/sqlite3.h | 6 |
2 files changed, 51 insertions, 30 deletions
diff --git a/c/sqlite3.c b/c/sqlite3.c index 30e6db8..54f8277 100644 --- a/c/sqlite3.c +++ b/c/sqlite3.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /****************************************************************************** | 1 | /****************************************************************************** |
| 2 | ** This file is an amalgamation of many separate C source files from SQLite | 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 | ** single large file, the entire code can be compiled as a single translation | 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 | 5 | ** unit. This allows many compilers to do optimizations that would not be |
| 6 | ** possible if the files were compiled separately. Performance improvements | 6 | ** possible if the files were compiled separately. Performance improvements |
| @@ -1186,9 +1186,9 @@ extern "C" { | |||
| 1186 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], | 1186 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 1187 | ** [sqlite_version()] and [sqlite_source_id()]. | 1187 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 1188 | */ | 1188 | */ |
| 1189 | #define SQLITE_VERSION "3.35.0" | 1189 | #define SQLITE_VERSION "3.35.2" |
| 1190 | #define SQLITE_VERSION_NUMBER 3035000 | 1190 | #define SQLITE_VERSION_NUMBER 3035002 |
| 1191 | #define SQLITE_SOURCE_ID "2021-03-12 15:10:09 acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b" | 1191 | #define SQLITE_SOURCE_ID "2021-03-17 19:07:21 ea80f3002f4120f5dcee76e8779dfdc88e1e096c5cdd06904c20fd26d50c3827" |
| 1192 | 1192 | ||
| 1193 | /* | 1193 | /* |
| 1194 | ** CAPI3REF: Run-Time Library Version Numbers | 1194 | ** CAPI3REF: Run-Time Library Version Numbers |
| @@ -17007,7 +17007,10 @@ struct sqlite3 { | |||
| 17007 | unsigned orphanTrigger : 1; /* Last statement is orphaned TEMP trigger */ | 17007 | unsigned orphanTrigger : 1; /* Last statement is orphaned TEMP trigger */ |
| 17008 | unsigned imposterTable : 1; /* Building an imposter table */ | 17008 | unsigned imposterTable : 1; /* Building an imposter table */ |
| 17009 | unsigned reopenMemdb : 1; /* ATTACH is really a reopen using MemDB */ | 17009 | unsigned reopenMemdb : 1; /* ATTACH is really a reopen using MemDB */ |
| 17010 | unsigned bDropColumn : 1; /* Doing schema check after DROP COLUMN */ | ||
| 17010 | char **azInit; /* "type", "name", and "tbl_name" columns */ | 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 | } init; | 17014 | } init; |
| 17012 | int nVdbeActive; /* Number of VDBEs currently running */ | 17015 | int nVdbeActive; /* Number of VDBEs currently running */ |
| 17013 | int nVdbeRead; /* Number of active VDBEs that read or write */ | 17016 | int nVdbeRead; /* Number of active VDBEs that read or write */ |
| @@ -22868,6 +22871,7 @@ static int isDate( | |||
| 22868 | int eType; | 22871 | int eType; |
| 22869 | memset(p, 0, sizeof(*p)); | 22872 | memset(p, 0, sizeof(*p)); |
| 22870 | if( argc==0 ){ | 22873 | if( argc==0 ){ |
| 22874 | if( !sqlite3NotPureFunc(context) ) return 1; | ||
| 22871 | return setDateTimeToCurrent(context, p); | 22875 | return setDateTimeToCurrent(context, p); |
| 22872 | } | 22876 | } |
| 22873 | if( (eType = sqlite3_value_type(argv[0]))==SQLITE_FLOAT | 22877 | if( (eType = sqlite3_value_type(argv[0]))==SQLITE_FLOAT |
| @@ -99167,6 +99171,7 @@ static int lookupName( | |||
| 99167 | assert( pExpr->op==TK_ID ); | 99171 | assert( pExpr->op==TK_ID ); |
| 99168 | if( ExprHasProperty(pExpr,EP_DblQuoted) | 99172 | if( ExprHasProperty(pExpr,EP_DblQuoted) |
| 99169 | && areDoubleQuotedStringsEnabled(db, pTopNC) | 99173 | && areDoubleQuotedStringsEnabled(db, pTopNC) |
| 99174 | && (db->init.bDropColumn==0 || sqlite3StrICmp(zCol, db->init.azInit[0])!=0) | ||
| 99170 | ){ | 99175 | ){ |
| 99171 | /* If a double-quoted identifier does not match any known column name, | 99176 | /* If a double-quoted identifier does not match any known column name, |
| 99172 | ** then treat it as a string. | 99177 | ** then treat it as a string. |
| @@ -99181,6 +99186,11 @@ static int lookupName( | |||
| 99181 | ** Someday, I hope to get rid of this hack. Unfortunately there is | 99186 | ** Someday, I hope to get rid of this hack. Unfortunately there is |
| 99182 | ** a huge amount of legacy SQL that uses it. So for now, we just | 99187 | ** a huge amount of legacy SQL that uses it. So for now, we just |
| 99183 | ** issue a warning. | 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 | sqlite3_log(SQLITE_WARNING, | 99195 | sqlite3_log(SQLITE_WARNING, |
| 99186 | "double-quoted string literal: \"%w\"", zCol); | 99196 | "double-quoted string literal: \"%w\"", zCol); |
| @@ -106780,7 +106790,8 @@ static void renameTestSchema( | |||
| 106780 | Parse *pParse, /* Parse context */ | 106790 | Parse *pParse, /* Parse context */ |
| 106781 | const char *zDb, /* Name of db to verify schema of */ | 106791 | const char *zDb, /* Name of db to verify schema of */ |
| 106782 | int bTemp, /* True if this is the temp db */ | 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 | pParse->colNamesSet = 1; | 106796 | pParse->colNamesSet = 1; |
| 106786 | sqlite3NestedParse(pParse, | 106797 | sqlite3NestedParse(pParse, |
| @@ -106788,9 +106799,9 @@ static void renameTestSchema( | |||
| 106788 | "FROM \"%w\"." DFLT_SCHEMA_TABLE " " | 106799 | "FROM \"%w\"." DFLT_SCHEMA_TABLE " " |
| 106789 | "WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'" | 106800 | "WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'" |
| 106790 | " AND sql NOT LIKE 'create virtual%%'" | 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 | zDb, | 106803 | zDb, |
| 106793 | zDb, bTemp, zWhen | 106804 | zDb, bTemp, zWhen, zDropColumn |
| 106794 | ); | 106805 | ); |
| 106795 | 106806 | ||
| 106796 | if( bTemp==0 ){ | 106807 | if( bTemp==0 ){ |
| @@ -106799,8 +106810,8 @@ static void renameTestSchema( | |||
| 106799 | "FROM temp." DFLT_SCHEMA_TABLE " " | 106810 | "FROM temp." DFLT_SCHEMA_TABLE " " |
| 106800 | "WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'" | 106811 | "WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'" |
| 106801 | " AND sql NOT LIKE 'create virtual%%'" | 106812 | " AND sql NOT LIKE 'create virtual%%'" |
| 106802 | " AND sqlite_rename_test(%Q, sql, type, name, 1, %Q)=NULL ", | 106813 | " AND sqlite_rename_test(%Q, sql, type, name, 1, %Q, %Q)=NULL ", |
| 106803 | zDb, zWhen | 106814 | zDb, zWhen, zDropColumn |
| 106804 | ); | 106815 | ); |
| 106805 | } | 106816 | } |
| 106806 | } | 106817 | } |
| @@ -106963,7 +106974,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable( | |||
| 106963 | "sql = sqlite_rename_table(%Q, type, name, sql, %Q, %Q, 1), " | 106974 | "sql = sqlite_rename_table(%Q, type, name, sql, %Q, %Q, 1), " |
| 106964 | "tbl_name = " | 106975 | "tbl_name = " |
| 106965 | "CASE WHEN tbl_name=%Q COLLATE nocase AND " | 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 | "THEN %Q ELSE tbl_name END " | 106978 | "THEN %Q ELSE tbl_name END " |
| 106968 | "WHERE type IN ('view', 'trigger')" | 106979 | "WHERE type IN ('view', 'trigger')" |
| 106969 | , zDb, zTabName, zName, zTabName, zDb, zName); | 106980 | , zDb, zTabName, zName, zTabName, zDb, zName); |
| @@ -106983,7 +106994,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable( | |||
| 106983 | #endif | 106994 | #endif |
| 106984 | 106995 | ||
| 106985 | renameReloadSchema(pParse, iDb, INITFLAG_AlterRename); | 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 | exit_rename_table: | 106999 | exit_rename_table: |
| 106989 | sqlite3SrcListDelete(db, pSrc); | 107000 | sqlite3SrcListDelete(db, pSrc); |
| @@ -107351,7 +107362,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameColumn( | |||
| 107351 | 107362 | ||
| 107352 | /* Drop and reload the database schema. */ | 107363 | /* Drop and reload the database schema. */ |
| 107353 | renameReloadSchema(pParse, iSchema, INITFLAG_AlterRename); | 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 | exit_rename_column: | 107367 | exit_rename_column: |
| 107357 | sqlite3SrcListDelete(db, pSrc); | 107368 | sqlite3SrcListDelete(db, pSrc); |
| @@ -107775,12 +107786,17 @@ static int renameParseSql( | |||
| 107775 | const char *zDb, /* Name of schema SQL belongs to */ | 107786 | const char *zDb, /* Name of schema SQL belongs to */ |
| 107776 | sqlite3 *db, /* Database handle */ | 107787 | sqlite3 *db, /* Database handle */ |
| 107777 | const char *zSql, /* SQL to parse */ | 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 | int rc; | 107792 | int rc; |
| 107781 | char *zErr = 0; | 107793 | char *zErr = 0; |
| 107782 | 107794 | ||
| 107783 | db->init.iDb = bTemp ? 1 : sqlite3FindDbName(db, zDb); | 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 | /* Parse the SQL statement passed as the first argument. If no error | 107801 | /* Parse the SQL statement passed as the first argument. If no error |
| 107786 | ** occurs and the parse does not result in a new table, index or | 107802 | ** occurs and the parse does not result in a new table, index or |
| @@ -107813,6 +107829,7 @@ static int renameParseSql( | |||
| 107813 | #endif | 107829 | #endif |
| 107814 | 107830 | ||
| 107815 | db->init.iDb = 0; | 107831 | db->init.iDb = 0; |
| 107832 | db->init.bDropColumn = 0; | ||
| 107816 | return rc; | 107833 | return rc; |
| 107817 | } | 107834 | } |
| 107818 | 107835 | ||
| @@ -108114,7 +108131,7 @@ static void renameColumnFunc( | |||
| 108114 | #ifndef SQLITE_OMIT_AUTHORIZATION | 108131 | #ifndef SQLITE_OMIT_AUTHORIZATION |
| 108115 | db->xAuth = 0; | 108132 | db->xAuth = 0; |
| 108116 | #endif | 108133 | #endif |
| 108117 | rc = renameParseSql(&sParse, zDb, db, zSql, bTemp); | 108134 | rc = renameParseSql(&sParse, zDb, db, zSql, bTemp, 0); |
| 108118 | 108135 | ||
| 108119 | /* Find tokens that need to be replaced. */ | 108136 | /* Find tokens that need to be replaced. */ |
| 108120 | memset(&sWalker, 0, sizeof(Walker)); | 108137 | memset(&sWalker, 0, sizeof(Walker)); |
| @@ -108156,12 +108173,12 @@ static void renameColumnFunc( | |||
| 108156 | for(pIdx=sParse.pNewIndex; pIdx; pIdx=pIdx->pNext){ | 108173 | for(pIdx=sParse.pNewIndex; pIdx; pIdx=pIdx->pNext){ |
| 108157 | sqlite3WalkExprList(&sWalker, pIdx->aColExpr); | 108174 | sqlite3WalkExprList(&sWalker, pIdx->aColExpr); |
| 108158 | } | 108175 | } |
| 108159 | } | ||
| 108160 | #ifndef SQLITE_OMIT_GENERATED_COLUMNS | 108176 | #ifndef SQLITE_OMIT_GENERATED_COLUMNS |
| 108161 | for(i=0; i<sParse.pNewTable->nCol; i++){ | 108177 | for(i=0; i<sParse.pNewTable->nCol; i++){ |
| 108162 | sqlite3WalkExpr(&sWalker, sParse.pNewTable->aCol[i].pDflt); | 108178 | sqlite3WalkExpr(&sWalker, sParse.pNewTable->aCol[i].pDflt); |
| 108163 | } | 108179 | } |
| 108164 | #endif | 108180 | #endif |
| 108181 | } | ||
| 108165 | 108182 | ||
| 108166 | for(pFKey=sParse.pNewTable->pFKey; pFKey; pFKey=pFKey->pNextFrom){ | 108183 | for(pFKey=sParse.pNewTable->pFKey; pFKey; pFKey=pFKey->pNextFrom){ |
| 108167 | for(i=0; i<pFKey->nCol; i++){ | 108184 | for(i=0; i<pFKey->nCol; i++){ |
| @@ -108318,7 +108335,7 @@ static void renameTableFunc( | |||
| 108318 | sWalker.xSelectCallback = renameTableSelectCb; | 108335 | sWalker.xSelectCallback = renameTableSelectCb; |
| 108319 | sWalker.u.pRename = &sCtx; | 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 | if( rc==SQLITE_OK ){ | 108340 | if( rc==SQLITE_OK ){ |
| 108324 | int isLegacy = (db->flags & SQLITE_LegacyAlter); | 108341 | int isLegacy = (db->flags & SQLITE_LegacyAlter); |
| @@ -108434,6 +108451,7 @@ static void renameTableFunc( | |||
| 108434 | ** 3: Object name. | 108451 | ** 3: Object name. |
| 108435 | ** 4: True if object is from temp schema. | 108452 | ** 4: True if object is from temp schema. |
| 108436 | ** 5: "when" part of error message. | 108453 | ** 5: "when" part of error message. |
| 108454 | ** 6: Name of column being dropped, or NULL. | ||
| 108437 | ** | 108455 | ** |
| 108438 | ** Unless it finds an error, this function normally returns NULL. However, it | 108456 | ** Unless it finds an error, this function normally returns NULL. However, it |
| 108439 | ** returns integer value 1 if: | 108457 | ** returns integer value 1 if: |
| @@ -108452,6 +108470,7 @@ static void renameTableTest( | |||
| 108452 | int bTemp = sqlite3_value_int(argv[4]); | 108470 | int bTemp = sqlite3_value_int(argv[4]); |
| 108453 | int isLegacy = (db->flags & SQLITE_LegacyAlter); | 108471 | int isLegacy = (db->flags & SQLITE_LegacyAlter); |
| 108454 | char const *zWhen = (const char*)sqlite3_value_text(argv[5]); | 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 | #ifndef SQLITE_OMIT_AUTHORIZATION | 108475 | #ifndef SQLITE_OMIT_AUTHORIZATION |
| 108457 | sqlite3_xauth xAuth = db->xAuth; | 108476 | sqlite3_xauth xAuth = db->xAuth; |
| @@ -108462,7 +108481,7 @@ static void renameTableTest( | |||
| 108462 | if( zDb && zInput ){ | 108481 | if( zDb && zInput ){ |
| 108463 | int rc; | 108482 | int rc; |
| 108464 | Parse sParse; | 108483 | Parse sParse; |
| 108465 | rc = renameParseSql(&sParse, zDb, db, zInput, bTemp); | 108484 | rc = renameParseSql(&sParse, zDb, db, zInput, bTemp, zDropColumn); |
| 108466 | if( rc==SQLITE_OK ){ | 108485 | if( rc==SQLITE_OK ){ |
| 108467 | if( isLegacy==0 && sParse.pNewTable && sParse.pNewTable->pSelect ){ | 108486 | if( isLegacy==0 && sParse.pNewTable && sParse.pNewTable->pSelect ){ |
| 108468 | NameContext sNC; | 108487 | NameContext sNC; |
| @@ -108530,7 +108549,7 @@ static void dropColumnFunc( | |||
| 108530 | #endif | 108549 | #endif |
| 108531 | 108550 | ||
| 108532 | UNUSED_PARAMETER(NotUsed); | 108551 | UNUSED_PARAMETER(NotUsed); |
| 108533 | rc = renameParseSql(&sParse, zDb, db, zSql, iSchema==1); | 108552 | rc = renameParseSql(&sParse, zDb, db, zSql, iSchema==1, 0); |
| 108534 | if( rc!=SQLITE_OK ) goto drop_column_done; | 108553 | if( rc!=SQLITE_OK ) goto drop_column_done; |
| 108535 | pTab = sParse.pNewTable; | 108554 | pTab = sParse.pNewTable; |
| 108536 | if( pTab==0 || pTab->nCol==1 || iCol>=pTab->nCol ){ | 108555 | if( pTab==0 || pTab->nCol==1 || iCol>=pTab->nCol ){ |
| @@ -108623,7 +108642,7 @@ SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, Token * | |||
| 108623 | iDb = sqlite3SchemaToIndex(db, pTab->pSchema); | 108642 | iDb = sqlite3SchemaToIndex(db, pTab->pSchema); |
| 108624 | assert( iDb>=0 ); | 108643 | assert( iDb>=0 ); |
| 108625 | zDb = db->aDb[iDb].zDbSName; | 108644 | zDb = db->aDb[iDb].zDbSName; |
| 108626 | renameTestSchema(pParse, zDb, iDb==1, ""); | 108645 | renameTestSchema(pParse, zDb, iDb==1, "", 0); |
| 108627 | sqlite3NestedParse(pParse, | 108646 | sqlite3NestedParse(pParse, |
| 108628 | "UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET " | 108647 | "UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET " |
| 108629 | "sql = sqlite_drop_column(%d, sql, %d) " | 108648 | "sql = sqlite_drop_column(%d, sql, %d) " |
| @@ -108633,7 +108652,7 @@ SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, Token * | |||
| 108633 | 108652 | ||
| 108634 | /* Drop and reload the database schema. */ | 108653 | /* Drop and reload the database schema. */ |
| 108635 | renameReloadSchema(pParse, iDb, INITFLAG_AlterDrop); | 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 | /* Edit rows of table on disk */ | 108657 | /* Edit rows of table on disk */ |
| 108639 | if( pParse->nErr==0 && (pTab->aCol[iCol].colFlags & COLFLAG_VIRTUAL)==0 ){ | 108658 | if( pParse->nErr==0 && (pTab->aCol[iCol].colFlags & COLFLAG_VIRTUAL)==0 ){ |
| @@ -108693,7 +108712,7 @@ SQLITE_PRIVATE void sqlite3AlterFunctions(void){ | |||
| 108693 | static FuncDef aAlterTableFuncs[] = { | 108712 | static FuncDef aAlterTableFuncs[] = { |
| 108694 | INTERNAL_FUNCTION(sqlite_rename_column, 9, renameColumnFunc), | 108713 | INTERNAL_FUNCTION(sqlite_rename_column, 9, renameColumnFunc), |
| 108695 | INTERNAL_FUNCTION(sqlite_rename_table, 7, renameTableFunc), | 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 | INTERNAL_FUNCTION(sqlite_drop_column, 3, dropColumnFunc), | 108716 | INTERNAL_FUNCTION(sqlite_drop_column, 3, dropColumnFunc), |
| 108698 | }; | 108717 | }; |
| 108699 | sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs)); | 108718 | sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs)); |
| @@ -135118,6 +135137,7 @@ static int flattenSubquery( | |||
| 135118 | if( (p->selFlags & SF_Recursive) ) return 0; | 135137 | if( (p->selFlags & SF_Recursive) ) return 0; |
| 135119 | 135138 | ||
| 135120 | if( pSrc->nSrc>1 ){ | 135139 | if( pSrc->nSrc>1 ){ |
| 135140 | if( pParse->nSelect>500 ) return 0; | ||
| 135121 | aCsrMap = sqlite3DbMallocZero(db, pParse->nTab*sizeof(int)); | 135141 | aCsrMap = sqlite3DbMallocZero(db, pParse->nTab*sizeof(int)); |
| 135122 | } | 135142 | } |
| 135123 | } | 135143 | } |
| @@ -135194,6 +135214,7 @@ static int flattenSubquery( | |||
| 135194 | if( pNew==0 ){ | 135214 | if( pNew==0 ){ |
| 135195 | p->pPrior = pPrior; | 135215 | p->pPrior = pPrior; |
| 135196 | }else{ | 135216 | }else{ |
| 135217 | pNew->selId = ++pParse->nSelect; | ||
| 135197 | if( aCsrMap && db->mallocFailed==0 ){ | 135218 | if( aCsrMap && db->mallocFailed==0 ){ |
| 135198 | renumberCursors(pParse, pNew, iFrom, aCsrMap); | 135219 | renumberCursors(pParse, pNew, iFrom, aCsrMap); |
| 135199 | } | 135220 | } |
| @@ -229192,7 +229213,7 @@ static void fts5SourceIdFunc( | |||
| 229192 | ){ | 229213 | ){ |
| 229193 | assert( nArg==0 ); | 229214 | assert( nArg==0 ); |
| 229194 | UNUSED_PARAM2(nArg, apUnused); | 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 | /* |
| @@ -234118,9 +234139,9 @@ SQLITE_API int sqlite3_stmt_init( | |||
| 234118 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */ | 234139 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */ |
| 234119 | 234140 | ||
| 234120 | /************** End of stmt.c ************************************************/ | 234141 | /************** End of stmt.c ************************************************/ |
| 234121 | #if __LINE__!=234121 | 234142 | #if __LINE__!=234142 |
| 234122 | #undef SQLITE_SOURCE_ID | 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 | #endif | 234145 | #endif |
| 234125 | /* Return the source-id for this library */ | 234146 | /* Return the source-id for this library */ |
| 234126 | SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; } | 234147 | SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; } |
diff --git a/c/sqlite3.h b/c/sqlite3.h index 53d9ec8..f636b29 100644 --- a/c/sqlite3.h +++ b/c/sqlite3.h | |||
| @@ -123,9 +123,9 @@ extern "C" { | |||
| 123 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], | 123 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 124 | ** [sqlite_version()] and [sqlite_source_id()]. | 124 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 125 | */ | 125 | */ |
| 126 | #define SQLITE_VERSION "3.35.0" | 126 | #define SQLITE_VERSION "3.35.2" |
| 127 | #define SQLITE_VERSION_NUMBER 3035000 | 127 | #define SQLITE_VERSION_NUMBER 3035002 |
| 128 | #define SQLITE_SOURCE_ID "2021-03-12 15:10:09 acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b" | 128 | #define SQLITE_SOURCE_ID "2021-03-17 19:07:21 ea80f3002f4120f5dcee76e8779dfdc88e1e096c5cdd06904c20fd26d50c3827" |
| 129 | 129 | ||
| 130 | /* | 130 | /* |
| 131 | ** CAPI3REF: Run-Time Library Version Numbers | 131 | ** CAPI3REF: Run-Time Library Version Numbers |