Skip to content

Commit d9098f2

Browse files
committed
Prepare release of version 1.3.7
- Update to SQLite3 3.37.2 - Fix issue #61 (headers not installed) - Fix compile time warning in cipher_config.c
1 parent 0074daa commit d9098f2

10 files changed

+141
-73
lines changed

Makefile.am

+10-6
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ if USE_MSW
4242
endif
4343

4444
# Define the directory where the library headers are installed.
45-
includedir = $(includedir)
45+
includemcdir = $(includedir)/sqlite3mc
4646

4747
pkgconfigdir = $(libdir)/pkgconfig
4848
pkgconfig_DATA = sqlite3mc.pc
@@ -55,10 +55,14 @@ lib_LTLIBRARIES = lib@[email protected]
5555
lib@SQLITE3MC_LIBNAME@_la_SOURCES = \
5656
src/sqlite3mc.c
5757

58-
#include_HEADERS = \
59-
# src/sqlite3.h \
60-
# src/sqlite3mc_version.h \
61-
# src/sqlite3mc.h
58+
includemc_HEADERS = \
59+
src/sqlite3.h \
60+
src/sqlite3userauth.h \
61+
src/sqlite3ext.h \
62+
src/sqlite3mc_version.h \
63+
src/sqlite3mc_vfs.h \
64+
src/sqlite3.h \
65+
src/sqlite3mc.h
6266

6367
noinst_HEADERS = \
6468
src/carray.c \
@@ -109,7 +113,7 @@ sqlite3shell_SOURCES = \
109113
src/sqlite3mc.c \
110114
src/shell.c
111115

112-
sqlite3shell_CFLAGS = -I$(top_srcdir)/src -std=c99 -D_GNU_SOURCE -DSQLITE_THREADSAFE=1 -DSQLITE_DQS=0 -DSQLITE_MAX_ATTACHED=10 -DSQLITE_SOUNDEX=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_SECURE_DELETE=1 -DSQLITE_ENABLE_DESERIALIZE=1 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_CORE=1 -DSQLITE_ENABLE_EXTFUNC=1 -DSQLITE_ENABLE_MATH_FUNCTIONS=1 -DSQLITE_ENABLE_CSV=1 -DSQLITE_ENABLE_CARRAY=1 -DSQLITE_ENABLE_UUID=1 -DSQLITE_TEMP_STORE=2 -DSQLITE_USE_URI=1 -DSQLITE_USER_AUTHENTICATION=1 $(X86_FLAGS) $(ARM_FLAGS)
116+
sqlite3shell_CFLAGS = -I$(top_srcdir)/src -std=c99 -D_GNU_SOURCE -DSQLITE_THREADSAFE=1 -DSQLITE_DQS=0 -DSQLITE_MAX_ATTACHED=10 -DSQLITE_SOUNDEX=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_SECURE_DELETE=1 -DSQLITE_ENABLE_DESERIALIZE=1 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_CORE=1 -DSQLITE_ENABLE_EXTFUNC=1 -DSQLITE_ENABLE_MATH_FUNCTIONS=1 -DSQLITE_ENABLE_CSV=1 -DSQLITE_ENABLE_CARRAY=1 -DSQLITE_ENABLE_UUID=1 -DSQLITE_ENABLE_REGEXP=1 -DSQLITE_TEMP_STORE=2 -DSQLITE_USE_URI=1 -DSQLITE_USER_AUTHENTICATION=1 $(X86_FLAGS) $(ARM_FLAGS)
113117

114118
sqlite3shell_LDADD = -ldl -lm
115119
sqlite3shell_LDFLAGS = -pthread

configure.ac

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ dnl Copyright (C) 2019-2021 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], [1.3.6], [[email protected]])
7+
AC_INIT([sqlite3mc], [1.3.7], [[email protected]])
88

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

readme.md

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ The code was mainly developed under Windows, but was tested under Linux as well.
1010

1111
## Version history
1212

13+
* 1.3.7 - *January 2022*
14+
- Based on SQLite version 3.37.2
1315
* 1.3.6 - *January 2022*
1416
- Based on SQLite version 3.37.1
1517
* 1.3.5 - *November 2021*

