better-sqlite3-multiple-ciphers 7.5.1-beta.2 → 7.5.1-beta.3
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 +160 -80
- package/deps/sqlite3/sqlite3.h +13 -9
- 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.3.7`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.3.7)
|
|
24
24
|
|
|
25
25
|
- ### Beta
|
|
26
|
-
- **better-sqlite3-multiple-ciphers** - [`7.5.1-beta.
|
|
26
|
+
- **better-sqlite3-multiple-ciphers** - [`7.5.1-beta.3`](https://github.com/m4heshd/better-sqlite3-multiple-ciphers/releases/tag/v7.5.1-beta.3)
|
|
27
27
|
- **better-sqlite3** - [`7.5.0`](https://github.com/JoshuaWise/better-sqlite3/releases/tag/v7.5.0)
|
|
28
|
-
- **SQLite** - [`3.38.
|
|
29
|
-
- **SQLite3 Multiple Ciphers** - [`1.3.
|
|
28
|
+
- **SQLite** - [`3.38.1`](https://www.sqlite.org/draft/releaselog/3_38_1.html)
|
|
29
|
+
- **SQLite3 Multiple Ciphers** - [`1.3.9`](https://github.com/utelle/SQLite3MultipleCiphers/releases/tag/v1.3.9)
|
|
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.38.
|
|
95
|
+
** version 3.38.1. 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.38.
|
|
548
|
-
#define SQLITE_VERSION_NUMBER
|
|
549
|
-
#define SQLITE_SOURCE_ID "2022-
|
|
547
|
+
#define SQLITE_VERSION "3.38.1"
|
|
548
|
+
#define SQLITE_VERSION_NUMBER 3038001
|
|
549
|
+
#define SQLITE_SOURCE_ID "2022-03-12 13:37:29 38c210fdd258658321c85ec9c01a072fda3ada94540e3239d29b34dc547a8cbc"
|
|
550
550
|
|
|
551
551
|
/*
|
|
552
552
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
@@ -5377,6 +5377,10 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
5377
5377
|
** even empty strings, are always zero-terminated. ^The return
|
|
5378
5378
|
** value from sqlite3_column_blob() for a zero-length BLOB is a NULL pointer.
|
|
5379
5379
|
**
|
|
5380
|
+
** ^Strings returned by sqlite3_column_text16() always have the endianness
|
|
5381
|
+
** which is native to the platform, regardless of the text encoding set
|
|
5382
|
+
** for the database.
|
|
5383
|
+
**
|
|
5380
5384
|
** <b>Warning:</b> ^The object returned by [sqlite3_column_value()] is an
|
|
5381
5385
|
** [unprotected sqlite3_value] object. In a multithreaded environment,
|
|
5382
5386
|
** an unprotected sqlite3_value object may only be used safely with
|
|
@@ -5390,7 +5394,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
5390
5394
|
** [application-defined SQL functions] or [virtual tables], not within
|
|
5391
5395
|
** top-level application code.
|
|
5392
5396
|
**
|
|
5393
|
-
**
|
|
5397
|
+
** These routines may attempt to convert the datatype of the result.
|
|
5394
5398
|
** ^For example, if the internal representation is FLOAT and a text result
|
|
5395
5399
|
** is requested, [sqlite3_snprintf()] is used internally to perform the
|
|
5396
5400
|
** conversion automatically. ^(The following table details the conversions
|
|
@@ -5415,7 +5419,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
5415
5419
|
** <tr><td> TEXT <td> BLOB <td> No change
|
|
5416
5420
|
** <tr><td> BLOB <td> INTEGER <td> [CAST] to INTEGER
|
|
5417
5421
|
** <tr><td> BLOB <td> FLOAT <td> [CAST] to REAL
|
|
5418
|
-
** <tr><td> BLOB <td> TEXT <td>
|
|
5422
|
+
** <tr><td> BLOB <td> TEXT <td> [CAST] to TEXT, ensure zero terminator
|
|
5419
5423
|
** </table>
|
|
5420
5424
|
** </blockquote>)^
|
|
5421
5425
|
**
|
|
@@ -10165,7 +10169,7 @@ SQLITE_API int sqlite3_vtab_in_next(sqlite3_value *pVal, sqlite3_value **ppOut);
|
|
|
10165
10169
|
** ^When xBestIndex returns, the sqlite3_value object returned by
|
|
10166
10170
|
** sqlite3_vtab_rhs_value() is automatically deallocated.
|
|
10167
10171
|
**
|
|
10168
|
-
** The "_rhs_" in the name of this routine is an
|
|
10172
|
+
** The "_rhs_" in the name of this routine is an abbreviation for
|
|
10169
10173
|
** "Right-Hand Side".
|
|
10170
10174
|
*/
|
|
10171
10175
|
SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **ppVal);
|
|
@@ -20463,7 +20467,12 @@ SQLITE_PRIVATE int sqlite3VtabCallCreate(sqlite3*, int, const char *, char **);
|
|
|
20463
20467
|
SQLITE_PRIVATE int sqlite3VtabCallConnect(Parse*, Table*);
|
|
20464
20468
|
SQLITE_PRIVATE int sqlite3VtabCallDestroy(sqlite3*, int, const char *);
|
|
20465
20469
|
SQLITE_PRIVATE int sqlite3VtabBegin(sqlite3 *, VTable *);
|
|
20470
|
+
|
|
20466
20471
|
SQLITE_PRIVATE FuncDef *sqlite3VtabOverloadFunction(sqlite3 *,FuncDef*, int nArg, Expr*);
|
|
20472
|
+
#if (defined(SQLITE_ENABLE_DBPAGE_VTAB) || defined(SQLITE_TEST)) \
|
|
20473
|
+
&& !defined(SQLITE_OMIT_VIRTUALTABLE)
|
|
20474
|
+
SQLITE_PRIVATE void sqlite3VtabWriteAll(sqlite3_index_info*);
|
|
20475
|
+
#endif
|
|
20467
20476
|
SQLITE_PRIVATE sqlite3_int64 sqlite3StmtCurrentTime(sqlite3_context*);
|
|
20468
20477
|
SQLITE_PRIVATE int sqlite3VdbeParameterIndex(Vdbe*, const char*, int);
|
|
20469
20478
|
SQLITE_PRIVATE int sqlite3TransferBindings(sqlite3_stmt *, sqlite3_stmt *);
|
|
@@ -23753,7 +23762,7 @@ static int toLocaltime(
|
|
|
23753
23762
|
p->D = sLocal.tm_mday;
|
|
23754
23763
|
p->h = sLocal.tm_hour;
|
|
23755
23764
|
p->m = sLocal.tm_min;
|
|
23756
|
-
p->s = sLocal.tm_sec;
|
|
23765
|
+
p->s = sLocal.tm_sec + (p->iJD%1000)*0.001;
|
|
23757
23766
|
p->validYMD = 1;
|
|
23758
23767
|
p->validHMS = 1;
|
|
23759
23768
|
p->validJD = 0;
|
|
@@ -51006,7 +51015,8 @@ SQLITE_PRIVATE void sqlite3PcacheDrop(PgHdr *p){
|
|
|
51006
51015
|
** make it so.
|
|
51007
51016
|
*/
|
|
51008
51017
|
SQLITE_PRIVATE void sqlite3PcacheMakeDirty(PgHdr *p){
|
|
51009
|
-
assert( p->nRef>0 );
|
|
51018
|
+
assert( p->nRef>0 || p->pCache->bPurgeable==0 );
|
|
51019
|
+
testcase( p->nRef==0 );
|
|
51010
51020
|
assert( sqlite3PcachePageSanity(p) );
|
|
51011
51021
|
if( p->flags & (PGHDR_CLEAN|PGHDR_DONT_WRITE) ){ /*OPTIMIZATION-IF-FALSE*/
|
|
51012
51022
|
p->flags &= ~PGHDR_DONT_WRITE;
|
|
@@ -56138,6 +56148,9 @@ static int pager_playback(Pager *pPager, int isHot){
|
|
|
56138
56148
|
goto end_playback;
|
|
56139
56149
|
}
|
|
56140
56150
|
pPager->dbSize = mxPg;
|
|
56151
|
+
if( pPager->mxPgno<mxPg ){
|
|
56152
|
+
pPager->mxPgno = mxPg;
|
|
56153
|
+
}
|
|
56141
56154
|
}
|
|
56142
56155
|
|
|
56143
56156
|
/* Copy original pages out of the journal and back into the
|
|
@@ -65497,7 +65510,9 @@ struct MemPage {
|
|
|
65497
65510
|
u8 *apOvfl[4]; /* Pointers to the body of overflow cells */
|
|
65498
65511
|
BtShared *pBt; /* Pointer to BtShared that this page is part of */
|
|
65499
65512
|
u8 *aData; /* Pointer to disk image of the page data */
|
|
65500
|
-
u8 *aDataEnd; /* One byte past the end of
|
|
65513
|
+
u8 *aDataEnd; /* One byte past the end of the entire page - not just
|
|
65514
|
+
** the usable space, the entire page. Used to prevent
|
|
65515
|
+
** corruption-induced of buffer overflow. */
|
|
65501
65516
|
u8 *aCellIdx; /* The cell index area */
|
|
65502
65517
|
u8 *aDataOfst; /* Same as aData for leaves. aData+4 for interior */
|
|
65503
65518
|
DbPage *pDbPage; /* Pager page handle */
|
|
@@ -68282,7 +68297,7 @@ static int btreeInitPage(MemPage *pPage){
|
|
|
68282
68297
|
pPage->nOverflow = 0;
|
|
68283
68298
|
pPage->cellOffset = pPage->hdrOffset + 8 + pPage->childPtrSize;
|
|
68284
68299
|
pPage->aCellIdx = data + pPage->childPtrSize + 8;
|
|
68285
|
-
pPage->aDataEnd = pPage->aData + pBt->
|
|
68300
|
+
pPage->aDataEnd = pPage->aData + pBt->pageSize;
|
|
68286
68301
|
pPage->aDataOfst = pPage->aData + pPage->childPtrSize;
|
|
68287
68302
|
/* EVIDENCE-OF: R-37002-32774 The two-byte integer at offset 3 gives the
|
|
68288
68303
|
** number of cells on the page. */
|
|
@@ -68317,7 +68332,7 @@ static void zeroPage(MemPage *pPage, int flags){
|
|
|
68317
68332
|
u8 hdr = pPage->hdrOffset;
|
|
68318
68333
|
u16 first;
|
|
68319
68334
|
|
|
68320
|
-
assert( sqlite3PagerPagenumber(pPage->pDbPage)==pPage->pgno );
|
|
68335
|
+
assert( sqlite3PagerPagenumber(pPage->pDbPage)==pPage->pgno || CORRUPT_DB );
|
|
68321
68336
|
assert( sqlite3PagerGetExtra(pPage->pDbPage) == (void*)pPage );
|
|
68322
68337
|
assert( sqlite3PagerGetData(pPage->pDbPage) == data );
|
|
68323
68338
|
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
|
|
@@ -68333,7 +68348,7 @@ static void zeroPage(MemPage *pPage, int flags){
|
|
|
68333
68348
|
pPage->nFree = (u16)(pBt->usableSize - first);
|
|
68334
68349
|
decodeFlags(pPage, flags);
|
|
68335
68350
|
pPage->cellOffset = first;
|
|
68336
|
-
pPage->aDataEnd = &data[pBt->
|
|
68351
|
+
pPage->aDataEnd = &data[pBt->pageSize];
|
|
68337
68352
|
pPage->aCellIdx = &data[first];
|
|
68338
68353
|
pPage->aDataOfst = &data[pPage->childPtrSize];
|
|
68339
68354
|
pPage->nOverflow = 0;
|
|
@@ -68459,7 +68474,7 @@ static int getAndInitPage(
|
|
|
68459
68474
|
goto getAndInitPage_error2;
|
|
68460
68475
|
}
|
|
68461
68476
|
}
|
|
68462
|
-
assert( (*ppPage)->pgno==pgno );
|
|
68477
|
+
assert( (*ppPage)->pgno==pgno || CORRUPT_DB );
|
|
68463
68478
|
assert( (*ppPage)->aData==sqlite3PagerGetData(pDbPage) );
|
|
68464
68479
|
|
|
68465
68480
|
/* If obtaining a child page for a cursor, we must verify that the page is
|
|
@@ -71546,7 +71561,7 @@ static int moveToRoot(BtCursor *pCur){
|
|
|
71546
71561
|
pCur->curIntKey = pCur->pPage->intKey;
|
|
71547
71562
|
}
|
|
71548
71563
|
pRoot = pCur->pPage;
|
|
71549
|
-
assert( pRoot->pgno==pCur->pgnoRoot );
|
|
71564
|
+
assert( pRoot->pgno==pCur->pgnoRoot || CORRUPT_DB );
|
|
71550
71565
|
|
|
71551
71566
|
/* If pCur->pKeyInfo is not NULL, then the caller that opened this cursor
|
|
71552
71567
|
** expected to open it on an index b-tree. Otherwise, if pKeyInfo is
|
|
@@ -75214,7 +75229,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
|
|
|
75214
75229
|
assert( pPage->intKey || pX->nKey>=0 || (flags & BTREE_PREFORMAT) );
|
|
75215
75230
|
assert( pPage->leaf || !pPage->intKey );
|
|
75216
75231
|
if( pPage->nFree<0 ){
|
|
75217
|
-
if(
|
|
75232
|
+
if( pCur->eState>CURSOR_INVALID ){
|
|
75218
75233
|
rc = SQLITE_CORRUPT_BKPT;
|
|
75219
75234
|
}else{
|
|
75220
75235
|
rc = btreeComputeFreeSpace(pPage);
|
|
@@ -78835,6 +78850,7 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetPointer(
|
|
|
78835
78850
|
void (*xDestructor)(void*)
|
|
78836
78851
|
){
|
|
78837
78852
|
assert( pMem->flags==MEM_Null );
|
|
78853
|
+
vdbeMemClear(pMem);
|
|
78838
78854
|
pMem->u.zPType = zPType ? zPType : "";
|
|
78839
78855
|
pMem->z = pPtr;
|
|
78840
78856
|
pMem->flags = MEM_Null|MEM_Dyn|MEM_Subtype|MEM_Term;
|
|
@@ -90089,10 +90105,18 @@ case OP_Offset: { /* out3 */
|
|
|
90089
90105
|
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
|
|
90090
90106
|
pC = p->apCsr[pOp->p1];
|
|
90091
90107
|
pOut = &p->aMem[pOp->p3];
|
|
90092
|
-
if(
|
|
90108
|
+
if( pC==0 || pC->eCurType!=CURTYPE_BTREE ){
|
|
90093
90109
|
sqlite3VdbeMemSetNull(pOut);
|
|
90094
90110
|
}else{
|
|
90095
|
-
|
|
90111
|
+
if( pC->deferredMoveto ){
|
|
90112
|
+
rc = sqlite3VdbeFinishMoveto(pC);
|
|
90113
|
+
if( rc ) goto abort_due_to_error;
|
|
90114
|
+
}
|
|
90115
|
+
if( sqlite3BtreeEof(pC->uc.pCursor) ){
|
|
90116
|
+
sqlite3VdbeMemSetNull(pOut);
|
|
90117
|
+
}else{
|
|
90118
|
+
sqlite3VdbeMemSetInt64(pOut, sqlite3BtreeOffset(pC->uc.pCursor));
|
|
90119
|
+
}
|
|
90096
90120
|
}
|
|
90097
90121
|
break;
|
|
90098
90122
|
}
|
|
@@ -93171,6 +93195,10 @@ case OP_Rowid: { /* out2 */
|
|
|
93171
93195
|
** Move the cursor P1 to a null row. Any OP_Column operations
|
|
93172
93196
|
** that occur while the cursor is on the null row will always
|
|
93173
93197
|
** write a NULL.
|
|
93198
|
+
**
|
|
93199
|
+
** Or, if P1 is a Pseudo-Cursor (a cursor opened using OP_OpenPseudo)
|
|
93200
|
+
** just reset the cache for that cursor. This causes the row of
|
|
93201
|
+
** content held by the pseudo-cursor to be reparsed.
|
|
93174
93202
|
*/
|
|
93175
93203
|
case OP_NullRow: {
|
|
93176
93204
|
VdbeCursor *pC;
|
|
@@ -110017,19 +110045,21 @@ static int renameParseSql(
|
|
|
110017
110045
|
){
|
|
110018
110046
|
int rc;
|
|
110019
110047
|
|
|
110020
|
-
db->init.iDb = bTemp ? 1 : sqlite3FindDbName(db, zDb);
|
|
110021
|
-
|
|
110022
|
-
/* Parse the SQL statement passed as the first argument. If no error
|
|
110023
|
-
** occurs and the parse does not result in a new table, index or
|
|
110024
|
-
** trigger object, the database must be corrupt. */
|
|
110025
110048
|
sqlite3ParseObjectInit(p, db);
|
|
110049
|
+
if( zSql==0 ){
|
|
110050
|
+
return SQLITE_NOMEM;
|
|
110051
|
+
}
|
|
110052
|
+
if( sqlite3StrNICmp(zSql,"CREATE ",7)!=0 ){
|
|
110053
|
+
return SQLITE_CORRUPT_BKPT;
|
|
110054
|
+
}
|
|
110055
|
+
db->init.iDb = bTemp ? 1 : sqlite3FindDbName(db, zDb);
|
|
110026
110056
|
p->eParseMode = PARSE_MODE_RENAME;
|
|
110027
110057
|
p->db = db;
|
|
110028
110058
|
p->nQueryLoop = 1;
|
|
110029
|
-
rc =
|
|
110059
|
+
rc = sqlite3RunParser(p, zSql);
|
|
110030
110060
|
if( db->mallocFailed ) rc = SQLITE_NOMEM;
|
|
110031
110061
|
if( rc==SQLITE_OK
|
|
110032
|
-
&& p->pNewTable==0 && p->pNewIndex==0 && p->pNewTrigger==0
|
|
110062
|
+
&& NEVER(p->pNewTable==0 && p->pNewIndex==0 && p->pNewTrigger==0)
|
|
110033
110063
|
){
|
|
110034
110064
|
rc = SQLITE_CORRUPT_BKPT;
|
|
110035
110065
|
}
|
|
@@ -116783,6 +116813,11 @@ SQLITE_PRIVATE void sqlite3EndTable(
|
|
|
116783
116813
|
int addrInsLoop; /* Top of the loop for inserting rows */
|
|
116784
116814
|
Table *pSelTab; /* A table that describes the SELECT results */
|
|
116785
116815
|
|
|
116816
|
+
if( IN_SPECIAL_PARSE ){
|
|
116817
|
+
pParse->rc = SQLITE_ERROR;
|
|
116818
|
+
pParse->nErr++;
|
|
116819
|
+
return;
|
|
116820
|
+
}
|
|
116786
116821
|
regYield = ++pParse->nMem;
|
|
116787
116822
|
regRec = ++pParse->nMem;
|
|
116788
116823
|
regRowid = ++pParse->nMem;
|
|
@@ -123362,8 +123397,8 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){
|
|
|
123362
123397
|
INLINE_FUNC(likelihood, 2, INLINEFUNC_unlikely, SQLITE_FUNC_UNLIKELY),
|
|
123363
123398
|
INLINE_FUNC(likely, 1, INLINEFUNC_unlikely, SQLITE_FUNC_UNLIKELY),
|
|
123364
123399
|
#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
|
|
123365
|
-
|
|
123366
|
-
|
|
123400
|
+
{1, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_FUNC_OFFSET|SQLITE_FUNC_TYPEOF,
|
|
123401
|
+
0, 0, noopFunc, 0, 0, 0, "sqlite_offset", {0} },
|
|
123367
123402
|
#endif
|
|
123368
123403
|
FUNCTION(ltrim, 1, 1, 0, trimFunc ),
|
|
123369
123404
|
FUNCTION(ltrim, 2, 1, 0, trimFunc ),
|
|
@@ -125781,7 +125816,11 @@ SQLITE_PRIVATE void sqlite3Insert(
|
|
|
125781
125816
|
**
|
|
125782
125817
|
** This is the 2nd template.
|
|
125783
125818
|
*/
|
|
125784
|
-
if( pColumn==0
|
|
125819
|
+
if( pColumn==0
|
|
125820
|
+
&& pSelect!=0
|
|
125821
|
+
&& pTrigger==0
|
|
125822
|
+
&& xferOptimization(pParse, pTab, pSelect, onError, iDb)
|
|
125823
|
+
){
|
|
125785
125824
|
assert( !pTrigger );
|
|
125786
125825
|
assert( pList==0 );
|
|
125787
125826
|
goto insert_end;
|
|
@@ -127752,18 +127791,13 @@ static int xferOptimization(
|
|
|
127752
127791
|
int destHasUniqueIdx = 0; /* True if pDest has a UNIQUE index */
|
|
127753
127792
|
int regData, regRowid; /* Registers holding data and rowid */
|
|
127754
127793
|
|
|
127755
|
-
|
|
127756
|
-
return 0; /* Must be of the form INSERT INTO ... SELECT ... */
|
|
127757
|
-
}
|
|
127794
|
+
assert( pSelect!=0 );
|
|
127758
127795
|
if( pParse->pWith || pSelect->pWith ){
|
|
127759
127796
|
/* Do not attempt to process this query if there are an WITH clauses
|
|
127760
127797
|
** attached to it. Proceeding may generate a false "no such table: xxx"
|
|
127761
127798
|
** error if pSelect reads from a CTE named "xxx". */
|
|
127762
127799
|
return 0;
|
|
127763
127800
|
}
|
|
127764
|
-
if( sqlite3TriggerList(pParse, pDest) ){
|
|
127765
|
-
return 0; /* tab1 must not have triggers */
|
|
127766
|
-
}
|
|
127767
127801
|
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
|
127768
127802
|
if( IsVirtual(pDest) ){
|
|
127769
127803
|
return 0; /* tab1 must not be a virtual table */
|
|
@@ -142476,6 +142510,7 @@ static TriggerStep *triggerStepAllocate(
|
|
|
142476
142510
|
sqlite3 *db = pParse->db;
|
|
142477
142511
|
TriggerStep *pTriggerStep;
|
|
142478
142512
|
|
|
142513
|
+
if( pParse->nErr ) return 0;
|
|
142479
142514
|
pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep) + pName->n + 1);
|
|
142480
142515
|
if( pTriggerStep ){
|
|
142481
142516
|
char *z = (char*)&pTriggerStep[1];
|
|
@@ -148289,6 +148324,7 @@ static int codeAllEqualityTerms(
|
|
|
148289
148324
|
VdbeCoverageIf(v, bRev!=0);
|
|
148290
148325
|
VdbeComment((v, "begin skip-scan on %s", pIdx->zName));
|
|
148291
148326
|
j = sqlite3VdbeAddOp0(v, OP_Goto);
|
|
148327
|
+
assert( pLevel->addrSkip==0 );
|
|
148292
148328
|
pLevel->addrSkip = sqlite3VdbeAddOp4Int(v, (bRev?OP_SeekLT:OP_SeekGT),
|
|
148293
148329
|
iIdxCur, 0, regBase, nSkip);
|
|
148294
148330
|
VdbeCoverageIf(v, bRev==0);
|
|
@@ -148886,6 +148922,7 @@ static SQLITE_NOINLINE void filterPullDown(
|
|
|
148886
148922
|
WhereLevel *pLevel = &pWInfo->a[iLevel];
|
|
148887
148923
|
WhereLoop *pLoop = pLevel->pWLoop;
|
|
148888
148924
|
if( pLevel->regFilter==0 ) continue;
|
|
148925
|
+
if( pLevel->pWLoop->nSkip ) continue;
|
|
148889
148926
|
/* ,--- Because sqlite3ConstructBloomFilter() has will not have set
|
|
148890
148927
|
** vvvvv--' pLevel->regFilter if this were true. */
|
|
148891
148928
|
if( NEVER(pLoop->prereq & notReady) ) continue;
|
|
@@ -149020,7 +149057,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
|
|
|
149020
149057
|
int iReg; /* P3 Value for OP_VFilter */
|
|
149021
149058
|
int addrNotFound;
|
|
149022
149059
|
int nConstraint = pLoop->nLTerm;
|
|
149023
|
-
int iIn; /* Counter for IN constraints */
|
|
149024
149060
|
|
|
149025
149061
|
iReg = sqlite3GetTempRange(pParse, nConstraint+2);
|
|
149026
149062
|
addrNotFound = pLevel->addrBrk;
|
|
@@ -149066,50 +149102,54 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
|
|
|
149066
149102
|
pLevel->op = pWInfo->eOnePass ? OP_Noop : OP_VNext;
|
|
149067
149103
|
pLevel->p2 = sqlite3VdbeCurrentAddr(v);
|
|
149068
149104
|
assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 );
|
|
149069
|
-
|
|
149070
|
-
|
|
149071
|
-
}else{
|
|
149072
|
-
iIn = 0;
|
|
149073
|
-
}
|
|
149074
|
-
for(j=nConstraint-1; j>=0; j--){
|
|
149075
|
-
int bIn; /* True to generate byte code to loop over RHS IN values */
|
|
149105
|
+
|
|
149106
|
+
for(j=0; j<nConstraint; j++){
|
|
149076
149107
|
pTerm = pLoop->aLTerm[j];
|
|
149108
|
+
if( j<16 && (pLoop->u.vtab.omitMask>>j)&1 ){
|
|
149109
|
+
disableTerm(pLevel, pTerm);
|
|
149110
|
+
continue;
|
|
149111
|
+
}
|
|
149077
149112
|
if( (pTerm->eOperator & WO_IN)!=0
|
|
149078
149113
|
&& (SMASKBIT32(j) & pLoop->u.vtab.mHandleIn)==0
|
|
149114
|
+
&& !db->mallocFailed
|
|
149079
149115
|
){
|
|
149080
|
-
bIn = 1;
|
|
149081
|
-
}else{
|
|
149082
|
-
bIn = 0;
|
|
149083
|
-
}
|
|
149084
|
-
if( bIn ) iIn--;
|
|
149085
|
-
if( j<16 && (pLoop->u.vtab.omitMask>>j)&1 ){
|
|
149086
|
-
disableTerm(pLevel, pTerm);
|
|
149087
|
-
}else if( bIn && sqlite3ExprVectorSize(pTerm->pExpr->pLeft)==1 ){
|
|
149088
149116
|
Expr *pCompare; /* The comparison operator */
|
|
149089
149117
|
Expr *pRight; /* RHS of the comparison */
|
|
149090
149118
|
VdbeOp *pOp; /* Opcode to access the value of the IN constraint */
|
|
149119
|
+
int iIn; /* IN loop corresponding to the j-th constraint */
|
|
149091
149120
|
|
|
149092
149121
|
/* Reload the constraint value into reg[iReg+j+2]. The same value
|
|
149093
149122
|
** was loaded into the same register prior to the OP_VFilter, but
|
|
149094
149123
|
** the xFilter implementation might have changed the datatype or
|
|
149095
|
-
** encoding of the value in the register, so it *must* be reloaded.
|
|
149096
|
-
|
|
149097
|
-
|
|
149098
|
-
assert( iIn>=0 && iIn<pLevel->u.in.nIn );
|
|
149124
|
+
** encoding of the value in the register, so it *must* be reloaded.
|
|
149125
|
+
*/
|
|
149126
|
+
for(iIn=0; ALWAYS(iIn<pLevel->u.in.nIn); iIn++){
|
|
149099
149127
|
pOp = sqlite3VdbeGetOp(v, pLevel->u.in.aInLoop[iIn].addrInTop);
|
|
149100
|
-
|
|
149101
|
-
|
|
149102
|
-
|
|
149103
|
-
|
|
149104
|
-
|
|
149128
|
+
if( (pOp->opcode==OP_Column && pOp->p3==iReg+j+2)
|
|
149129
|
+
|| (pOp->opcode==OP_Rowid && pOp->p2==iReg+j+2)
|
|
149130
|
+
){
|
|
149131
|
+
testcase( pOp->opcode==OP_Rowid );
|
|
149132
|
+
sqlite3VdbeAddOp3(v, pOp->opcode, pOp->p1, pOp->p2, pOp->p3);
|
|
149133
|
+
break;
|
|
149134
|
+
}
|
|
149105
149135
|
}
|
|
149106
149136
|
|
|
149107
149137
|
/* Generate code that will continue to the next row if
|
|
149108
|
-
** the IN constraint is not satisfied
|
|
149138
|
+
** the IN constraint is not satisfied
|
|
149139
|
+
*/
|
|
149109
149140
|
pCompare = sqlite3PExpr(pParse, TK_EQ, 0, 0);
|
|
149110
|
-
|
|
149111
|
-
|
|
149112
|
-
|
|
149141
|
+
if( !db->mallocFailed ){
|
|
149142
|
+
int iFld = pTerm->u.x.iField;
|
|
149143
|
+
Expr *pLeft = pTerm->pExpr->pLeft;
|
|
149144
|
+
assert( pLeft!=0 );
|
|
149145
|
+
if( iFld>0 ){
|
|
149146
|
+
assert( pLeft->op==TK_VECTOR );
|
|
149147
|
+
assert( ExprUseXList(pLeft) );
|
|
149148
|
+
assert( iFld<=pLeft->x.pList->nExpr );
|
|
149149
|
+
pCompare->pLeft = pLeft->x.pList->a[iFld-1].pExpr;
|
|
149150
|
+
}else{
|
|
149151
|
+
pCompare->pLeft = pLeft;
|
|
149152
|
+
}
|
|
149113
149153
|
pCompare->pRight = pRight = sqlite3Expr(db, TK_REGISTER, 0);
|
|
149114
149154
|
if( pRight ){
|
|
149115
149155
|
pRight->iTable = iReg+j+2;
|
|
@@ -149118,11 +149158,11 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
|
|
|
149118
149158
|
);
|
|
149119
149159
|
}
|
|
149120
149160
|
pCompare->pLeft = 0;
|
|
149121
|
-
sqlite3ExprDelete(db, pCompare);
|
|
149122
149161
|
}
|
|
149162
|
+
sqlite3ExprDelete(db, pCompare);
|
|
149123
149163
|
}
|
|
149124
149164
|
}
|
|
149125
|
-
|
|
149165
|
+
|
|
149126
149166
|
/* These registers need to be preserved in case there is an IN operator
|
|
149127
149167
|
** loop. So we could deallocate the registers here (and potentially
|
|
149128
149168
|
** reuse them later) if (pLoop->wsFlags & WHERE_IN_ABLE)==0. But it seems
|
|
@@ -149832,6 +149872,14 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
|
|
|
149832
149872
|
** the initialization of the right-hand operand of the vector comparison
|
|
149833
149873
|
** might not occur, or might occur only in an OR branch that is not
|
|
149834
149874
|
** taken. dbsqlfuzz 80a9fade844b4fb43564efc972bcb2c68270f5d1.
|
|
149875
|
+
**
|
|
149876
|
+
** 2022-03-03: Do not push down expressions that involve subqueries.
|
|
149877
|
+
** The subquery might get coded as a subroutine. Any table-references
|
|
149878
|
+
** in the subquery might be resolved to index-references for the index on
|
|
149879
|
+
** the OR branch in which the subroutine is coded. But if the subroutine
|
|
149880
|
+
** is invoked from a different OR branch that uses a different index, such
|
|
149881
|
+
** index-references will not work. tag-20220303a
|
|
149882
|
+
** https://sqlite.org/forum/forumpost/36937b197273d403
|
|
149835
149883
|
*/
|
|
149836
149884
|
if( pWC->nTerm>1 ){
|
|
149837
149885
|
int iTerm;
|
|
@@ -149845,7 +149893,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
|
|
|
149845
149893
|
continue;
|
|
149846
149894
|
}
|
|
149847
149895
|
if( (pWC->a[iTerm].eOperator & WO_ALL)==0 ) continue;
|
|
149848
|
-
|
|
149896
|
+
if( ExprHasProperty(pExpr, EP_Subquery) ) continue; /* tag-20220303a */
|
|
149849
149897
|
pExpr = sqlite3ExprDup(db, pExpr, 0);
|
|
149850
149898
|
pAndExpr = sqlite3ExprAnd(pParse, pAndExpr, pExpr);
|
|
149851
149899
|
}
|
|
@@ -153122,7 +153170,10 @@ static SQLITE_NOINLINE void sqlite3ConstructBloomFilter(
|
|
|
153122
153170
|
pLoop->wsFlags &= ~WHERE_BLOOMFILTER;
|
|
153123
153171
|
if( OptimizationDisabled(pParse->db, SQLITE_BloomPulldown) ) break;
|
|
153124
153172
|
while( ++iLevel < pWInfo->nLevel ){
|
|
153173
|
+
const SrcItem *pTabItem;
|
|
153125
153174
|
pLevel = &pWInfo->a[iLevel];
|
|
153175
|
+
pTabItem = &pWInfo->pTabList->a[pLevel->iFrom];
|
|
153176
|
+
if( pTabItem->fg.jointype & JT_LEFT ) continue;
|
|
153126
153177
|
pLoop = pLevel->pWLoop;
|
|
153127
153178
|
if( NEVER(pLoop==0) ) continue;
|
|
153128
153179
|
if( pLoop->prereq & notReady ) continue;
|
|
@@ -155805,7 +155856,6 @@ SQLITE_API int sqlite3_vtab_rhs_value(
|
|
|
155805
155856
|
return rc;
|
|
155806
155857
|
}
|
|
155807
155858
|
|
|
155808
|
-
|
|
155809
155859
|
/*
|
|
155810
155860
|
** Return true if ORDER BY clause may be handled as DISTINCT.
|
|
155811
155861
|
*/
|
|
@@ -155817,6 +155867,22 @@ SQLITE_API int sqlite3_vtab_distinct(sqlite3_index_info *pIdxInfo){
|
|
|
155817
155867
|
return pHidden->eDistinct;
|
|
155818
155868
|
}
|
|
155819
155869
|
|
|
155870
|
+
#if (defined(SQLITE_ENABLE_DBPAGE_VTAB) || defined(SQLITE_TEST)) \
|
|
155871
|
+
&& !defined(SQLITE_OMIT_VIRTUALTABLE)
|
|
155872
|
+
/*
|
|
155873
|
+
** Cause the prepared statement that is associated with a call to
|
|
155874
|
+
** xBestIndex to open write transactions on all attached schemas.
|
|
155875
|
+
** This is used by the (built-in) sqlite_dbpage virtual table.
|
|
155876
|
+
*/
|
|
155877
|
+
SQLITE_PRIVATE void sqlite3VtabWriteAll(sqlite3_index_info *pIdxInfo){
|
|
155878
|
+
HiddenIndexInfo *pHidden = (HiddenIndexInfo*)&pIdxInfo[1];
|
|
155879
|
+
Parse *pParse = pHidden->pParse;
|
|
155880
|
+
int nDb = pParse->db->nDb;
|
|
155881
|
+
int i;
|
|
155882
|
+
for(i=0; i<nDb; i++) sqlite3BeginWriteOperation(pParse, 0, i);
|
|
155883
|
+
}
|
|
155884
|
+
#endif
|
|
155885
|
+
|
|
155820
155886
|
/*
|
|
155821
155887
|
** Add all WhereLoop objects for a table of the join identified by
|
|
155822
155888
|
** pBuilder->pNew->iTab. That table is guaranteed to be a virtual table.
|
|
@@ -158176,6 +158242,10 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
|
|
|
158176
158242
|
Index *pPk = sqlite3PrimaryKeyIndex(pTab);
|
|
158177
158243
|
x = pPk->aiColumn[x];
|
|
158178
158244
|
assert( x>=0 );
|
|
158245
|
+
#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
|
|
158246
|
+
}else if( pOp->opcode==OP_Offset ){
|
|
158247
|
+
/* Do not need to translate the column number */
|
|
158248
|
+
#endif
|
|
158179
158249
|
}else{
|
|
158180
158250
|
testcase( x!=sqlite3StorageColumnToTable(pTab,x) );
|
|
158181
158251
|
x = sqlite3StorageColumnToTable(pTab,x);
|
|
@@ -159175,7 +159245,11 @@ static int disallowAggregatesInOrderByCb(Walker *pWalker, Expr *pExpr){
|
|
|
159175
159245
|
*/
|
|
159176
159246
|
SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
|
|
159177
159247
|
int rc = SQLITE_OK;
|
|
159178
|
-
if( p->pWin
|
|
159248
|
+
if( p->pWin
|
|
159249
|
+
&& p->pPrior==0
|
|
159250
|
+
&& ALWAYS((p->selFlags & SF_WinRewrite)==0)
|
|
159251
|
+
&& ALWAYS(!IN_RENAME_OBJECT)
|
|
159252
|
+
){
|
|
159179
159253
|
Vdbe *v = sqlite3GetVdbe(pParse);
|
|
159180
159254
|
sqlite3 *db = pParse->db;
|
|
159181
159255
|
Select *pSub = 0; /* The subquery */
|
|
@@ -159250,6 +159324,7 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
|
|
|
159250
159324
|
for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
|
|
159251
159325
|
ExprList *pArgs;
|
|
159252
159326
|
assert( ExprUseXList(pWin->pOwner) );
|
|
159327
|
+
assert( pWin->pFunc!=0 );
|
|
159253
159328
|
pArgs = pWin->pOwner->x.pList;
|
|
159254
159329
|
if( pWin->pFunc->funcFlags & SQLITE_FUNC_SUBTYPE ){
|
|
159255
159330
|
selectWindowRewriteEList(pParse, pMWin, pSrc, pArgs, pTab, &pSublist);
|
|
@@ -210066,6 +210141,7 @@ static int dbpageBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){
|
|
|
210066
210141
|
){
|
|
210067
210142
|
pIdxInfo->orderByConsumed = 1;
|
|
210068
210143
|
}
|
|
210144
|
+
sqlite3VtabWriteAll(pIdxInfo);
|
|
210069
210145
|
return SQLITE_OK;
|
|
210070
210146
|
}
|
|
210071
210147
|
|
|
@@ -232420,7 +232496,7 @@ static int fts5SorterNext(Fts5Cursor *pCsr){
|
|
|
232420
232496
|
rc = sqlite3_step(pSorter->pStmt);
|
|
232421
232497
|
if( rc==SQLITE_DONE ){
|
|
232422
232498
|
rc = SQLITE_OK;
|
|
232423
|
-
CsrFlagSet(pCsr, FTS5CSR_EOF);
|
|
232499
|
+
CsrFlagSet(pCsr, FTS5CSR_EOF|FTS5CSR_REQUIRE_CONTENT);
|
|
232424
232500
|
}else if( rc==SQLITE_ROW ){
|
|
232425
232501
|
const u8 *a;
|
|
232426
232502
|
const u8 *aBlob;
|
|
@@ -234409,7 +234485,7 @@ static void fts5SourceIdFunc(
|
|
|
234409
234485
|
){
|
|
234410
234486
|
assert( nArg==0 );
|
|
234411
234487
|
UNUSED_PARAM2(nArg, apUnused);
|
|
234412
|
-
sqlite3_result_text(pCtx, "fts5: 2022-
|
|
234488
|
+
sqlite3_result_text(pCtx, "fts5: 2022-03-12 13:37:29 38c210fdd258658321c85ec9c01a072fda3ada94540e3239d29b34dc547a8cbc", -1, SQLITE_TRANSIENT);
|
|
234413
234489
|
}
|
|
234414
234490
|
|
|
234415
234491
|
/*
|
|
@@ -239527,7 +239603,7 @@ SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
|
|
|
239527
239603
|
** Purpose: SQLite3 Multiple Ciphers version numbers
|
|
239528
239604
|
** Author: Ulrich Telle
|
|
239529
239605
|
** Created: 2020-08-05
|
|
239530
|
-
** Copyright: (c) 2020-
|
|
239606
|
+
** Copyright: (c) 2020-2022 Ulrich Telle
|
|
239531
239607
|
** License: MIT
|
|
239532
239608
|
*/
|
|
239533
239609
|
|
|
@@ -239538,9 +239614,9 @@ SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
|
|
|
239538
239614
|
|
|
239539
239615
|
#define SQLITE3MC_VERSION_MAJOR 1
|
|
239540
239616
|
#define SQLITE3MC_VERSION_MINOR 3
|
|
239541
|
-
#define SQLITE3MC_VERSION_RELEASE
|
|
239617
|
+
#define SQLITE3MC_VERSION_RELEASE 9
|
|
239542
239618
|
#define SQLITE3MC_VERSION_SUBRELEASE 0
|
|
239543
|
-
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.3.
|
|
239619
|
+
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.3.9"
|
|
239544
239620
|
|
|
239545
239621
|
#endif /* SQLITE3MC_VERSION_H_ */
|
|
239546
239622
|
/*** End of #include "sqlite3mc_version.h" ***/
|
|
@@ -239699,9 +239775,9 @@ extern "C" {
|
|
|
239699
239775
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
239700
239776
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
239701
239777
|
*/
|
|
239702
|
-
#define SQLITE_VERSION "3.38.
|
|
239703
|
-
#define SQLITE_VERSION_NUMBER
|
|
239704
|
-
#define SQLITE_SOURCE_ID "2022-
|
|
239778
|
+
#define SQLITE_VERSION "3.38.1"
|
|
239779
|
+
#define SQLITE_VERSION_NUMBER 3038001
|
|
239780
|
+
#define SQLITE_SOURCE_ID "2022-03-12 13:37:29 38c210fdd258658321c85ec9c01a072fda3ada94540e3239d29b34dc547a8cbc"
|
|
239705
239781
|
|
|
239706
239782
|
/*
|
|
239707
239783
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
@@ -244532,6 +244608,10 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
244532
244608
|
** even empty strings, are always zero-terminated. ^The return
|
|
244533
244609
|
** value from sqlite3_column_blob() for a zero-length BLOB is a NULL pointer.
|
|
244534
244610
|
**
|
|
244611
|
+
** ^Strings returned by sqlite3_column_text16() always have the endianness
|
|
244612
|
+
** which is native to the platform, regardless of the text encoding set
|
|
244613
|
+
** for the database.
|
|
244614
|
+
**
|
|
244535
244615
|
** <b>Warning:</b> ^The object returned by [sqlite3_column_value()] is an
|
|
244536
244616
|
** [unprotected sqlite3_value] object. In a multithreaded environment,
|
|
244537
244617
|
** an unprotected sqlite3_value object may only be used safely with
|
|
@@ -244545,7 +244625,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
244545
244625
|
** [application-defined SQL functions] or [virtual tables], not within
|
|
244546
244626
|
** top-level application code.
|
|
244547
244627
|
**
|
|
244548
|
-
**
|
|
244628
|
+
** These routines may attempt to convert the datatype of the result.
|
|
244549
244629
|
** ^For example, if the internal representation is FLOAT and a text result
|
|
244550
244630
|
** is requested, [sqlite3_snprintf()] is used internally to perform the
|
|
244551
244631
|
** conversion automatically. ^(The following table details the conversions
|
|
@@ -244570,7 +244650,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
244570
244650
|
** <tr><td> TEXT <td> BLOB <td> No change
|
|
244571
244651
|
** <tr><td> BLOB <td> INTEGER <td> [CAST] to INTEGER
|
|
244572
244652
|
** <tr><td> BLOB <td> FLOAT <td> [CAST] to REAL
|
|
244573
|
-
** <tr><td> BLOB <td> TEXT <td>
|
|
244653
|
+
** <tr><td> BLOB <td> TEXT <td> [CAST] to TEXT, ensure zero terminator
|
|
244574
244654
|
** </table>
|
|
244575
244655
|
** </blockquote>)^
|
|
244576
244656
|
**
|
|
@@ -249320,7 +249400,7 @@ SQLITE_API int sqlite3_vtab_in_next(sqlite3_value *pVal, sqlite3_value **ppOut);
|
|
|
249320
249400
|
** ^When xBestIndex returns, the sqlite3_value object returned by
|
|
249321
249401
|
** sqlite3_vtab_rhs_value() is automatically deallocated.
|
|
249322
249402
|
**
|
|
249323
|
-
** The "_rhs_" in the name of this routine is an
|
|
249403
|
+
** The "_rhs_" in the name of this routine is an abbreviation for
|
|
249324
249404
|
** "Right-Hand Side".
|
|
249325
249405
|
*/
|
|
249326
249406
|
SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **ppVal);
|
|
@@ -262467,7 +262547,7 @@ sqlite3mcBtreeSetPageSize(Btree* p, int pageSize, int nReserve, int iFix)
|
|
|
262467
262547
|
** Change 4: Call sqlite3mcBtreeSetPageSize instead of sqlite3BtreeSetPageSize for main database
|
|
262468
262548
|
** (sqlite3mcBtreeSetPageSize allows to reduce the number of reserved bytes)
|
|
262469
262549
|
**
|
|
262470
|
-
** This code is generated by the script rekeyvacuum.sh from SQLite version 3.38.
|
|
262550
|
+
** This code is generated by the script rekeyvacuum.sh from SQLite version 3.38.1 amalgamation.
|
|
262471
262551
|
*/
|
|
262472
262552
|
SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3mcRunVacuumForRekey(
|
|
262473
262553
|
char **pzErrMsg, /* Write error message here */
|
package/deps/sqlite3/sqlite3.h
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
** Purpose: SQLite3 Multiple Ciphers version numbers
|
|
21
21
|
** Author: Ulrich Telle
|
|
22
22
|
** Created: 2020-08-05
|
|
23
|
-
** Copyright: (c) 2020-
|
|
23
|
+
** Copyright: (c) 2020-2022 Ulrich Telle
|
|
24
24
|
** License: MIT
|
|
25
25
|
*/
|
|
26
26
|
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
|
|
32
32
|
#define SQLITE3MC_VERSION_MAJOR 1
|
|
33
33
|
#define SQLITE3MC_VERSION_MINOR 3
|
|
34
|
-
#define SQLITE3MC_VERSION_RELEASE
|
|
34
|
+
#define SQLITE3MC_VERSION_RELEASE 9
|
|
35
35
|
#define SQLITE3MC_VERSION_SUBRELEASE 0
|
|
36
|
-
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.3.
|
|
36
|
+
#define SQLITE3MC_VERSION_STRING "SQLite3 Multiple Ciphers 1.3.9"
|
|
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.38.
|
|
196
|
-
#define SQLITE_VERSION_NUMBER
|
|
197
|
-
#define SQLITE_SOURCE_ID "2022-
|
|
195
|
+
#define SQLITE_VERSION "3.38.1"
|
|
196
|
+
#define SQLITE_VERSION_NUMBER 3038001
|
|
197
|
+
#define SQLITE_SOURCE_ID "2022-03-12 13:37:29 38c210fdd258658321c85ec9c01a072fda3ada94540e3239d29b34dc547a8cbc"
|
|
198
198
|
|
|
199
199
|
/*
|
|
200
200
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
@@ -5025,6 +5025,10 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
5025
5025
|
** even empty strings, are always zero-terminated. ^The return
|
|
5026
5026
|
** value from sqlite3_column_blob() for a zero-length BLOB is a NULL pointer.
|
|
5027
5027
|
**
|
|
5028
|
+
** ^Strings returned by sqlite3_column_text16() always have the endianness
|
|
5029
|
+
** which is native to the platform, regardless of the text encoding set
|
|
5030
|
+
** for the database.
|
|
5031
|
+
**
|
|
5028
5032
|
** <b>Warning:</b> ^The object returned by [sqlite3_column_value()] is an
|
|
5029
5033
|
** [unprotected sqlite3_value] object. In a multithreaded environment,
|
|
5030
5034
|
** an unprotected sqlite3_value object may only be used safely with
|
|
@@ -5038,7 +5042,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
5038
5042
|
** [application-defined SQL functions] or [virtual tables], not within
|
|
5039
5043
|
** top-level application code.
|
|
5040
5044
|
**
|
|
5041
|
-
**
|
|
5045
|
+
** These routines may attempt to convert the datatype of the result.
|
|
5042
5046
|
** ^For example, if the internal representation is FLOAT and a text result
|
|
5043
5047
|
** is requested, [sqlite3_snprintf()] is used internally to perform the
|
|
5044
5048
|
** conversion automatically. ^(The following table details the conversions
|
|
@@ -5063,7 +5067,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
5063
5067
|
** <tr><td> TEXT <td> BLOB <td> No change
|
|
5064
5068
|
** <tr><td> BLOB <td> INTEGER <td> [CAST] to INTEGER
|
|
5065
5069
|
** <tr><td> BLOB <td> FLOAT <td> [CAST] to REAL
|
|
5066
|
-
** <tr><td> BLOB <td> TEXT <td>
|
|
5070
|
+
** <tr><td> BLOB <td> TEXT <td> [CAST] to TEXT, ensure zero terminator
|
|
5067
5071
|
** </table>
|
|
5068
5072
|
** </blockquote>)^
|
|
5069
5073
|
**
|
|
@@ -9813,7 +9817,7 @@ SQLITE_API int sqlite3_vtab_in_next(sqlite3_value *pVal, sqlite3_value **ppOut);
|
|
|
9813
9817
|
** ^When xBestIndex returns, the sqlite3_value object returned by
|
|
9814
9818
|
** sqlite3_vtab_rhs_value() is automatically deallocated.
|
|
9815
9819
|
**
|
|
9816
|
-
** The "_rhs_" in the name of this routine is an
|
|
9820
|
+
** The "_rhs_" in the name of this routine is an abbreviation for
|
|
9817
9821
|
** "Right-Hand Side".
|
|
9818
9822
|
*/
|
|
9819
9823
|
SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **ppVal);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "better-sqlite3-multiple-ciphers",
|
|
3
|
-
"version": "7.5.1-beta.
|
|
3
|
+
"version": "7.5.1-beta.3",
|
|
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>",
|