Skip to content

Commit fadf5ae

Browse files
committed
Prepare release of version 2.2.6
- Update to SQLite 3.51.1
1 parent b50e19b commit fadf5ae

File tree

10 files changed

+114
-46
lines changed

10 files changed

+114
-46
lines changed

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [2.2.6] - 2025-11-30
11+
12+
### Changed
13+
14+
- Based on SQLite version 3.51.1
15+
1016
## [2.2.5] - 2025-11-06
1117

1218
### Changed
@@ -686,7 +692,8 @@ The following ciphers are supported:
686692
- AES 256 Bit CBC - SHA1/SHA256/SHA512 HMAC ([SQLCipher](https://www.zetetic.net/sqlcipher/), database versions 1, 2, 3, and 4)
687693
- RC4 - No HMAC ([System.Data.SQLite](http://system.data.sqlite.org))
688694

689-
[Unreleased]: ../../compare/v2.2.5...HEAD
695+
[Unreleased]: ../../compare/v2.2.6...HEAD
696+
[2.2.6]: ../../compare/v2.2.5...v2.2.6
690697
[2.2.5]: ../../compare/v2.2.4...v2.2.5
691698
[2.2.4]: ../../compare/v2.2.3...v2.2.4
692699
[2.2.3]: ../../compare/v2.2.2...v2.2.3

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION 3.24.0.0)
2-
project(sqlite3mc VERSION 2.2.5)
2+
project(sqlite3mc VERSION 2.2.6)
33

44
# Helper macro
55
macro(_Enable_MT _target)

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ dnl Copyright (C) 2019-2025 Ulrich Telle <[email protected]>
44
dnl
55
dnl This file is covered by the same licence as the entire SQLite3 Multiple Ciphers package.
66

7-
AC_INIT([sqlite3mc], [2.2.5], [[email protected]])
7+
AC_INIT([sqlite3mc], [2.2.6], [[email protected]])
88

99
dnl This is the version tested with, might work with earlier ones.
1010
AC_PREREQ([2.69])

readme.md

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,8 @@ The code was mainly developed under Windows, but was tested under Linux as well.
1010

1111
## Version information
1212

13-
* 2.2.5 - *November 2025*
14-
- Based on SQLite version 3.51.0
15-
- Enabled extension PERCENTILE
16-
- Updated build files
17-
- Fixed issue #215 "Internal compiler error for VC++ 2017"
18-
- Fixed issue #218 "Raw keys in SQLCipher notation are not handled correctly"
19-
- Fixed issue #221 "Allow initializing library without default VFS"
13+
* 2.2.6 - *November 2025*
14+
- Based on SQLite version 3.51.1
2015

2116
For further version information please consult the [CHANGELOG](CHANGELOG.md).
2217

src/rekeyvacuum.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
** Change 4: Call sqlite3mcBtreeSetPageSize instead of sqlite3BtreeSetPageSize for main database
2828
** (sqlite3mcBtreeSetPageSize allows to reduce the number of reserved bytes)
2929
**
30-
** This code is generated by the script rekeyvacuum.sh from SQLite version 3.51.0 amalgamation.
30+
** This code is generated by the script rekeyvacuum.sh from SQLite version 3.51.1 amalgamation.
3131
*/
3232
SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3mcRunVacuumForRekey(
3333
char **pzErrMsg, /* Write error message here */

src/shell.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14958,6 +14958,7 @@ static char *intckMprintf(sqlite3_intck *p, const char *zFmt, ...){
1495814958
sqlite3_free(zRet);
1495914959
zRet = 0;
1496014960
}
14961+
va_end(ap);
1496114962
return zRet;
1496214963
}
1496314964

@@ -29073,6 +29074,7 @@ static int do_meta_command(char *zLine, ShellState *p){
2907329074
}
2907429075
p->showHeader = savedShowHeader;
2907529076
p->shellFlgs = savedShellFlags;
29077+
rc = p->nErr>0;
2907629078
}else
2907729079

2907829080
if( c=='e' && cli_strncmp(azArg[0], "echo", n)==0 ){

src/sqlite3.c

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/******************************************************************************
22
** This file is an amalgamation of many separate C source files from SQLite
3-
** version 3.51.0. By combining all the individual C code files into this
3+
** version 3.51.1. 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
@@ -18,7 +18,7 @@
1818
** separate file. This file contains only code for the core SQLite library.
1919
**
2020
** The content in this amalgamation comes from Fossil check-in
21-
** fb2c931ae597f8d00a37574ff67aeed3eced with changes in files:
21+
** 281fc0e9afc38674b9b0991943b9e9d1e64c with changes in files:
2222
**
2323
**
2424
*/
@@ -467,12 +467,12 @@ extern "C" {
467467
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468468
** [sqlite_version()] and [sqlite_source_id()].
469469
*/
470-
#define SQLITE_VERSION "3.51.0"
471-
#define SQLITE_VERSION_NUMBER 3051000
472-
#define SQLITE_SOURCE_ID "2025-11-04 19:38:17 fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b"
473-
#define SQLITE_SCM_BRANCH "trunk"
474-
#define SQLITE_SCM_TAGS "release major-release version-3.51.0"
475-
#define SQLITE_SCM_DATETIME "2025-11-04T19:38:17.314Z"
470+
#define SQLITE_VERSION "3.51.1"
471+
#define SQLITE_VERSION_NUMBER 3051001
472+
#define SQLITE_SOURCE_ID "2025-11-28 17:28:25 281fc0e9afc38674b9b0991943b9e9d1e64c6cbdb133d35f6f5c87ff6af38a88"
473+
#define SQLITE_SCM_BRANCH "branch-3.51"
474+
#define SQLITE_SCM_TAGS "release version-3.51.1"
475+
#define SQLITE_SCM_DATETIME "2025-11-28T17:28:25.933Z"
476476

477477
/*
478478
** CAPI3REF: Run-Time Library Version Numbers
@@ -10747,7 +10747,7 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
1074710747
** &nbsp; ){
1074810748
** &nbsp; // do something with pVal
1074910749
** &nbsp; }
10750-
** &nbsp; if( rc!=SQLITE_OK ){
10750+
** &nbsp; if( rc!=SQLITE_DONE ){
1075110751
** &nbsp; // an error has occurred
1075210752
** &nbsp; }
1075310753
** </pre></blockquote>)^
@@ -38004,6 +38004,7 @@ SQLITE_PRIVATE void *sqlite3HashInsert(Hash *pH, const char *pKey, void *data){
3800438004
return 0;
3800538005
}
3800638006

38007+
3800738008
/************** End of hash.c ************************************************/
3800838009
/************** Begin file opcodes.c *****************************************/
3800938010
/* Automatically generated. Do not edit */
@@ -130655,6 +130656,7 @@ SQLITE_PRIVATE void sqlite3SchemaClear(void *p){
130655130656
for(pElem=sqliteHashFirst(&temp2); pElem; pElem=sqliteHashNext(pElem)){
130656130657
sqlite3DeleteTrigger(&xdb, (Trigger*)sqliteHashData(pElem));
130657130658
}
130659+
130658130660
sqlite3HashClear(&temp2);
130659130661
sqlite3HashInit(&pSchema->tblHash);
130660130662
for(pElem=sqliteHashFirst(&temp1); pElem; pElem=sqliteHashNext(pElem)){
@@ -160976,9 +160978,12 @@ SQLITE_PRIVATE int sqlite3VtabEponymousTableInit(Parse *pParse, Module *pMod){
160976160978
addModuleArgument(pParse, pTab, sqlite3DbStrDup(db, pTab->zName));
160977160979
addModuleArgument(pParse, pTab, 0);
160978160980
addModuleArgument(pParse, pTab, sqlite3DbStrDup(db, pTab->zName));
160981+
db->nSchemaLock++;
160979160982
rc = vtabCallConstructor(db, pTab, pMod, pModule->xConnect, &zErr);
160983+
db->nSchemaLock--;
160980160984
if( rc ){
160981160985
sqlite3ErrorMsg(pParse, "%s", zErr);
160986+
pParse->rc = rc;
160982160987
sqlite3DbFree(db, zErr);
160983160988
sqlite3VtabEponymousTableClear(db, pMod);
160984160989
}
@@ -174040,8 +174045,22 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
174040174045
sqlite3VdbeAddOp2(v, OP_Goto, 1, pLevel->p2);
174041174046
}
174042174047
#endif /* SQLITE_DISABLE_SKIPAHEAD_DISTINCT */
174043-
if( pTabList->a[pLevel->iFrom].fg.fromExists ){
174044-
sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
174048+
if( pTabList->a[pLevel->iFrom].fg.fromExists && i==pWInfo->nLevel-1 ){
174049+
/* If the EXISTS-to-JOIN optimization was applied, then the EXISTS
174050+
** loop(s) will be the inner-most loops of the join. There might be
174051+
** multiple EXISTS loops, but they will all be nested, and the join
174052+
** order will not have been changed by the query planner. If the
174053+
** inner-most EXISTS loop sees a single successful row, it should
174054+
** break out of *all* EXISTS loops. But only the inner-most of the
174055+
** nested EXISTS loops should do this breakout. */
174056+
int nOuter = 0; /* Nr of outer EXISTS that this one is nested within */
174057+
while( nOuter<i ){
174058+
if( !pTabList->a[pLevel[-nOuter-1].iFrom].fg.fromExists ) break;
174059+
nOuter++;
174060+
}
174061+
testcase( nOuter>0 );
174062+
sqlite3VdbeAddOp2(v, OP_Goto, 0, pLevel[-nOuter].addrBrk);
174063+
VdbeComment((v, "EXISTS break"));
174045174064
}
174046174065
/* The common case: Advance to the next row */
174047174066
if( pLevel->addrCont ) sqlite3VdbeResolveLabel(v, pLevel->addrCont);
@@ -186225,6 +186244,7 @@ SQLITE_PRIVATE void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
186225186244
/* Clear the TEMP schema separately and last */
186226186245
if( db->aDb[1].pSchema ){
186227186246
sqlite3SchemaClear(db->aDb[1].pSchema);
186247+
assert( db->aDb[1].pSchema->trigHash.count==0 );
186228186248
}
186229186249
sqlite3VtabUnlockList(db);
186230186250

@@ -187553,7 +187573,7 @@ SQLITE_API const char *sqlite3_errmsg(sqlite3 *db){
187553187573
*/
187554187574
SQLITE_API int sqlite3_set_errmsg(sqlite3 *db, int errcode, const char *zMsg){
187555187575
int rc = SQLITE_OK;
187556-
if( !sqlite3SafetyCheckSickOrOk(db) ){
187576+
if( !sqlite3SafetyCheckOk(db) ){
187557187577
return SQLITE_MISUSE_BKPT;
187558187578
}
187559187579
sqlite3_mutex_enter(db->mutex);
@@ -249220,6 +249240,7 @@ static void fts5SegIterReverseInitPage(Fts5Index *p, Fts5SegIter *pIter){
249220249240
while( 1 ){
249221249241
u64 iDelta = 0;
249222249242

249243+
if( i>=n ) break;
249223249244
if( eDetail==FTS5_DETAIL_NONE ){
249224249245
/* todo */
249225249246
if( i<n && a[i]==0 ){
@@ -260283,7 +260304,7 @@ static void fts5SourceIdFunc(
260283260304
){
260284260305
assert( nArg==0 );
260285260306
UNUSED_PARAM2(nArg, apUnused);
260286-
sqlite3_result_text(pCtx, "fts5: 2025-11-04 19:38:17 fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b", -1, SQLITE_TRANSIENT);
260307+
sqlite3_result_text(pCtx, "fts5: 2025-11-28 17:28:25 281fc0e9afc38674b9b0991943b9e9d1e64c6cbdb133d35f6f5c87ff6af38a88", -1, SQLITE_TRANSIENT);
260287260308
}
260288260309

260289260310
/*
@@ -265104,7 +265125,12 @@ static int fts5VocabOpenMethod(
265104265125
return rc;
265105265126
}
265106265127

265128+
/*
265129+
** Restore cursor pCsr to the state it was in immediately after being
265130+
** created by the xOpen() method.
265131+
*/
265107265132
static void fts5VocabResetCursor(Fts5VocabCursor *pCsr){
265133+
int nCol = pCsr->pFts5->pConfig->nCol;
265108265134
pCsr->rowid = 0;
265109265135
sqlite3Fts5IterClose(pCsr->pIter);
265110265136
sqlite3Fts5StructureRelease(pCsr->pStruct);
@@ -265114,6 +265140,12 @@ static void fts5VocabResetCursor(Fts5VocabCursor *pCsr){
265114265140
pCsr->nLeTerm = -1;
265115265141
pCsr->zLeTerm = 0;
265116265142
pCsr->bEof = 0;
265143+
pCsr->iCol = 0;
265144+
pCsr->iInstPos = 0;
265145+
pCsr->iInstOff = 0;
265146+
pCsr->colUsed = 0;
265147+
memset(pCsr->aCnt, 0, sizeof(i64)*nCol);
265148+
memset(pCsr->aDoc, 0, sizeof(i64)*nCol);
265117265149
}
265118265150

265119265151
/*

src/sqlite3.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,12 @@ extern "C" {
146146
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147
** [sqlite_version()] and [sqlite_source_id()].
148148
*/
149-
#define SQLITE_VERSION "3.51.0"
150-
#define SQLITE_VERSION_NUMBER 3051000
151-
#define SQLITE_SOURCE_ID "2025-11-04 19:38:17 fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b"
152-
#define SQLITE_SCM_BRANCH "trunk"
153-
#define SQLITE_SCM_TAGS "release major-release version-3.51.0"
154-
#define SQLITE_SCM_DATETIME "2025-11-04T19:38:17.314Z"
149+
#define SQLITE_VERSION "3.51.1"
150+
#define SQLITE_VERSION_NUMBER 3051001
151+
#define SQLITE_SOURCE_ID "2025-11-28 17:28:25 281fc0e9afc38674b9b0991943b9e9d1e64c6cbdb133d35f6f5c87ff6af38a88"
152+
#define SQLITE_SCM_BRANCH "branch-3.51"
153+
#define SQLITE_SCM_TAGS "release version-3.51.1"
154+
#define SQLITE_SCM_DATETIME "2025-11-28T17:28:25.933Z"
155155

156156
/*
157157
** CAPI3REF: Run-Time Library Version Numbers
@@ -10426,7 +10426,7 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
1042610426
** &nbsp; ){
1042710427
** &nbsp; // do something with pVal
1042810428
** &nbsp; }
10429-
** &nbsp; if( rc!=SQLITE_OK ){
10429+
** &nbsp; if( rc!=SQLITE_DONE ){
1043010430
** &nbsp; // an error has occurred
1043110431
** &nbsp; }
1043210432
** </pre></blockquote>)^

src/sqlite3mc_version.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
#define SQLITE3MC_VERSION_MAJOR 2
1616
#define SQLITE3MC_VERSION_MINOR 2
17-
#define SQLITE3MC_VERSION_RELEASE 5
17+
#define SQLITE3MC_VERSION_RELEASE 6
1818
#define SQLITE3MC_VERSION_SUBRELEASE 0
19-
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 2.2.5"
19+
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 2.2.6"
2020

2121
#endif /* SQLITE3MC_VERSION_H_ */

0 commit comments

Comments
 (0)