better-sqlite3-multiple-ciphers 7.6.2 → 7.6.3-beta.0
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 +4 -4
- package/deps/setup.ps1 +1 -1
- package/deps/sqlite3/sqlite3.c +82 -55
- 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.4.6`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.4.6)
|
|
24
24
|
|
|
25
25
|
- ### Beta
|
|
26
|
-
- **better-sqlite3-multiple-ciphers** - [`7.
|
|
27
|
-
- **better-sqlite3** - [`7.
|
|
28
|
-
- **SQLite** - [`3.
|
|
29
|
-
- **SQLite3 Multiple Ciphers** - [`1.4.
|
|
26
|
+
- **better-sqlite3-multiple-ciphers** - [`7.6.3-beta.0`](https://github.com/m4heshd/better-sqlite3-multiple-ciphers/releases/tag/v7.6.3-beta.0)
|
|
27
|
+
- **better-sqlite3** - [`7.6.2`](https://github.com/JoshuaWise/better-sqlite3/releases/tag/v7.6.2)
|
|
28
|
+
- **SQLite** - [`3.39.2`](https://www.sqlite.org/releaselog/3_39_2.html)
|
|
29
|
+
- **SQLite3 Multiple Ciphers** - [`1.4.8`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.4.8)
|
|
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.39.
|
|
95
|
+
** version 3.39.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.39.
|
|
548
|
-
#define SQLITE_VERSION_NUMBER
|
|
549
|
-
#define SQLITE_SOURCE_ID "2022-07-
|
|
547
|
+
#define SQLITE_VERSION "3.39.2"
|
|
548
|
+
#define SQLITE_VERSION_NUMBER 3039002
|
|
549
|
+
#define SQLITE_SOURCE_ID "2022-07-21 15:24:47 698edb77537b67c41adc68f9b892db56bcf9a55e00371a61420f3ddd668e6603"
|
|
550
550
|
|
|
551
551
|
/*
|
|
552
552
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
@@ -30529,8 +30529,8 @@ SQLITE_API void sqlite3_str_vappendf(
|
|
|
30529
30529
|
case etSQLESCAPE: /* %q: Escape ' characters */
|
|
30530
30530
|
case etSQLESCAPE2: /* %Q: Escape ' and enclose in '...' */
|
|
30531
30531
|
case etSQLESCAPE3: { /* %w: Escape " characters */
|
|
30532
|
-
|
|
30533
|
-
int needQuote;
|
|
30532
|
+
i64 i, j, k, n;
|
|
30533
|
+
int needQuote, isnull;
|
|
30534
30534
|
char ch;
|
|
30535
30535
|
char q = ((xtype==etSQLESCAPE3)?'"':'\''); /* Quote character */
|
|
30536
30536
|
char *escarg;
|
|
@@ -31218,8 +31218,8 @@ SQLITE_PRIVATE void sqlite3TreeViewColumnList(
|
|
|
31218
31218
|
sqlite3TreeViewLine(pView, "COLUMNS");
|
|
31219
31219
|
for(i=0; i<nCol; i++){
|
|
31220
31220
|
u16 flg = aCol[i].colFlags;
|
|
31221
|
-
int
|
|
31222
|
-
sqlite3TreeViewPush(&pView,
|
|
31221
|
+
int colMoreToFollow = i<(nCol - 1);
|
|
31222
|
+
sqlite3TreeViewPush(&pView, colMoreToFollow);
|
|
31223
31223
|
sqlite3TreeViewLine(pView, 0);
|
|
31224
31224
|
printf(" %s", aCol[i].zCnName);
|
|
31225
31225
|
switch( aCol[i].eCType ){
|
|
@@ -31350,7 +31350,7 @@ SQLITE_PRIVATE void sqlite3TreeViewSrcList(TreeView *pView, const SrcList *pSrc)
|
|
|
31350
31350
|
Table *pTab = pItem->pTab;
|
|
31351
31351
|
sqlite3TreeViewColumnList(pView, pTab->aCol, pTab->nCol, 1);
|
|
31352
31352
|
}
|
|
31353
|
-
assert( pItem->fg.isNestedFrom == IsNestedFrom(pItem->pSelect) );
|
|
31353
|
+
assert( (int)pItem->fg.isNestedFrom == IsNestedFrom(pItem->pSelect) );
|
|
31354
31354
|
sqlite3TreeViewSelect(pView, pItem->pSelect, (--n)>0);
|
|
31355
31355
|
}
|
|
31356
31356
|
if( pItem->fg.isTabFunc ){
|
|
@@ -101639,33 +101639,23 @@ static void resolveAlias(
|
|
|
101639
101639
|
sqlite3ExprDelete(db, pDup);
|
|
101640
101640
|
pDup = 0;
|
|
101641
101641
|
}else{
|
|
101642
|
+
Expr temp;
|
|
101642
101643
|
incrAggFunctionDepth(pDup, nSubquery);
|
|
101643
101644
|
if( pExpr->op==TK_COLLATE ){
|
|
101644
101645
|
assert( !ExprHasProperty(pExpr, EP_IntValue) );
|
|
101645
101646
|
pDup = sqlite3ExprAddCollateString(pParse, pDup, pExpr->u.zToken);
|
|
101646
101647
|
}
|
|
101647
|
-
|
|
101648
|
-
|
|
101649
|
-
|
|
101650
|
-
** allowing it to be repopulated by the memcpy() on the following line.
|
|
101651
|
-
** The pExpr->u.zToken might point into memory that will be freed by the
|
|
101652
|
-
** sqlite3DbFree(db, pDup) on the last line of this block, so be sure to
|
|
101653
|
-
** make a copy of the token before doing the sqlite3DbFree().
|
|
101654
|
-
*/
|
|
101655
|
-
ExprSetProperty(pExpr, EP_Static);
|
|
101656
|
-
sqlite3ExprDelete(db, pExpr);
|
|
101657
|
-
memcpy(pExpr, pDup, sizeof(*pExpr));
|
|
101658
|
-
if( !ExprHasProperty(pExpr, EP_IntValue) && pExpr->u.zToken!=0 ){
|
|
101659
|
-
assert( (pExpr->flags & (EP_Reduced|EP_TokenOnly))==0 );
|
|
101660
|
-
pExpr->u.zToken = sqlite3DbStrDup(db, pExpr->u.zToken);
|
|
101661
|
-
pExpr->flags |= EP_MemToken;
|
|
101662
|
-
}
|
|
101648
|
+
memcpy(&temp, pDup, sizeof(Expr));
|
|
101649
|
+
memcpy(pDup, pExpr, sizeof(Expr));
|
|
101650
|
+
memcpy(pExpr, &temp, sizeof(Expr));
|
|
101663
101651
|
if( ExprHasProperty(pExpr, EP_WinFunc) ){
|
|
101664
101652
|
if( ALWAYS(pExpr->y.pWin!=0) ){
|
|
101665
101653
|
pExpr->y.pWin->pOwner = pExpr;
|
|
101666
101654
|
}
|
|
101667
101655
|
}
|
|
101668
|
-
|
|
101656
|
+
sqlite3ParserAddCleanup(pParse,
|
|
101657
|
+
(void(*)(sqlite3*,void*))sqlite3ExprDelete,
|
|
101658
|
+
pDup);
|
|
101669
101659
|
}
|
|
101670
101660
|
}
|
|
101671
101661
|
|
|
@@ -101868,7 +101858,7 @@ static int lookupName(
|
|
|
101868
101858
|
pTab = pItem->pTab;
|
|
101869
101859
|
assert( pTab!=0 && pTab->zName!=0 );
|
|
101870
101860
|
assert( pTab->nCol>0 || pParse->nErr );
|
|
101871
|
-
assert( pItem->fg.isNestedFrom == IsNestedFrom(pItem->pSelect) );
|
|
101861
|
+
assert( (int)pItem->fg.isNestedFrom == IsNestedFrom(pItem->pSelect) );
|
|
101872
101862
|
if( pItem->fg.isNestedFrom ){
|
|
101873
101863
|
/* In this case, pItem is a subquery that has been formed from a
|
|
101874
101864
|
** parenthesized subset of the FROM clause terms. Example:
|
|
@@ -135963,7 +135953,7 @@ SQLITE_PRIVATE int sqlite3ColumnIndex(Table *pTab, const char *zCol){
|
|
|
135963
135953
|
*/
|
|
135964
135954
|
SQLITE_PRIVATE void sqlite3SrcItemColumnUsed(SrcItem *pItem, int iCol){
|
|
135965
135955
|
assert( pItem!=0 );
|
|
135966
|
-
assert( pItem->fg.isNestedFrom == IsNestedFrom(pItem->pSelect) );
|
|
135956
|
+
assert( (int)pItem->fg.isNestedFrom == IsNestedFrom(pItem->pSelect) );
|
|
135967
135957
|
if( pItem->fg.isNestedFrom ){
|
|
135968
135958
|
ExprList *pResults;
|
|
135969
135959
|
assert( pItem->pSelect!=0 );
|
|
@@ -141550,7 +141540,7 @@ static int selectExpander(Walker *pWalker, Select *p){
|
|
|
141550
141540
|
zTabName = pTab->zName;
|
|
141551
141541
|
}
|
|
141552
141542
|
if( db->mallocFailed ) break;
|
|
141553
|
-
assert( pFrom->fg.isNestedFrom == IsNestedFrom(pFrom->pSelect) );
|
|
141543
|
+
assert( (int)pFrom->fg.isNestedFrom == IsNestedFrom(pFrom->pSelect) );
|
|
141554
141544
|
if( pFrom->fg.isNestedFrom ){
|
|
141555
141545
|
assert( pFrom->pSelect!=0 );
|
|
141556
141546
|
pNestedFrom = pFrom->pSelect->pEList;
|
|
@@ -142479,7 +142469,9 @@ SQLITE_PRIVATE int sqlite3Select(
|
|
|
142479
142469
|
){
|
|
142480
142470
|
SELECTTRACE(0x100,pParse,p,
|
|
142481
142471
|
("omit superfluous ORDER BY on %r FROM-clause subquery\n",i+1));
|
|
142482
|
-
|
|
142472
|
+
sqlite3ParserAddCleanup(pParse,
|
|
142473
|
+
(void(*)(sqlite3*,void*))sqlite3ExprListDelete,
|
|
142474
|
+
pSub->pOrderBy);
|
|
142483
142475
|
pSub->pOrderBy = 0;
|
|
142484
142476
|
}
|
|
142485
142477
|
|
|
@@ -155479,7 +155471,7 @@ static int whereKeyStats(
|
|
|
155479
155471
|
#endif
|
|
155480
155472
|
assert( pRec!=0 );
|
|
155481
155473
|
assert( pIdx->nSample>0 );
|
|
155482
|
-
assert( pRec->nField>0
|
|
155474
|
+
assert( pRec->nField>0 );
|
|
155483
155475
|
|
|
155484
155476
|
/* Do a binary search to find the first sample greater than or equal
|
|
155485
155477
|
** to pRec. If pRec contains a single field, the set of samples to search
|
|
@@ -155525,7 +155517,7 @@ static int whereKeyStats(
|
|
|
155525
155517
|
** it is extended to two fields. The duplicates that this creates do not
|
|
155526
155518
|
** cause any problems.
|
|
155527
155519
|
*/
|
|
155528
|
-
nField = pRec->nField;
|
|
155520
|
+
nField = MIN(pRec->nField, pIdx->nSample);
|
|
155529
155521
|
iCol = 0;
|
|
155530
155522
|
iSample = pIdx->nSample * nField;
|
|
155531
155523
|
do{
|
|
@@ -158214,6 +158206,7 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){
|
|
|
158214
158206
|
sqlite3 *db = pWInfo->pParse->db;
|
|
158215
158207
|
int rc = SQLITE_OK;
|
|
158216
158208
|
int bFirstPastRJ = 0;
|
|
158209
|
+
int hasRightJoin = 0;
|
|
158217
158210
|
WhereLoop *pNew;
|
|
158218
158211
|
|
|
158219
158212
|
|
|
@@ -158234,15 +158227,16 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){
|
|
|
158234
158227
|
** prevents the right operand of a RIGHT JOIN from being swapped with
|
|
158235
158228
|
** other elements even further to the right.
|
|
158236
158229
|
**
|
|
158237
|
-
** The JT_LTORJ
|
|
158238
|
-
**
|
|
158239
|
-
**
|
|
158240
|
-
**
|
|
158241
|
-
** left side of a RIGHT JOIN would be sufficient for all known failure
|
|
158242
|
-
** cases. FIX ME: Implement this optimization.
|
|
158230
|
+
** The JT_LTORJ case and the hasRightJoin flag work together to
|
|
158231
|
+
** prevent FROM-clause terms from moving from the right side of
|
|
158232
|
+
** a LEFT JOIN over to the left side of that join if the LEFT JOIN
|
|
158233
|
+
** is itself on the left side of a RIGHT JOIN.
|
|
158243
158234
|
*/
|
|
158235
|
+
if( pItem->fg.jointype & JT_LTORJ ) hasRightJoin = 1;
|
|
158244
158236
|
mPrereq |= mPrior;
|
|
158245
158237
|
bFirstPastRJ = (pItem->fg.jointype & JT_RIGHT)!=0;
|
|
158238
|
+
}else if( !hasRightJoin ){
|
|
158239
|
+
mPrereq = 0;
|
|
158246
158240
|
}
|
|
158247
158241
|
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
|
158248
158242
|
if( IsVirtual(pItem->pTab) ){
|
|
@@ -181167,8 +181161,7 @@ static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
|
|
|
181167
181161
|
char *aPoslist = 0; /* Position list for deferred tokens */
|
|
181168
181162
|
int nPoslist = 0; /* Number of bytes in aPoslist */
|
|
181169
181163
|
int iPrev = -1; /* Token number of previous deferred token */
|
|
181170
|
-
|
|
181171
|
-
assert( pPhrase->doclist.bFreeList==0 );
|
|
181164
|
+
char *aFree = (pPhrase->doclist.bFreeList ? pPhrase->doclist.pList : 0);
|
|
181172
181165
|
|
|
181173
181166
|
for(iToken=0; iToken<pPhrase->nToken; iToken++){
|
|
181174
181167
|
Fts3PhraseToken *pToken = &pPhrase->aToken[iToken];
|
|
@@ -181182,6 +181175,7 @@ static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
|
|
|
181182
181175
|
|
|
181183
181176
|
if( pList==0 ){
|
|
181184
181177
|
sqlite3_free(aPoslist);
|
|
181178
|
+
sqlite3_free(aFree);
|
|
181185
181179
|
pPhrase->doclist.pList = 0;
|
|
181186
181180
|
pPhrase->doclist.nList = 0;
|
|
181187
181181
|
return SQLITE_OK;
|
|
@@ -181202,6 +181196,7 @@ static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
|
|
|
181202
181196
|
nPoslist = (int)(aOut - aPoslist);
|
|
181203
181197
|
if( nPoslist==0 ){
|
|
181204
181198
|
sqlite3_free(aPoslist);
|
|
181199
|
+
sqlite3_free(aFree);
|
|
181205
181200
|
pPhrase->doclist.pList = 0;
|
|
181206
181201
|
pPhrase->doclist.nList = 0;
|
|
181207
181202
|
return SQLITE_OK;
|
|
@@ -181254,6 +181249,7 @@ static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
|
|
|
181254
181249
|
}
|
|
181255
181250
|
}
|
|
181256
181251
|
|
|
181252
|
+
if( pPhrase->doclist.pList!=aFree ) sqlite3_free(aFree);
|
|
181257
181253
|
return SQLITE_OK;
|
|
181258
181254
|
}
|
|
181259
181255
|
#endif /* SQLITE_DISABLE_FTS4_DEFERRED */
|
|
@@ -182432,7 +182428,6 @@ static int fts3EvalTestExpr(
|
|
|
182432
182428
|
pExpr->iDocid==pCsr->iPrevId && pExpr->pPhrase->doclist.pList
|
|
182433
182429
|
))){
|
|
182434
182430
|
Fts3Phrase *pPhrase = pExpr->pPhrase;
|
|
182435
|
-
assert( pExpr->bDeferred || pPhrase->doclist.bFreeList==0 );
|
|
182436
182431
|
if( pExpr->bDeferred ){
|
|
182437
182432
|
fts3EvalInvalidatePoslist(pPhrase);
|
|
182438
182433
|
}
|
|
@@ -236750,7 +236745,7 @@ static void fts5SourceIdFunc(
|
|
|
236750
236745
|
){
|
|
236751
236746
|
assert( nArg==0 );
|
|
236752
236747
|
UNUSED_PARAM2(nArg, apUnused);
|
|
236753
|
-
sqlite3_result_text(pCtx, "fts5: 2022-07-
|
|
236748
|
+
sqlite3_result_text(pCtx, "fts5: 2022-07-21 15:24:47 698edb77537b67c41adc68f9b892db56bcf9a55e00371a61420f3ddd668e6603", -1, SQLITE_TRANSIENT);
|
|
236754
236749
|
}
|
|
236755
236750
|
|
|
236756
236751
|
/*
|
|
@@ -241916,9 +241911,9 @@ SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
|
|
|
241916
241911
|
|
|
241917
241912
|
#define SQLITE3MC_VERSION_MAJOR 1
|
|
241918
241913
|
#define SQLITE3MC_VERSION_MINOR 4
|
|
241919
|
-
#define SQLITE3MC_VERSION_RELEASE
|
|
241914
|
+
#define SQLITE3MC_VERSION_RELEASE 8
|
|
241920
241915
|
#define SQLITE3MC_VERSION_SUBRELEASE 0
|
|
241921
|
-
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.4.
|
|
241916
|
+
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.4.8"
|
|
241922
241917
|
|
|
241923
241918
|
#endif /* SQLITE3MC_VERSION_H_ */
|
|
241924
241919
|
/*** End of #include "sqlite3mc_version.h" ***/
|
|
@@ -242077,9 +242072,9 @@ extern "C" {
|
|
|
242077
242072
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
242078
242073
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
242079
242074
|
*/
|
|
242080
|
-
#define SQLITE_VERSION "3.39.
|
|
242081
|
-
#define SQLITE_VERSION_NUMBER
|
|
242082
|
-
#define SQLITE_SOURCE_ID "2022-07-
|
|
242075
|
+
#define SQLITE_VERSION "3.39.2"
|
|
242076
|
+
#define SQLITE_VERSION_NUMBER 3039002
|
|
242077
|
+
#define SQLITE_SOURCE_ID "2022-07-21 15:24:47 698edb77537b67c41adc68f9b892db56bcf9a55e00371a61420f3ddd668e6603"
|
|
242083
242078
|
|
|
242084
242079
|
/*
|
|
242085
242080
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
@@ -263781,7 +263776,7 @@ sqlite3mcConfigureSQLCipherVersion(sqlite3* db, int configDefault, int legacyVer
|
|
|
263781
263776
|
** Purpose: Configuration of SQLite codecs
|
|
263782
263777
|
** Author: Ulrich Telle
|
|
263783
263778
|
** Created: 2020-03-02
|
|
263784
|
-
** Copyright: (c) 2006-
|
|
263779
|
+
** Copyright: (c) 2006-2022 Ulrich Telle
|
|
263785
263780
|
** License: MIT
|
|
263786
263781
|
*/
|
|
263787
263782
|
|
|
@@ -264635,6 +264630,17 @@ sqlite3mcFileControlPragma(sqlite3* db, const char* zDbName, int op, void* pArg)
|
|
|
264635
264630
|
{
|
|
264636
264631
|
((char**)pArg)[0] = sqlite3_mprintf("ok");
|
|
264637
264632
|
}
|
|
264633
|
+
else
|
|
264634
|
+
{
|
|
264635
|
+
if (db->pErr)
|
|
264636
|
+
{
|
|
264637
|
+
const char* z = (const char*)sqlite3_value_text(db->pErr);
|
|
264638
|
+
if (z && sqlite3Strlen30(z) > 0)
|
|
264639
|
+
{
|
|
264640
|
+
((char**)pArg)[0] = sqlite3_mprintf(z);
|
|
264641
|
+
}
|
|
264642
|
+
}
|
|
264643
|
+
}
|
|
264638
264644
|
}
|
|
264639
264645
|
else if (sqlite3StrICmp(pragmaName, "hexkey") == 0)
|
|
264640
264646
|
{
|
|
@@ -264649,6 +264655,17 @@ sqlite3mcFileControlPragma(sqlite3* db, const char* zDbName, int op, void* pArg)
|
|
|
264649
264655
|
{
|
|
264650
264656
|
((char**)pArg)[0] = sqlite3_mprintf("ok");
|
|
264651
264657
|
}
|
|
264658
|
+
else
|
|
264659
|
+
{
|
|
264660
|
+
if (db->pErr)
|
|
264661
|
+
{
|
|
264662
|
+
const char* z = (const char*)sqlite3_value_text(db->pErr);
|
|
264663
|
+
if (z && sqlite3Strlen30(z) > 0)
|
|
264664
|
+
{
|
|
264665
|
+
((char**)pArg)[0] = sqlite3_mprintf(z);
|
|
264666
|
+
}
|
|
264667
|
+
}
|
|
264668
|
+
}
|
|
264652
264669
|
}
|
|
264653
264670
|
else
|
|
264654
264671
|
{
|
|
@@ -264932,7 +264949,7 @@ sqlite3mcBtreeSetPageSize(Btree* p, int pageSize, int nReserve, int iFix)
|
|
|
264932
264949
|
** Change 4: Call sqlite3mcBtreeSetPageSize instead of sqlite3BtreeSetPageSize for main database
|
|
264933
264950
|
** (sqlite3mcBtreeSetPageSize allows to reduce the number of reserved bytes)
|
|
264934
264951
|
**
|
|
264935
|
-
** This code is generated by the script rekeyvacuum.sh from SQLite version 3.39.
|
|
264952
|
+
** This code is generated by the script rekeyvacuum.sh from SQLite version 3.39.2 amalgamation.
|
|
264936
264953
|
*/
|
|
264937
264954
|
SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3mcRunVacuumForRekey(
|
|
264938
264955
|
char **pzErrMsg, /* Write error message here */
|
|
@@ -265493,6 +265510,11 @@ sqlite3_key_v2(sqlite3* db, const char* zDbName, const void* zKey, int nKey)
|
|
|
265493
265510
|
{
|
|
265494
265511
|
int dbIndex;
|
|
265495
265512
|
const char* dbFileName = sqlite3_db_filename(db, zDbName);
|
|
265513
|
+
if (dbFileName == NULL || dbFileName[0] == 0)
|
|
265514
|
+
{
|
|
265515
|
+
sqlite3ErrorWithMsg(db, rc, "Setting key not supported for in-memory or temporary databases.");
|
|
265516
|
+
return rc;
|
|
265517
|
+
}
|
|
265496
265518
|
/* Configure cipher from URI parameters if requested */
|
|
265497
265519
|
if (sqlite3FindFunction(db, "sqlite3mc_config_table", 0, SQLITE_UTF8, 0) == NULL)
|
|
265498
265520
|
{
|
|
@@ -265513,7 +265535,7 @@ sqlite3_key_v2(sqlite3* db, const char* zDbName, const void* zKey, int nKey)
|
|
|
265513
265535
|
else
|
|
265514
265536
|
{
|
|
265515
265537
|
rc = SQLITE_ERROR;
|
|
265516
|
-
sqlite3ErrorWithMsg(db, rc, "
|
|
265538
|
+
sqlite3ErrorWithMsg(db, rc, "Setting key failed. Database '%s' not found.", zDbName);
|
|
265517
265539
|
}
|
|
265518
265540
|
}
|
|
265519
265541
|
return rc;
|
|
@@ -265540,7 +265562,12 @@ sqlite3_rekey_v2(sqlite3* db, const char* zDbName, const void* zKey, int nKey)
|
|
|
265540
265562
|
dbIndex = (zDbName) ? sqlite3FindDbName(db, zDbName) : 0;
|
|
265541
265563
|
if (dbIndex < 0)
|
|
265542
265564
|
{
|
|
265543
|
-
sqlite3ErrorWithMsg(db, rc, "
|
|
265565
|
+
sqlite3ErrorWithMsg(db, rc, "Rekeying failed. Database '%s' not found.", zDbName);
|
|
265566
|
+
return rc;
|
|
265567
|
+
}
|
|
265568
|
+
if (dbFileName == NULL || dbFileName[0] == 0)
|
|
265569
|
+
{
|
|
265570
|
+
sqlite3ErrorWithMsg(db, rc, "Rekeying not supported for in-memory or temporary databases.");
|
|
265544
265571
|
return rc;
|
|
265545
265572
|
}
|
|
265546
265573
|
pBt = db->aDb[dbIndex].pBt;
|
|
@@ -265555,7 +265582,7 @@ sqlite3_rekey_v2(sqlite3* db, const char* zDbName, const void* zKey, int nKey)
|
|
|
265555
265582
|
|
|
265556
265583
|
if (pagerUseWal(pPager))
|
|
265557
265584
|
{
|
|
265558
|
-
sqlite3ErrorWithMsg(db, rc, "
|
|
265585
|
+
sqlite3ErrorWithMsg(db, rc, "Rekeying is not supported in WAL journal mode.");
|
|
265559
265586
|
return rc;
|
|
265560
265587
|
}
|
|
265561
265588
|
|
|
@@ -265606,7 +265633,7 @@ sqlite3_rekey_v2(sqlite3* db, const char* zDbName, const void* zKey, int nKey)
|
|
|
265606
265633
|
{
|
|
265607
265634
|
/* Pagesize cannot be changed for an encrypted database */
|
|
265608
265635
|
rc = SQLITE_ERROR;
|
|
265609
|
-
sqlite3ErrorWithMsg(db, rc, "
|
|
265636
|
+
sqlite3ErrorWithMsg(db, rc, "Rekeying failed. Pagesize cannot be changed for an encrypted database.");
|
|
265610
265637
|
goto leave_rekey;
|
|
265611
265638
|
}
|
|
265612
265639
|
}
|
|
@@ -265655,14 +265682,14 @@ sqlite3_rekey_v2(sqlite3* db, const char* zDbName, const void* zKey, int nKey)
|
|
|
265655
265682
|
{
|
|
265656
265683
|
/* Pagesize cannot be changed for an encrypted database */
|
|
265657
265684
|
rc = SQLITE_ERROR;
|
|
265658
|
-
sqlite3ErrorWithMsg(db, rc, "
|
|
265685
|
+
sqlite3ErrorWithMsg(db, rc, "Rekeying failed. Pagesize cannot be changed for an encrypted database.");
|
|
265659
265686
|
goto leave_rekey;
|
|
265660
265687
|
}
|
|
265661
265688
|
}
|
|
265662
265689
|
else
|
|
265663
265690
|
{
|
|
265664
265691
|
/* Setup of write cipher failed */
|
|
265665
|
-
sqlite3ErrorWithMsg(db, rc, "
|
|
265692
|
+
sqlite3ErrorWithMsg(db, rc, "Rekeying failed. Setup of write cipher failed.");
|
|
265666
265693
|
goto leave_rekey;
|
|
265667
265694
|
}
|
|
265668
265695
|
}
|
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 4
|
|
34
|
-
#define SQLITE3MC_VERSION_RELEASE
|
|
34
|
+
#define SQLITE3MC_VERSION_RELEASE 8
|
|
35
35
|
#define SQLITE3MC_VERSION_SUBRELEASE 0
|
|
36
|
-
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.4.
|
|
36
|
+
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.4.8"
|
|
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.39.
|
|
196
|
-
#define SQLITE_VERSION_NUMBER
|
|
197
|
-
#define SQLITE_SOURCE_ID "2022-07-
|
|
195
|
+
#define SQLITE_VERSION "3.39.2"
|
|
196
|
+
#define SQLITE_VERSION_NUMBER 3039002
|
|
197
|
+
#define SQLITE_SOURCE_ID "2022-07-21 15:24:47 698edb77537b67c41adc68f9b892db56bcf9a55e00371a61420f3ddd668e6603"
|
|
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": "7.6.
|
|
3
|
+
"version": "7.6.3-beta.0",
|
|
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>",
|