@@ -123,7 +123,7 @@ SQLITE_API LPWSTR sqlite3_win32_utf8_to_unicode(const char*);
123123/*** Begin of #include "sqlite3patched.c" ***/
124124/******************************************************************************
125125** This file is an amalgamation of many separate C source files from SQLite
126- ** version 3.51.0 . By combining all the individual C code files into this
126+ ** version 3.51.1 . By combining all the individual C code files into this
127127** single large file, the entire code can be compiled as a single translation
128128** unit. This allows many compilers to do optimizations that would not be
129129** possible if the files were compiled separately. Performance improvements
@@ -141,7 +141,7 @@ SQLITE_API LPWSTR sqlite3_win32_utf8_to_unicode(const char*);
141141** separate file. This file contains only code for the core SQLite library.
142142**
143143** The content in this amalgamation comes from Fossil check-in
144- ** fb2c931ae597f8d00a37574ff67aeed3eced with changes in files:
144+ ** 281fc0e9afc38674b9b0991943b9e9d1e64c with changes in files:
145145**
146146**
147147*/
@@ -590,12 +590,12 @@ extern "C" {
590590** [sqlite3_libversion_number()], [sqlite3_sourceid()],
591591** [sqlite_version()] and [sqlite_source_id()].
592592*/
593- #define SQLITE_VERSION "3.51.0 "
594- #define SQLITE_VERSION_NUMBER 3051000
595- #define SQLITE_SOURCE_ID "2025-11-04 19:38:17 fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b "
596- #define SQLITE_SCM_BRANCH "trunk "
597- #define SQLITE_SCM_TAGS "release major-release version-3.51.0 "
598- #define SQLITE_SCM_DATETIME "2025-11-04T19:38:17.314Z "
593+ #define SQLITE_VERSION "3.51.1 "
594+ #define SQLITE_VERSION_NUMBER 3051001
595+ #define SQLITE_SOURCE_ID "2025-11-28 17:28:25 281fc0e9afc38674b9b0991943b9e9d1e64c6cbdb133d35f6f5c87ff6af38a88 "
596+ #define SQLITE_SCM_BRANCH "branch-3.51 "
597+ #define SQLITE_SCM_TAGS "release version-3.51.1 "
598+ #define SQLITE_SCM_DATETIME "2025-11-28T17:28:25.933Z "
599599
600600/*
601601** CAPI3REF: Run-Time Library Version Numbers
@@ -10870,7 +10870,7 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
1087010870** ){
1087110871** // do something with pVal
1087210872** }
10873- ** if( rc!=SQLITE_OK ){
10873+ ** if( rc!=SQLITE_DONE ){
1087410874** // an error has occurred
1087510875** }
1087610876** </pre></blockquote>)^
@@ -38147,6 +38147,7 @@ SQLITE_PRIVATE void *sqlite3HashInsert(Hash *pH, const char *pKey, void *data){
3814738147 return 0;
3814838148}
3814938149
38150+
3815038151/************** End of hash.c ************************************************/
3815138152/************** Begin file opcodes.c *****************************************/
3815238153/* Automatically generated. Do not edit */
@@ -130814,6 +130815,7 @@ SQLITE_PRIVATE void sqlite3SchemaClear(void *p){
130814130815 for(pElem=sqliteHashFirst(&temp2); pElem; pElem=sqliteHashNext(pElem)){
130815130816 sqlite3DeleteTrigger(&xdb, (Trigger*)sqliteHashData(pElem));
130816130817 }
130818+
130817130819 sqlite3HashClear(&temp2);
130818130820 sqlite3HashInit(&pSchema->tblHash);
130819130821 for(pElem=sqliteHashFirst(&temp1); pElem; pElem=sqliteHashNext(pElem)){
@@ -161144,9 +161146,12 @@ SQLITE_PRIVATE int sqlite3VtabEponymousTableInit(Parse *pParse, Module *pMod){
161144161146 addModuleArgument(pParse, pTab, sqlite3DbStrDup(db, pTab->zName));
161145161147 addModuleArgument(pParse, pTab, 0);
161146161148 addModuleArgument(pParse, pTab, sqlite3DbStrDup(db, pTab->zName));
161149+ db->nSchemaLock++;
161147161150 rc = vtabCallConstructor(db, pTab, pMod, pModule->xConnect, &zErr);
161151+ db->nSchemaLock--;
161148161152 if( rc ){
161149161153 sqlite3ErrorMsg(pParse, "%s", zErr);
161154+ pParse->rc = rc;
161150161155 sqlite3DbFree(db, zErr);
161151161156 sqlite3VtabEponymousTableClear(db, pMod);
161152161157 }
@@ -174208,8 +174213,22 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
174208174213 sqlite3VdbeAddOp2(v, OP_Goto, 1, pLevel->p2);
174209174214 }
174210174215#endif /* SQLITE_DISABLE_SKIPAHEAD_DISTINCT */
174211- if( pTabList->a[pLevel->iFrom].fg.fromExists ){
174212- sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
174216+ if( pTabList->a[pLevel->iFrom].fg.fromExists && i==pWInfo->nLevel-1 ){
174217+ /* If the EXISTS-to-JOIN optimization was applied, then the EXISTS
174218+ ** loop(s) will be the inner-most loops of the join. There might be
174219+ ** multiple EXISTS loops, but they will all be nested, and the join
174220+ ** order will not have been changed by the query planner. If the
174221+ ** inner-most EXISTS loop sees a single successful row, it should
174222+ ** break out of *all* EXISTS loops. But only the inner-most of the
174223+ ** nested EXISTS loops should do this breakout. */
174224+ int nOuter = 0; /* Nr of outer EXISTS that this one is nested within */
174225+ while( nOuter<i ){
174226+ if( !pTabList->a[pLevel[-nOuter-1].iFrom].fg.fromExists ) break;
174227+ nOuter++;
174228+ }
174229+ testcase( nOuter>0 );
174230+ sqlite3VdbeAddOp2(v, OP_Goto, 0, pLevel[-nOuter].addrBrk);
174231+ VdbeComment((v, "EXISTS break"));
174213174232 }
174214174233 /* The common case: Advance to the next row */
174215174234 if( pLevel->addrCont ) sqlite3VdbeResolveLabel(v, pLevel->addrCont);
@@ -186398,6 +186417,7 @@ SQLITE_PRIVATE void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
186398186417 /* Clear the TEMP schema separately and last */
186399186418 if( db->aDb[1].pSchema ){
186400186419 sqlite3SchemaClear(db->aDb[1].pSchema);
186420+ assert( db->aDb[1].pSchema->trigHash.count==0 );
186401186421 }
186402186422 sqlite3VtabUnlockList(db);
186403186423
@@ -187726,7 +187746,7 @@ SQLITE_API const char *sqlite3_errmsg(sqlite3 *db){
187726187746*/
187727187747SQLITE_API int sqlite3_set_errmsg(sqlite3 *db, int errcode, const char *zMsg){
187728187748 int rc = SQLITE_OK;
187729- if( !sqlite3SafetyCheckSickOrOk (db) ){
187749+ if( !sqlite3SafetyCheckOk (db) ){
187730187750 return SQLITE_MISUSE_BKPT;
187731187751 }
187732187752 sqlite3_mutex_enter(db->mutex);
@@ -249401,6 +249421,7 @@ static void fts5SegIterReverseInitPage(Fts5Index *p, Fts5SegIter *pIter){
249401249421 while( 1 ){
249402249422 u64 iDelta = 0;
249403249423
249424+ if( i>=n ) break;
249404249425 if( eDetail==FTS5_DETAIL_NONE ){
249405249426 /* todo */
249406249427 if( i<n && a[i]==0 ){
@@ -260464,7 +260485,7 @@ static void fts5SourceIdFunc(
260464260485){
260465260486 assert( nArg==0 );
260466260487 UNUSED_PARAM2(nArg, apUnused);
260467- sqlite3_result_text(pCtx, "fts5: 2025-11-04 19:38:17 fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b ", -1, SQLITE_TRANSIENT);
260488+ sqlite3_result_text(pCtx, "fts5: 2025-11-28 17:28:25 281fc0e9afc38674b9b0991943b9e9d1e64c6cbdb133d35f6f5c87ff6af38a88 ", -1, SQLITE_TRANSIENT);
260468260489}
260469260490
260470260491/*
@@ -265285,7 +265306,12 @@ static int fts5VocabOpenMethod(
265285265306 return rc;
265286265307}
265287265308
265309+ /*
265310+ ** Restore cursor pCsr to the state it was in immediately after being
265311+ ** created by the xOpen() method.
265312+ */
265288265313static void fts5VocabResetCursor(Fts5VocabCursor *pCsr){
265314+ int nCol = pCsr->pFts5->pConfig->nCol;
265289265315 pCsr->rowid = 0;
265290265316 sqlite3Fts5IterClose(pCsr->pIter);
265291265317 sqlite3Fts5StructureRelease(pCsr->pStruct);
@@ -265295,6 +265321,12 @@ static void fts5VocabResetCursor(Fts5VocabCursor *pCsr){
265295265321 pCsr->nLeTerm = -1;
265296265322 pCsr->zLeTerm = 0;
265297265323 pCsr->bEof = 0;
265324+ pCsr->iCol = 0;
265325+ pCsr->iInstPos = 0;
265326+ pCsr->iInstOff = 0;
265327+ pCsr->colUsed = 0;
265328+ memset(pCsr->aCnt, 0, sizeof(i64)*nCol);
265329+ memset(pCsr->aDoc, 0, sizeof(i64)*nCol);
265298265330}
265299265331
265300265332/*
@@ -266304,9 +266336,9 @@ SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
266304266336
266305266337#define SQLITE3MC_VERSION_MAJOR 2
266306266338#define SQLITE3MC_VERSION_MINOR 2
266307- #define SQLITE3MC_VERSION_RELEASE 5
266339+ #define SQLITE3MC_VERSION_RELEASE 6
266308266340#define SQLITE3MC_VERSION_SUBRELEASE 0
266309- #define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 2.2.5 "
266341+ #define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 2.2.6 "
266310266342
266311266343#endif /* SQLITE3MC_VERSION_H_ */
266312266344/*** End of #include "sqlite3mc_version.h" ***/
@@ -266465,12 +266497,12 @@ extern "C" {
266465266497** [sqlite3_libversion_number()], [sqlite3_sourceid()],
266466266498** [sqlite_version()] and [sqlite_source_id()].
266467266499*/
266468- #define SQLITE_VERSION "3.51.0 "
266469- #define SQLITE_VERSION_NUMBER 3051000
266470- #define SQLITE_SOURCE_ID "2025-11-04 19:38:17 fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b "
266471- #define SQLITE_SCM_BRANCH "trunk "
266472- #define SQLITE_SCM_TAGS "release major-release version-3.51.0 "
266473- #define SQLITE_SCM_DATETIME "2025-11-04T19:38:17.314Z "
266500+ #define SQLITE_VERSION "3.51.1 "
266501+ #define SQLITE_VERSION_NUMBER 3051001
266502+ #define SQLITE_SOURCE_ID "2025-11-28 17:28:25 281fc0e9afc38674b9b0991943b9e9d1e64c6cbdb133d35f6f5c87ff6af38a88 "
266503+ #define SQLITE_SCM_BRANCH "branch-3.51 "
266504+ #define SQLITE_SCM_TAGS "release version-3.51.1 "
266505+ #define SQLITE_SCM_DATETIME "2025-11-28T17:28:25.933Z "
266474266506
266475266507/*
266476266508** CAPI3REF: Run-Time Library Version Numbers
@@ -276745,7 +276777,7 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
276745276777** ){
276746276778** // do something with pVal
276747276779** }
276748- ** if( rc!=SQLITE_OK ){
276780+ ** if( rc!=SQLITE_DONE ){
276749276781** // an error has occurred
276750276782** }
276751276783** </pre></blockquote>)^
@@ -334491,7 +334523,7 @@ sqlite3mcBtreeSetPageSize(Btree* p, int pageSize, int nReserve, int iFix)
334491334523** Change 4: Call sqlite3mcBtreeSetPageSize instead of sqlite3BtreeSetPageSize for main database
334492334524** (sqlite3mcBtreeSetPageSize allows to reduce the number of reserved bytes)
334493334525**
334494- ** This code is generated by the script rekeyvacuum.sh from SQLite version 3.51.0 amalgamation.
334526+ ** This code is generated by the script rekeyvacuum.sh from SQLite version 3.51.1 amalgamation.
334495334527*/
334496334528SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3mcRunVacuumForRekey(
334497334529 char **pzErrMsg, /* Write error message here */
0 commit comments