better-sqlite3-multiple-ciphers 8.2.1-beta.0 → 8.2.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/deps/setup.ps1 +1 -1
- package/deps/sqlite3/sqlite3.c +75 -37
- package/deps/sqlite3/sqlite3.h +5 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,10 +23,10 @@ The fastest and simplest library for SQLite3 in Node.js. This particular fork su
|
|
|
23
23
|
- **SQLite3 Multiple Ciphers** - [`1.6.0`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.6.0)
|
|
24
24
|
|
|
25
25
|
- ### Beta
|
|
26
|
-
- **better-sqlite3-multiple-ciphers** - [`8.2.1-beta.
|
|
26
|
+
- **better-sqlite3-multiple-ciphers** - [`8.2.1-beta.1`](https://github.com/m4heshd/better-sqlite3-multiple-ciphers/releases/tag/v8.2.1-beta.1)
|
|
27
27
|
- **better-sqlite3** - [`8.2.0`](https://github.com/JoshuaWise/better-sqlite3/releases/tag/v8.2.0)
|
|
28
|
-
- **SQLite** - [`3.41.
|
|
29
|
-
- **SQLite3 Multiple Ciphers** - [`1.6.
|
|
28
|
+
- **SQLite** - [`3.41.2`](https://www.sqlite.org/releaselog/3_41_2.html)
|
|
29
|
+
- **SQLite3 Multiple Ciphers** - [`1.6.2`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.6.2)
|
|
30
30
|
|
|
31
31
|
## Help this project stay strong! 💪
|
|
32
32
|
|
package/deps/setup.ps1
CHANGED
package/deps/sqlite3/sqlite3.c
CHANGED
|
@@ -92,7 +92,7 @@ extern SQLITE_API LPWSTR sqlite3_win32_utf8_to_unicode(const char*);
|
|
|
92
92
|
/*** Begin of #include "sqlite3patched.c" ***/
|
|
93
93
|
/******************************************************************************
|
|
94
94
|
** This file is an amalgamation of many separate C source files from SQLite
|
|
95
|
-
** version 3.41.
|
|
95
|
+
** version 3.41.2. By combining all the individual C code files into this
|
|
96
96
|
** single large file, the entire code can be compiled as a single translation
|
|
97
97
|
** unit. This allows many compilers to do optimizations that would not be
|
|
98
98
|
** possible if the files were compiled separately. Performance improvements
|
|
@@ -544,9 +544,9 @@ extern "C" {
|
|
|
544
544
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
545
545
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
546
546
|
*/
|
|
547
|
-
#define SQLITE_VERSION "3.41.
|
|
548
|
-
#define SQLITE_VERSION_NUMBER
|
|
549
|
-
#define SQLITE_SOURCE_ID "2023-03-
|
|
547
|
+
#define SQLITE_VERSION "3.41.2"
|
|
548
|
+
#define SQLITE_VERSION_NUMBER 3041002
|
|
549
|
+
#define SQLITE_SOURCE_ID "2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69cffde2924203304e8ffc4155597af0c191da"
|
|
550
550
|
|
|
551
551
|
/*
|
|
552
552
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
@@ -16692,7 +16692,7 @@ struct PgHdr {
|
|
|
16692
16692
|
** private to pcache.c and should not be accessed by other modules.
|
|
16693
16693
|
** pCache is grouped with the public elements for efficiency.
|
|
16694
16694
|
*/
|
|
16695
|
-
|
|
16695
|
+
i64 nRef; /* Number of users of this page */
|
|
16696
16696
|
PgHdr *pDirtyNext; /* Next element in list of dirty pages */
|
|
16697
16697
|
PgHdr *pDirtyPrev; /* Previous element in list of dirty pages */
|
|
16698
16698
|
/* NB: pDirtyNext and pDirtyPrev are undefined if the
|
|
@@ -16773,12 +16773,12 @@ SQLITE_PRIVATE void sqlite3PcacheClearSyncFlags(PCache *);
|
|
|
16773
16773
|
SQLITE_PRIVATE void sqlite3PcacheClear(PCache*);
|
|
16774
16774
|
|
|
16775
16775
|
/* Return the total number of outstanding page references */
|
|
16776
|
-
SQLITE_PRIVATE
|
|
16776
|
+
SQLITE_PRIVATE i64 sqlite3PcacheRefCount(PCache*);
|
|
16777
16777
|
|
|
16778
16778
|
/* Increment the reference count of an existing page */
|
|
16779
16779
|
SQLITE_PRIVATE void sqlite3PcacheRef(PgHdr*);
|
|
16780
16780
|
|
|
16781
|
-
SQLITE_PRIVATE
|
|
16781
|
+
SQLITE_PRIVATE i64 sqlite3PcachePageRefcount(PgHdr*);
|
|
16782
16782
|
|
|
16783
16783
|
/* Return the total number of pages stored in the cache */
|
|
16784
16784
|
SQLITE_PRIVATE int sqlite3PcachePagecount(PCache*);
|
|
@@ -18937,7 +18937,7 @@ struct NameContext {
|
|
|
18937
18937
|
#define NC_HasAgg 0x000010 /* One or more aggregate functions seen */
|
|
18938
18938
|
#define NC_IdxExpr 0x000020 /* True if resolving columns of CREATE INDEX */
|
|
18939
18939
|
#define NC_SelfRef 0x00002e /* Combo: PartIdx, isCheck, GenCol, and IdxExpr */
|
|
18940
|
-
#define
|
|
18940
|
+
#define NC_Subquery 0x000040 /* A subquery has been seen */
|
|
18941
18941
|
#define NC_UEList 0x000080 /* True if uNC.pEList is used */
|
|
18942
18942
|
#define NC_UAggInfo 0x000100 /* True if uNC.pAggInfo is used */
|
|
18943
18943
|
#define NC_UUpsert 0x000200 /* True if uNC.pUpsert is used */
|
|
@@ -19308,6 +19308,9 @@ struct Parse {
|
|
|
19308
19308
|
u8 withinRJSubrtn; /* Nesting level for RIGHT JOIN body subroutines */
|
|
19309
19309
|
#if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST)
|
|
19310
19310
|
u8 earlyCleanup; /* OOM inside sqlite3ParserAddCleanup() */
|
|
19311
|
+
#endif
|
|
19312
|
+
#ifdef SQLITE_DEBUG
|
|
19313
|
+
u8 ifNotExists; /* Might be true if IF NOT EXISTS. Assert()s only */
|
|
19311
19314
|
#endif
|
|
19312
19315
|
int nRangeReg; /* Size of the temporary register block */
|
|
19313
19316
|
int iRangeReg; /* First register in temporary register block */
|
|
@@ -52758,7 +52761,7 @@ bitvec_end:
|
|
|
52758
52761
|
struct PCache {
|
|
52759
52762
|
PgHdr *pDirty, *pDirtyTail; /* List of dirty pages in LRU order */
|
|
52760
52763
|
PgHdr *pSynced; /* Last synced page in dirty page list */
|
|
52761
|
-
|
|
52764
|
+
i64 nRefSum; /* Sum of ref counts over all pages */
|
|
52762
52765
|
int szCache; /* Configured cache size */
|
|
52763
52766
|
int szSpill; /* Size before spilling occurs */
|
|
52764
52767
|
int szPage; /* Size of every page in this cache */
|
|
@@ -52788,7 +52791,7 @@ struct PCache {
|
|
|
52788
52791
|
unsigned char *a;
|
|
52789
52792
|
int j;
|
|
52790
52793
|
pPg = (PgHdr*)pLower->pExtra;
|
|
52791
|
-
printf("%
|
|
52794
|
+
printf("%3lld: nRef %2d flgs %02x data ", i, pPg->nRef, pPg->flags);
|
|
52792
52795
|
a = (unsigned char *)pLower->pBuf;
|
|
52793
52796
|
for(j=0; j<12; j++) printf("%02x", a[j]);
|
|
52794
52797
|
printf(" ptr %p\n", pPg);
|
|
@@ -53532,14 +53535,14 @@ SQLITE_PRIVATE PgHdr *sqlite3PcacheDirtyList(PCache *pCache){
|
|
|
53532
53535
|
** This is not the total number of pages referenced, but the sum of the
|
|
53533
53536
|
** reference count for all pages.
|
|
53534
53537
|
*/
|
|
53535
|
-
SQLITE_PRIVATE
|
|
53538
|
+
SQLITE_PRIVATE i64 sqlite3PcacheRefCount(PCache *pCache){
|
|
53536
53539
|
return pCache->nRefSum;
|
|
53537
53540
|
}
|
|
53538
53541
|
|
|
53539
53542
|
/*
|
|
53540
53543
|
** Return the number of references to the page supplied as an argument.
|
|
53541
53544
|
*/
|
|
53542
|
-
SQLITE_PRIVATE
|
|
53545
|
+
SQLITE_PRIVATE i64 sqlite3PcachePageRefcount(PgHdr *p){
|
|
53543
53546
|
return p->nRef;
|
|
53544
53547
|
}
|
|
53545
53548
|
|
|
@@ -74609,7 +74612,7 @@ static SQLITE_NOINLINE int btreeNext(BtCursor *pCur){
|
|
|
74609
74612
|
|
|
74610
74613
|
pPage = pCur->pPage;
|
|
74611
74614
|
idx = ++pCur->ix;
|
|
74612
|
-
if(
|
|
74615
|
+
if( !pPage->isInit || sqlite3FaultSim(412) ){
|
|
74613
74616
|
return SQLITE_CORRUPT_BKPT;
|
|
74614
74617
|
}
|
|
74615
74618
|
|
|
@@ -77738,6 +77741,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
|
|
|
77738
77741
|
assert( szNew==pPage->xCellSize(pPage, newCell) );
|
|
77739
77742
|
assert( szNew <= MX_CELL_SIZE(p->pBt) );
|
|
77740
77743
|
idx = pCur->ix;
|
|
77744
|
+
pCur->info.nSize = 0;
|
|
77741
77745
|
if( loc==0 ){
|
|
77742
77746
|
CellInfo info;
|
|
77743
77747
|
assert( idx>=0 );
|
|
@@ -77810,7 +77814,6 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
|
|
|
77810
77814
|
** larger than the largest existing key, it is possible to insert the
|
|
77811
77815
|
** row without seeking the cursor. This can be a big performance boost.
|
|
77812
77816
|
*/
|
|
77813
|
-
pCur->info.nSize = 0;
|
|
77814
77817
|
if( pPage->nOverflow ){
|
|
77815
77818
|
assert( rc==SQLITE_OK );
|
|
77816
77819
|
pCur->curFlags &= ~(BTCF_ValidNKey);
|
|
@@ -104904,8 +104907,8 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
|
|
|
104904
104907
|
assert( pNC->nRef>=nRef );
|
|
104905
104908
|
if( nRef!=pNC->nRef ){
|
|
104906
104909
|
ExprSetProperty(pExpr, EP_VarSelect);
|
|
104907
|
-
pNC->ncFlags |= NC_VarSelect;
|
|
104908
104910
|
}
|
|
104911
|
+
pNC->ncFlags |= NC_Subquery;
|
|
104909
104912
|
}
|
|
104910
104913
|
break;
|
|
104911
104914
|
}
|
|
@@ -109654,6 +109657,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeGeneratedColumn(
|
|
|
109654
109657
|
){
|
|
109655
109658
|
int iAddr;
|
|
109656
109659
|
Vdbe *v = pParse->pVdbe;
|
|
109660
|
+
int nErr = pParse->nErr;
|
|
109657
109661
|
assert( v!=0 );
|
|
109658
109662
|
assert( pParse->iSelfTab!=0 );
|
|
109659
109663
|
if( pParse->iSelfTab>0 ){
|
|
@@ -109666,6 +109670,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeGeneratedColumn(
|
|
|
109666
109670
|
sqlite3VdbeAddOp4(v, OP_Affinity, regOut, 1, 0, &pCol->affinity, 1);
|
|
109667
109671
|
}
|
|
109668
109672
|
if( iAddr ) sqlite3VdbeJumpHere(v, iAddr);
|
|
109673
|
+
if( pParse->nErr>nErr ) pParse->db->errByteOffset = -1;
|
|
109669
109674
|
}
|
|
109670
109675
|
#endif /* SQLITE_OMIT_GENERATED_COLUMNS */
|
|
109671
109676
|
|
|
@@ -109682,6 +109687,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeGetColumnOfTable(
|
|
|
109682
109687
|
Column *pCol;
|
|
109683
109688
|
assert( v!=0 );
|
|
109684
109689
|
assert( pTab!=0 );
|
|
109690
|
+
assert( iCol!=XN_EXPR );
|
|
109685
109691
|
if( iCol<0 || iCol==pTab->iPKey ){
|
|
109686
109692
|
sqlite3VdbeAddOp2(v, OP_Rowid, iTabCur, regOut);
|
|
109687
109693
|
VdbeComment((v, "%s.rowid", pTab->zName));
|
|
@@ -119042,7 +119048,7 @@ SQLITE_PRIVATE void sqlite3AddReturning(Parse *pParse, ExprList *pList){
|
|
|
119042
119048
|
if( pParse->pNewTrigger ){
|
|
119043
119049
|
sqlite3ErrorMsg(pParse, "cannot use RETURNING in a trigger");
|
|
119044
119050
|
}else{
|
|
119045
|
-
assert( pParse->bReturning==0 );
|
|
119051
|
+
assert( pParse->bReturning==0 || pParse->ifNotExists );
|
|
119046
119052
|
}
|
|
119047
119053
|
pParse->bReturning = 1;
|
|
119048
119054
|
pRet = sqlite3DbMallocZero(db, sizeof(*pRet));
|
|
@@ -119068,7 +119074,8 @@ SQLITE_PRIVATE void sqlite3AddReturning(Parse *pParse, ExprList *pList){
|
|
|
119068
119074
|
pRet->retTStep.pTrig = &pRet->retTrig;
|
|
119069
119075
|
pRet->retTStep.pExprList = pList;
|
|
119070
119076
|
pHash = &(db->aDb[1].pSchema->trigHash);
|
|
119071
|
-
assert( sqlite3HashFind(pHash, RETURNING_TRIGGER_NAME)==0
|
|
119077
|
+
assert( sqlite3HashFind(pHash, RETURNING_TRIGGER_NAME)==0
|
|
119078
|
+
|| pParse->nErr || pParse->ifNotExists );
|
|
119072
119079
|
if( sqlite3HashInsert(pHash, RETURNING_TRIGGER_NAME, &pRet->retTrig)
|
|
119073
119080
|
==&pRet->retTrig ){
|
|
119074
119081
|
sqlite3OomFault(db);
|
|
@@ -124310,7 +124317,7 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
|
|
|
124310
124317
|
#endif /* SQLITE_OMIT_TRUNCATE_OPTIMIZATION */
|
|
124311
124318
|
{
|
|
124312
124319
|
u16 wcf = WHERE_ONEPASS_DESIRED|WHERE_DUPLICATES_OK;
|
|
124313
|
-
if( sNC.ncFlags &
|
|
124320
|
+
if( sNC.ncFlags & NC_Subquery ) bComplex = 1;
|
|
124314
124321
|
wcf |= (bComplex ? 0 : WHERE_ONEPASS_MULTIROW);
|
|
124315
124322
|
if( HasRowid(pTab) ){
|
|
124316
124323
|
/* For a rowid table, initialize the RowSet to an empty set */
|
|
@@ -142240,7 +142247,9 @@ static Expr *substExpr(
|
|
|
142240
142247
|
sqlite3VectorErrorMsg(pSubst->pParse, pCopy);
|
|
142241
142248
|
}else{
|
|
142242
142249
|
sqlite3 *db = pSubst->pParse->db;
|
|
142243
|
-
if( pSubst->isOuterJoin
|
|
142250
|
+
if( pSubst->isOuterJoin
|
|
142251
|
+
&& (pCopy->op!=TK_COLUMN || pCopy->iTable!=pSubst->iNewTable)
|
|
142252
|
+
){
|
|
142244
142253
|
memset(&ifNullRow, 0, sizeof(ifNullRow));
|
|
142245
142254
|
ifNullRow.op = TK_IF_NULL_ROW;
|
|
142246
142255
|
ifNullRow.pLeft = pCopy;
|
|
@@ -147002,6 +147011,7 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
|
|
|
147002
147011
|
}else{
|
|
147003
147012
|
assert( !db->init.busy );
|
|
147004
147013
|
sqlite3CodeVerifySchema(pParse, iDb);
|
|
147014
|
+
VVA_ONLY( pParse->ifNotExists = 1; )
|
|
147005
147015
|
}
|
|
147006
147016
|
goto trigger_cleanup;
|
|
147007
147017
|
}
|
|
@@ -149005,12 +149015,22 @@ SQLITE_PRIVATE void sqlite3Update(
|
|
|
149005
149015
|
/* Begin the database scan.
|
|
149006
149016
|
**
|
|
149007
149017
|
** Do not consider a single-pass strategy for a multi-row update if
|
|
149008
|
-
** there
|
|
149009
|
-
**
|
|
149010
|
-
**
|
|
149011
|
-
**
|
|
149018
|
+
** there is anything that might disrupt the cursor being used to do
|
|
149019
|
+
** the UPDATE:
|
|
149020
|
+
** (1) This is a nested UPDATE
|
|
149021
|
+
** (2) There are triggers
|
|
149022
|
+
** (3) There are FOREIGN KEY constraints
|
|
149023
|
+
** (4) There are REPLACE conflict handlers
|
|
149024
|
+
** (5) There are subqueries in the WHERE clause
|
|
149025
|
+
*/
|
|
149012
149026
|
flags = WHERE_ONEPASS_DESIRED;
|
|
149013
|
-
if( !pParse->nested
|
|
149027
|
+
if( !pParse->nested
|
|
149028
|
+
&& !pTrigger
|
|
149029
|
+
&& !hasFK
|
|
149030
|
+
&& !chngKey
|
|
149031
|
+
&& !bReplace
|
|
149032
|
+
&& (sNC.ncFlags & NC_Subquery)==0
|
|
149033
|
+
){
|
|
149014
149034
|
flags |= WHERE_ONEPASS_MULTIROW;
|
|
149015
149035
|
}
|
|
149016
149036
|
pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere,0,0,0,flags,iIdxCur);
|
|
@@ -150975,7 +150995,9 @@ static int vtabCallConstructor(
|
|
|
150975
150995
|
sCtx.pPrior = db->pVtabCtx;
|
|
150976
150996
|
sCtx.bDeclared = 0;
|
|
150977
150997
|
db->pVtabCtx = &sCtx;
|
|
150998
|
+
pTab->nTabRef++;
|
|
150978
150999
|
rc = xConstruct(db, pMod->pAux, nArg, azArg, &pVTable->pVtab, &zErr);
|
|
151000
|
+
sqlite3DeleteTable(db, pTab);
|
|
150979
151001
|
db->pVtabCtx = sCtx.pPrior;
|
|
150980
151002
|
if( rc==SQLITE_NOMEM ) sqlite3OomFault(db);
|
|
150981
151003
|
assert( sCtx.pTab==pTab );
|
|
@@ -158144,6 +158166,10 @@ static SQLITE_NOINLINE void sqlite3ConstructBloomFilter(
|
|
|
158144
158166
|
Vdbe *v = pParse->pVdbe; /* VDBE under construction */
|
|
158145
158167
|
WhereLoop *pLoop = pLevel->pWLoop; /* The loop being coded */
|
|
158146
158168
|
int iCur; /* Cursor for table getting the filter */
|
|
158169
|
+
IndexedExpr *saved_pIdxEpr; /* saved copy of Parse.pIdxEpr */
|
|
158170
|
+
|
|
158171
|
+
saved_pIdxEpr = pParse->pIdxEpr;
|
|
158172
|
+
pParse->pIdxEpr = 0;
|
|
158147
158173
|
|
|
158148
158174
|
assert( pLoop!=0 );
|
|
158149
158175
|
assert( v!=0 );
|
|
@@ -158200,9 +158226,8 @@ static SQLITE_NOINLINE void sqlite3ConstructBloomFilter(
|
|
|
158200
158226
|
int r1 = sqlite3GetTempRange(pParse, n);
|
|
158201
158227
|
int jj;
|
|
158202
158228
|
for(jj=0; jj<n; jj++){
|
|
158203
|
-
int iCol = pIdx->aiColumn[jj];
|
|
158204
158229
|
assert( pIdx->pTable==pItem->pTab );
|
|
158205
|
-
|
|
158230
|
+
sqlite3ExprCodeLoadIndexColumn(pParse, pIdx, iCur, jj, r1+jj);
|
|
158206
158231
|
}
|
|
158207
158232
|
sqlite3VdbeAddOp4Int(v, OP_FilterAdd, pLevel->regFilter, 0, r1, n);
|
|
158208
158233
|
sqlite3ReleaseTempRange(pParse, r1, n);
|
|
@@ -158233,6 +158258,7 @@ static SQLITE_NOINLINE void sqlite3ConstructBloomFilter(
|
|
|
158233
158258
|
}
|
|
158234
158259
|
}while( iLevel < pWInfo->nLevel );
|
|
158235
158260
|
sqlite3VdbeJumpHere(v, addrOnce);
|
|
158261
|
+
pParse->pIdxEpr = saved_pIdxEpr;
|
|
158236
158262
|
}
|
|
158237
158263
|
|
|
158238
158264
|
|
|
@@ -158532,6 +158558,7 @@ static int whereKeyStats(
|
|
|
158532
158558
|
assert( pIdx->nSample>0 );
|
|
158533
158559
|
assert( pRec->nField>0 );
|
|
158534
158560
|
|
|
158561
|
+
|
|
158535
158562
|
/* Do a binary search to find the first sample greater than or equal
|
|
158536
158563
|
** to pRec. If pRec contains a single field, the set of samples to search
|
|
158537
158564
|
** is simply the aSample[] array. If the samples in aSample[] contain more
|
|
@@ -158576,7 +158603,12 @@ static int whereKeyStats(
|
|
|
158576
158603
|
** it is extended to two fields. The duplicates that this creates do not
|
|
158577
158604
|
** cause any problems.
|
|
158578
158605
|
*/
|
|
158579
|
-
|
|
158606
|
+
if( !HasRowid(pIdx->pTable) && IsPrimaryKeyIndex(pIdx) ){
|
|
158607
|
+
nField = pIdx->nKeyCol;
|
|
158608
|
+
}else{
|
|
158609
|
+
nField = pIdx->nColumn;
|
|
158610
|
+
}
|
|
158611
|
+
nField = MIN(pRec->nField, nField);
|
|
158580
158612
|
iCol = 0;
|
|
158581
158613
|
iSample = pIdx->nSample * nField;
|
|
158582
158614
|
do{
|
|
@@ -162304,6 +162336,10 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){
|
|
|
162304
162336
|
if( pFrom->isOrdered==pWInfo->pOrderBy->nExpr ){
|
|
162305
162337
|
pWInfo->eDistinct = WHERE_DISTINCT_ORDERED;
|
|
162306
162338
|
}
|
|
162339
|
+
if( pWInfo->pSelect->pOrderBy
|
|
162340
|
+
&& pWInfo->nOBSat > pWInfo->pSelect->pOrderBy->nExpr ){
|
|
162341
|
+
pWInfo->nOBSat = pWInfo->pSelect->pOrderBy->nExpr;
|
|
162342
|
+
}
|
|
162307
162343
|
}else{
|
|
162308
162344
|
pWInfo->revMask = pFrom->revLoop;
|
|
162309
162345
|
if( pWInfo->nOBSat<=0 ){
|
|
@@ -193188,16 +193224,18 @@ static int fts3MsrBufferData(
|
|
|
193188
193224
|
char *pList,
|
|
193189
193225
|
i64 nList
|
|
193190
193226
|
){
|
|
193191
|
-
if( nList>pMsr->nBuffer ){
|
|
193227
|
+
if( (nList+FTS3_NODE_PADDING)>pMsr->nBuffer ){
|
|
193192
193228
|
char *pNew;
|
|
193193
|
-
|
|
193194
|
-
pNew = (char *)sqlite3_realloc64(pMsr->aBuffer,
|
|
193229
|
+
int nNew = nList*2 + FTS3_NODE_PADDING;
|
|
193230
|
+
pNew = (char *)sqlite3_realloc64(pMsr->aBuffer, nNew);
|
|
193195
193231
|
if( !pNew ) return SQLITE_NOMEM;
|
|
193196
193232
|
pMsr->aBuffer = pNew;
|
|
193233
|
+
pMsr->nBuffer = nNew;
|
|
193197
193234
|
}
|
|
193198
193235
|
|
|
193199
193236
|
assert( nList>0 );
|
|
193200
193237
|
memcpy(pMsr->aBuffer, pList, nList);
|
|
193238
|
+
memset(&pMsr->aBuffer[nList], 0, FTS3_NODE_PADDING);
|
|
193201
193239
|
return SQLITE_OK;
|
|
193202
193240
|
}
|
|
193203
193241
|
|
|
@@ -240341,7 +240379,7 @@ static void fts5SourceIdFunc(
|
|
|
240341
240379
|
){
|
|
240342
240380
|
assert( nArg==0 );
|
|
240343
240381
|
UNUSED_PARAM2(nArg, apUnused);
|
|
240344
|
-
sqlite3_result_text(pCtx, "fts5: 2023-03-
|
|
240382
|
+
sqlite3_result_text(pCtx, "fts5: 2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69cffde2924203304e8ffc4155597af0c191da", -1, SQLITE_TRANSIENT);
|
|
240345
240383
|
}
|
|
240346
240384
|
|
|
240347
240385
|
/*
|
|
@@ -245539,9 +245577,9 @@ SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
|
|
|
245539
245577
|
|
|
245540
245578
|
#define SQLITE3MC_VERSION_MAJOR 1
|
|
245541
245579
|
#define SQLITE3MC_VERSION_MINOR 6
|
|
245542
|
-
#define SQLITE3MC_VERSION_RELEASE
|
|
245580
|
+
#define SQLITE3MC_VERSION_RELEASE 2
|
|
245543
245581
|
#define SQLITE3MC_VERSION_SUBRELEASE 0
|
|
245544
|
-
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.6.
|
|
245582
|
+
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.6.2"
|
|
245545
245583
|
|
|
245546
245584
|
#endif /* SQLITE3MC_VERSION_H_ */
|
|
245547
245585
|
/*** End of #include "sqlite3mc_version.h" ***/
|
|
@@ -245700,9 +245738,9 @@ extern "C" {
|
|
|
245700
245738
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
245701
245739
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
245702
245740
|
*/
|
|
245703
|
-
#define SQLITE_VERSION "3.41.
|
|
245704
|
-
#define SQLITE_VERSION_NUMBER
|
|
245705
|
-
#define SQLITE_SOURCE_ID "2023-03-
|
|
245741
|
+
#define SQLITE_VERSION "3.41.2"
|
|
245742
|
+
#define SQLITE_VERSION_NUMBER 3041002
|
|
245743
|
+
#define SQLITE_SOURCE_ID "2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69cffde2924203304e8ffc4155597af0c191da"
|
|
245706
245744
|
|
|
245707
245745
|
/*
|
|
245708
245746
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
@@ -268829,7 +268867,7 @@ sqlite3mcBtreeSetPageSize(Btree* p, int pageSize, int nReserve, int iFix)
|
|
|
268829
268867
|
** Change 4: Call sqlite3mcBtreeSetPageSize instead of sqlite3BtreeSetPageSize for main database
|
|
268830
268868
|
** (sqlite3mcBtreeSetPageSize allows to reduce the number of reserved bytes)
|
|
268831
268869
|
**
|
|
268832
|
-
** This code is generated by the script rekeyvacuum.sh from SQLite version 3.41.
|
|
268870
|
+
** This code is generated by the script rekeyvacuum.sh from SQLite version 3.41.2 amalgamation.
|
|
268833
268871
|
*/
|
|
268834
268872
|
SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3mcRunVacuumForRekey(
|
|
268835
268873
|
char **pzErrMsg, /* Write error message here */
|
package/deps/sqlite3/sqlite3.h
CHANGED
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
|
|
32
32
|
#define SQLITE3MC_VERSION_MAJOR 1
|
|
33
33
|
#define SQLITE3MC_VERSION_MINOR 6
|
|
34
|
-
#define SQLITE3MC_VERSION_RELEASE
|
|
34
|
+
#define SQLITE3MC_VERSION_RELEASE 2
|
|
35
35
|
#define SQLITE3MC_VERSION_SUBRELEASE 0
|
|
36
|
-
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.6.
|
|
36
|
+
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.6.2"
|
|
37
37
|
|
|
38
38
|
#endif /* SQLITE3MC_VERSION_H_ */
|
|
39
39
|
/*** End of #include "sqlite3mc_version.h" ***/
|
|
@@ -192,9 +192,9 @@ extern "C" {
|
|
|
192
192
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
193
193
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
194
194
|
*/
|
|
195
|
-
#define SQLITE_VERSION "3.41.
|
|
196
|
-
#define SQLITE_VERSION_NUMBER
|
|
197
|
-
#define SQLITE_SOURCE_ID "2023-03-
|
|
195
|
+
#define SQLITE_VERSION "3.41.2"
|
|
196
|
+
#define SQLITE_VERSION_NUMBER 3041002
|
|
197
|
+
#define SQLITE_SOURCE_ID "2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69cffde2924203304e8ffc4155597af0c191da"
|
|
198
198
|
|
|
199
199
|
/*
|
|
200
200
|
** CAPI3REF: Run-Time Library Version Numbers
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "better-sqlite3-multiple-ciphers",
|
|
3
|
-
"version": "8.2.1-beta.
|
|
3
|
+
"version": "8.2.1-beta.1",
|
|
4
4
|
"description": "better-sqlite3 with multiple-cipher encryption support",
|
|
5
5
|
"homepage": "https://github.com/m4heshd/better-sqlite3-multiple-ciphers",
|
|
6
6
|
"author": "Mahesh Bandara Wijerathna (m4heshd) <m4heshd@gmail.com>",
|