sqlite3mc.pc.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ Description: SQLite3 with encryption extension supporting multiple ciphers
1010
Version: @VERSION@
1111
Libs: -L${libdir} -l@SQLITE3MC_LIBNAME@
1212
Libs.private: -lpthread
13-
Cflags: -I${includedir}
13+
Cflags: -I${includedir}/sqlite3mc

src/cipher_config.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@ sqlite3mcFileControlPragma(sqlite3* db, const char* zDbName, int op, void* pArg)
834834
{
835835
if (db->pErr)
836836
{
837-
const char* z = sqlite3_value_text(db->pErr);
837+
const char* z = (const char*) sqlite3_value_text(db->pErr);
838838
if (z && sqlite3Strlen30(z) > 0)
839839
{
840840
((char**)pArg)[0] = sqlite3_mprintf(z);

src/rekeyvacuum.c

+1-1
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.37.1 amalgamation.
30+
** This code is generated by the script rekeyvacuum.sh from SQLite version 3.37.2 amalgamation.
3131
*/
3232
SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3mcRunVacuumForRekey(
3333
char **pzErrMsg, /* Write error message here */

src/sqlite3.c

+60-29
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.37.1. By combining all the individual C code files into this
3+
** version 3.37.2. 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
@@ -452,9 +452,9 @@ extern "C" {
452452
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453453
** [sqlite_version()] and [sqlite_source_id()].
454454
*/
455-
#define SQLITE_VERSION "3.37.1"
456-
#define SQLITE_VERSION_NUMBER 3037001
457-
#define SQLITE_SOURCE_ID "2021-12-30 15:30:28 378629bf2ea546f73eee84063c5358439a12f7300e433f18c9e1bddd948dea62"
455+
#define SQLITE_VERSION "3.37.2"
456+
#define SQLITE_VERSION_NUMBER 3037002
457+
#define SQLITE_SOURCE_ID "2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5d17a0"
458458

459459
/*
460460
** CAPI3REF: Run-Time Library Version Numbers
@@ -18503,6 +18503,8 @@ struct Parse {
1850318503
AutoincInfo *pAinc; /* Information about AUTOINCREMENT counters */
1850418504
Parse *pToplevel; /* Parse structure for main program (or NULL) */
1850518505
Table *pTriggerTab; /* Table triggers are being coded for */
18506+
TriggerPrg *pTriggerPrg; /* Linked list of coded triggers */
18507+
ParseCleanup *pCleanup; /* List of cleanup operations to run after parse */
1850618508
union {
1850718509
int addrCrTab; /* Address of OP_CreateBtree on CREATE TABLE */
1850818510
Returning *pReturning; /* The RETURNING clause */
@@ -18557,9 +18559,7 @@ struct Parse {
1855718559
Token sArg; /* Complete text of a module argument */
1855818560
Table **apVtabLock; /* Pointer to virtual tables needing locking */
1855918561
#endif
18560-
TriggerPrg *pTriggerPrg; /* Linked list of coded triggers */
1856118562
With *pWith; /* Current WITH clause, or NULL */
18562-
ParseCleanup *pCleanup; /* List of cleanup operations to run after parse */
1856318563
#ifndef SQLITE_OMIT_ALTERTABLE
1856418564
RenameToken *pRename; /* Tokens subject to renaming by ALTER TABLE */
1856518565
#endif
@@ -20093,13 +20093,15 @@ SQLITE_PRIVATE void sqlite3FkActions(Parse*, Table*, ExprList*, int, int*, int
2009320093
SQLITE_PRIVATE int sqlite3FkRequired(Parse*, Table*, int*, int);
2009420094
SQLITE_PRIVATE u32 sqlite3FkOldmask(Parse*, Table*);
2009520095
SQLITE_PRIVATE FKey *sqlite3FkReferences(Table *);
20096+
SQLITE_PRIVATE void sqlite3FkClearTriggerCache(sqlite3*,int);
2009620097
#else
2009720098
#define sqlite3FkActions(a,b,c,d,e,f)
2009820099
#define sqlite3FkCheck(a,b,c,d,e,f)
2009920100
#define sqlite3FkDropTable(a,b,c)
2010020101
#define sqlite3FkOldmask(a,b) 0
2010120102
#define sqlite3FkRequired(a,b,c,d) 0
2010220103
#define sqlite3FkReferences(a) 0
20104+
#define sqlite3FkClearTriggerCache(a,b)
2010320105
#endif
2010420106
#ifndef SQLITE_OMIT_FOREIGN_KEY
2010520107
SQLITE_PRIVATE void sqlite3FkDelete(sqlite3 *, Table*);
@@ -56574,7 +56576,7 @@ static int pager_wait_on_lock(Pager *pPager, int locktype){
5657456576
#if defined(SQLITE_DEBUG)
5657556577
static void assertTruncateConstraintCb(PgHdr *pPg){
5657656578
assert( pPg->flags&PGHDR_DIRTY );
56577-
assert( !subjRequiresPage(pPg) || pPg->pgno<=pPg->pPager->dbSize );
56579+
assert( pPg->pgno<=pPg->pPager->dbSize || !subjRequiresPage(pPg) );
5657856580
}
5657956581
static void assertTruncateConstraint(Pager *pPager){
5658056582
sqlite3PcacheIterateDirty(pPager->pPCache, assertTruncateConstraintCb);
@@ -57915,7 +57917,7 @@ SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager){
5791557917
** may mean that the pager was in the error-state when this
5791657918
** function was called and the journal file does not exist.
5791757919
*/
57918-
if( !isOpen(pPager->jfd) ){
57920+
if( !isOpen(pPager->jfd) && pPager->journalMode!=PAGER_JOURNALMODE_OFF ){
5791957921
sqlite3_vfs * const pVfs = pPager->pVfs;
5792057922
int bExists; /* True if journal file exists */
5792157923
rc = sqlite3OsAccess(
@@ -66818,7 +66820,7 @@ static void btreeParseCellPtr(
6681866820
pInfo->nPayload = nPayload;
6681966821
pInfo->pPayload = pIter;
6682066822
testcase( nPayload==pPage->maxLocal );
66821-
testcase( nPayload==pPage->maxLocal+1 );
66823+
testcase( nPayload==(u32)pPage->maxLocal+1 );
6682266824
if( nPayload<=pPage->maxLocal ){
6682366825
/* This is the (easy) common case where the entire payload fits
6682466826
** on the local page. No overflow is required.
@@ -66855,7 +66857,7 @@ static void btreeParseCellPtrIndex(
6685566857
pInfo->nPayload = nPayload;
6685666858
pInfo->pPayload = pIter;
6685766859
testcase( nPayload==pPage->maxLocal );
66858-
testcase( nPayload==pPage->maxLocal+1 );
66860+
testcase( nPayload==(u32)pPage->maxLocal+1 );
6685966861
if( nPayload<=pPage->maxLocal ){
6686066862
/* This is the (easy) common case where the entire payload fits
6686166863
** on the local page. No overflow is required.
@@ -66918,15 +66920,15 @@ static u16 cellSizePtr(MemPage *pPage, u8 *pCell){
6691866920
while( (*pIter++)&0x80 && pIter<pEnd );
6691966921
}
6692066922
testcase( nSize==pPage->maxLocal );
66921-
testcase( nSize==pPage->maxLocal+1 );
66923+
testcase( nSize==(u32)pPage->maxLocal+1 );
6692266924
if( nSize<=pPage->maxLocal ){
6692366925
nSize += (u32)(pIter - pCell);
6692466926
if( nSize<4 ) nSize = 4;
6692566927
}else{
6692666928
int minLocal = pPage->minLocal;
6692766929
nSize = minLocal + (nSize - minLocal) % (pPage->pBt->usableSize - 4);
6692866930
testcase( nSize==pPage->maxLocal );
66929-
testcase( nSize==pPage->maxLocal+1 );
66931+
testcase( nSize==(u32)pPage->maxLocal+1 );
6693066932
if( nSize>pPage->maxLocal ){
6693166933
nSize = minLocal;
6693266934
}
@@ -69817,7 +69819,7 @@ static void btreeSetNPage(BtShared *pBt, MemPage *pPage1){
6981769819
int nPage = get4byte(&pPage1->aData[28]);
6981869820
testcase( nPage==0 );
6981969821
if( nPage==0 ) sqlite3PagerPagecount(pBt->pPager, &nPage);
69820-
testcase( pBt->nPage!=nPage );
69822+
testcase( pBt->nPage!=(u32)nPage );
6982169823
pBt->nPage = nPage;
6982269824
}
6982369825

@@ -72382,16 +72384,18 @@ static void dropCell(MemPage *pPage, int idx, int sz, int *pRC){
7238272384
int hdr; /* Beginning of the header. 0 most pages. 100 page 1 */
7238372385

7238472386
if( *pRC ) return;
72385-
assert( idx>=0 && idx<pPage->nCell );
72387+
assert( idx>=0 );
72388+
assert( idx<pPage->nCell );
7238672389
assert( CORRUPT_DB || sz==cellSize(pPage, idx) );
7238772390
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
7238872391
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
7238972392
assert( pPage->nFree>=0 );
7239072393
data = pPage->aData;
7239172394
ptr = &pPage->aCellIdx[2*idx];
72395+
assert( pPage->pBt->usableSize > (int)(ptr-data) );
7239272396
pc = get2byte(ptr);
7239372397
hdr = pPage->hdrOffset;
72394-
testcase( pc==get2byte(&data[hdr+5]) );
72398+
testcase( pc==(u32)get2byte(&data[hdr+5]) );
7239572399
testcase( pc+sz==pPage->pBt->usableSize );
7239672400
if( pc+sz > pPage->pBt->usableSize ){
7239772401
*pRC = SQLITE_CORRUPT_BKPT;
@@ -72683,7 +72687,7 @@ static int rebuildPage(
7268372687

7268472688
assert( i<iEnd );
7268572689
j = get2byte(&aData[hdr+5]);
72686-
if( NEVER(j>(u32)usableSize) ){ j = 0; }
72690+
if( j>(u32)usableSize ){ j = 0; }
7268772691
memcpy(&pTmp[j], &aData[j], usableSize - j);
7268872692

7268972693
for(k=0; pCArray->ixNx[k]<=i && ALWAYS(k<NB*2); k++){}
@@ -72914,7 +72918,7 @@ static int editPage(
7291472918

7291572919
pData = &aData[get2byteNotZero(&aData[hdr+5])];
7291672920
if( pData<pBegin ) goto editpage_fail;
72917-
if( NEVER(pData>pPg->aDataEnd) ) goto editpage_fail;
72921+
if( pData>pPg->aDataEnd ) goto editpage_fail;
7291872922

7291972923
/* Add cells to the start of the page */
7292072924
if( iNew<iOld ){
@@ -74817,7 +74821,12 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur, u8 flags){
7481774821
iCellIdx = pCur->ix;
7481874822
pPage = pCur->pPage;
7481974823
pCell = findCell(pPage, iCellIdx);
74820-
if( pPage->nFree<0 && btreeComputeFreeSpace(pPage) ) return SQLITE_CORRUPT;
74824+
if( pPage->nFree<0 && btreeComputeFreeSpace(pPage) ){
74825+
return SQLITE_CORRUPT_BKPT;
74826+
}
74827+
if( pPage->nCell<=iCellIdx ){
74828+
return SQLITE_CORRUPT_BKPT;
74829+
}
7482174830

7482274831
/* If the bPreserve flag is set to true, then the cursor position must
7482374832
** be preserved following this delete operation. If the current delete
@@ -84101,7 +84110,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3 *db, BtCursor *pCur, i64 *rowid){
8410184110
/* The index entry must begin with a header size */
8410284111
getVarint32NR((u8*)m.z, szHdr);
8410384112
testcase( szHdr==3 );
84104-
testcase( szHdr==m.n );
84113+
testcase( szHdr==(u32)m.n );
8410584114
testcase( szHdr>0x7fffffff );
8410684115
assert( m.n>=0 );
8410784116
if( unlikely(szHdr<3 || szHdr>(unsigned)m.n) ){
@@ -90511,6 +90520,7 @@ case OP_SetCookie: {
9051190520
/* When the schema cookie changes, record the new cookie internally */
9051290521
pDb->pSchema->schema_cookie = pOp->p3 - pOp->p5;
9051390522
db->mDbFlags |= DBFLAG_SchemaChange;
90523+
sqlite3FkClearTriggerCache(db, pOp->p1);
9051490524
}else if( pOp->p2==BTREE_FILE_FORMAT ){
9051590525
/* Record changes in the file format */
9051690526
pDb->pSchema->file_format = pOp->p3;
@@ -99143,7 +99153,7 @@ static int memjrnlTruncate(sqlite3_file *pJfd, sqlite_int64 size){
9914399153
p->pFirst = 0;
9914499154
}else{
9914599155
i64 iOff = p->nChunkSize;
99146-
for(pIter=p->pFirst; ALWAYS(pIter) && iOff<=size; pIter=pIter->pNext){
99156+
for(pIter=p->pFirst; ALWAYS(pIter) && iOff<size; pIter=pIter->pNext){
9914799157
iOff += p->nChunkSize;
9914899158
}
9914999159
if( ALWAYS(pIter) ){
@@ -123234,6 +123244,25 @@ static void fkTriggerDelete(sqlite3 *dbMem, Trigger *p){
123234123244
}
123235123245
}
123236123246

123247+
/*
123248+
** Clear the apTrigger[] cache of CASCADE triggers for all foreign keys
123249+
** in a particular database. This needs to happen when the schema
123250+
** changes.
123251+
*/
123252+
SQLITE_PRIVATE void sqlite3FkClearTriggerCache(sqlite3 *db, int iDb){
123253+
HashElem *k;
123254+
Hash *pHash = &db->aDb[iDb].pSchema->tblHash;
123255+
for(k=sqliteHashFirst(pHash); k; k=sqliteHashNext(k)){
123256+
Table *pTab = sqliteHashData(k);
123257+
FKey *pFKey;
123258+
if( !IsOrdinaryTable(pTab) ) continue;
123259+
for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
123260+
fkTriggerDelete(db, pFKey->apTrigger[0]); pFKey->apTrigger[0] = 0;
123261+
fkTriggerDelete(db, pFKey->apTrigger[1]); pFKey->apTrigger[1] = 0;
123262+
}
123263+
}
123264+
}
123265+
123237123266
/*
123238123267
** This function is called to generate code that runs when table pTab is
123239123268
** being dropped from the database. The SrcList passed as the second argument
@@ -124034,7 +124063,7 @@ SQLITE_PRIVATE void sqlite3OpenTable(
124034124063
}else{
124035124064
Index *pPk = sqlite3PrimaryKeyIndex(pTab);
124036124065
assert( pPk!=0 );
124037-
assert( pPk->tnum==pTab->tnum );
124066+
assert( pPk->tnum==pTab->tnum || CORRUPT_DB );
124038124067
sqlite3VdbeAddOp3(v, opcode, iCur, pPk->tnum, iDb);
124039124068
sqlite3VdbeSetP4KeyInfo(pParse, pPk);
124040124069
VdbeComment((v, "%s", pTab->zName));
@@ -126540,7 +126569,6 @@ SQLITE_PRIVATE void sqlite3CompleteInsertion(
126540126569
}
126541126570
pik_flags = (useSeekResult ? OPFLAG_USESEEKRESULT : 0);
126542126571
if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){
126543-
assert( pParse->nested==0 );
126544126572
pik_flags |= OPFLAG_NCHANGE;
126545126573
pik_flags |= (update_flags & OPFLAG_SAVEPOSITION);
126546126574
if( update_flags==0 ){
@@ -132946,7 +132974,7 @@ static int sqlite3Prepare(
132946132974
sParse.checkSchema = 0;
132947132975
}
132948132976
if( sParse.rc!=SQLITE_OK && sParse.rc!=SQLITE_DONE ){
132949-
if( sParse.checkSchema ){
132977+
if( sParse.checkSchema && db->init.busy==0 ){
132950132978
schemaIsValid(&sParse);
132951132979
}
132952132980
if( sParse.pVdbe ){
@@ -141889,7 +141917,7 @@ static void codeReturningTrigger(
141889141917
}
141890141918
sqlite3ExprListDelete(db, sSelect.pEList);
141891141919
pNew = sqlite3ExpandReturning(pParse, pReturning->pReturnEL, pTab);
141892-
if( pNew ){
141920+
if( !db->mallocFailed ){
141893141921
NameContext sNC;
141894141922
memset(&sNC, 0, sizeof(sNC));
141895141923
if( pReturning->nRetCol==0 ){
@@ -141901,24 +141929,27 @@ static void codeReturningTrigger(
141901141929
sNC.ncFlags = NC_UBaseReg;
141902141930
pParse->eTriggerOp = pTrigger->op;
141903141931
pParse->pTriggerTab = pTab;
141904-
if( sqlite3ResolveExprListNames(&sNC, pNew)==SQLITE_OK ){
141932+
if( sqlite3ResolveExprListNames(&sNC, pNew)==SQLITE_OK
141933+
&& !db->mallocFailed
141934+
){
141905141935
int i;
141906141936
int nCol = pNew->nExpr;
141907141937
int reg = pParse->nMem+1;
141908141938
pParse->nMem += nCol+2;
141909141939
pReturning->iRetReg = reg;
141910141940
for(i=0; i<nCol; i++){
141911141941
Expr *pCol = pNew->a[i].pExpr;
141942+
assert( pCol!=0 ); /* Due to !db->mallocFailed ~9 lines above */
141912141943
sqlite3ExprCodeFactorable(pParse, pCol, reg+i);
141913141944
}
141914141945
sqlite3VdbeAddOp3(v, OP_MakeRecord, reg, i, reg+i);
141915141946
sqlite3VdbeAddOp2(v, OP_NewRowid, pReturning->iRetCur, reg+i+1);
141916141947
sqlite3VdbeAddOp3(v, OP_Insert, pReturning->iRetCur, reg+i, reg+i+1);
141917141948
}
141918-
sqlite3ExprListDelete(db, pNew);
141919-
pParse->eTriggerOp = 0;
141920-
pParse->pTriggerTab = 0;
141921141949
}
141950+
sqlite3ExprListDelete(db, pNew);
141951+
pParse->eTriggerOp = 0;
141952+
pParse->pTriggerTab = 0;
141922141953
}
141923141954

141924141955

@@ -232502,7 +232533,7 @@ static void fts5SourceIdFunc(
232502232533
){
232503232534
assert( nArg==0 );
232504232535
UNUSED_PARAM2(nArg, apUnused);
232505-
sqlite3_result_text(pCtx, "fts5: 2021-12-30 15:30:28 378629bf2ea546f73eee84063c5358439a12f7300e433f18c9e1bddd948dea62", -1, SQLITE_TRANSIENT);
232536+
sqlite3_result_text(pCtx, "fts5: 2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5d17a0", -1, SQLITE_TRANSIENT);
232506232537
}
232507232538

232508232539
/*

src/sqlite3.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@ extern "C" {
146146
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147
** [sqlite_version()] and [sqlite_source_id()].
148148
*/
149-
#define SQLITE_VERSION "3.37.1"
150-
#define SQLITE_VERSION_NUMBER 3037001
151-
#define SQLITE_SOURCE_ID "2021-12-30 15:30:28 378629bf2ea546f73eee84063c5358439a12f7300e433f18c9e1bddd948dea62"
149+
#define SQLITE_VERSION "3.37.2"
150+
#define SQLITE_VERSION_NUMBER 3037002
151+
#define SQLITE_SOURCE_ID "2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5d17a0"
152152

153153
/*
154154
** CAPI3REF: Run-Time Library Version Numbers

0 commit comments

Comments
 (0)