update: sqlite 3.47.1.

This commit is contained in:
Cory McWilliams 2024-11-25 13:16:20 -05:00
parent df1e6711af
commit a08bba438e
4 changed files with 107 additions and 45 deletions

View File

@ -7,7 +7,7 @@ VERSION_CODE := 30
VERSION_NUMBER := 0.0.25-wip VERSION_NUMBER := 0.0.25-wip
VERSION_NAME := This program kills fascists. VERSION_NAME := This program kills fascists.
SQLITE_URL := https://www.sqlite.org/2024/sqlite-amalgamation-3470000.zip SQLITE_URL := https://www.sqlite.org/2024/sqlite-amalgamation-3470100.zip
BUNDLETOOL_URL := https://github.com/google/bundletool/releases/download/1.17.0/bundletool-all-1.17.0.jar BUNDLETOOL_URL := https://github.com/google/bundletool/releases/download/1.17.0/bundletool-all-1.17.0.jar
APPIMAGETOOL_URL := https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage APPIMAGETOOL_URL := https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
APPIMAGETOOL_MD5 := e989fadfc4d685fd3d6aeeb9b525d74d out/appimagetool APPIMAGETOOL_MD5 := e989fadfc4d685fd3d6aeeb9b525d74d out/appimagetool

17
deps/sqlite/shell.c vendored
View File

@ -460,7 +460,7 @@ char *sqlite3_fgets(char *buf, int sz, FILE *in){
** that into UTF-8. Otherwise, non-ASCII characters all get translated ** that into UTF-8. Otherwise, non-ASCII characters all get translated
** into '?'. ** into '?'.
*/ */
wchar_t *b1 = malloc( sz*sizeof(wchar_t) ); wchar_t *b1 = sqlite3_malloc( sz*sizeof(wchar_t) );
if( b1==0 ) return 0; if( b1==0 ) return 0;
_setmode(_fileno(in), IsConsole(in) ? _O_WTEXT : _O_U8TEXT); _setmode(_fileno(in), IsConsole(in) ? _O_WTEXT : _O_U8TEXT);
if( fgetws(b1, sz/4, in)==0 ){ if( fgetws(b1, sz/4, in)==0 ){
@ -526,7 +526,7 @@ int sqlite3_fputs(const char *z, FILE *out){
** use O_U8TEXT for everything in text mode. ** use O_U8TEXT for everything in text mode.
*/ */
int sz = (int)strlen(z); int sz = (int)strlen(z);
wchar_t *b1 = malloc( (sz+1)*sizeof(wchar_t) ); wchar_t *b1 = sqlite3_malloc( (sz+1)*sizeof(wchar_t) );
if( b1==0 ) return 0; if( b1==0 ) return 0;
sz = MultiByteToWideChar(CP_UTF8, 0, z, sz, b1, sz); sz = MultiByteToWideChar(CP_UTF8, 0, z, sz, b1, sz);
b1[sz] = 0; b1[sz] = 0;
@ -6833,7 +6833,7 @@ static int seriesBestIndex(
continue; continue;
} }
if( pConstraint->iColumn<SERIES_COLUMN_START ){ if( pConstraint->iColumn<SERIES_COLUMN_START ){
if( pConstraint->iColumn==SERIES_COLUMN_VALUE ){ if( pConstraint->iColumn==SERIES_COLUMN_VALUE && pConstraint->usable ){
switch( op ){ switch( op ){
case SQLITE_INDEX_CONSTRAINT_EQ: case SQLITE_INDEX_CONSTRAINT_EQ:
case SQLITE_INDEX_CONSTRAINT_IS: { case SQLITE_INDEX_CONSTRAINT_IS: {
@ -6841,7 +6841,9 @@ static int seriesBestIndex(
idxNum &= ~0x3300; idxNum &= ~0x3300;
aIdx[5] = i; aIdx[5] = i;
aIdx[6] = -1; aIdx[6] = -1;
#ifndef ZERO_ARGUMENT_GENERATE_SERIES
bStartSeen = 1; bStartSeen = 1;
#endif
break; break;
} }
case SQLITE_INDEX_CONSTRAINT_GE: { case SQLITE_INDEX_CONSTRAINT_GE: {
@ -6849,7 +6851,9 @@ static int seriesBestIndex(
idxNum |= 0x0100; idxNum |= 0x0100;
idxNum &= ~0x0200; idxNum &= ~0x0200;
aIdx[5] = i; aIdx[5] = i;
#ifndef ZERO_ARGUMENT_GENERATE_SERIES
bStartSeen = 1; bStartSeen = 1;
#endif
break; break;
} }
case SQLITE_INDEX_CONSTRAINT_GT: { case SQLITE_INDEX_CONSTRAINT_GT: {
@ -6857,7 +6861,9 @@ static int seriesBestIndex(
idxNum |= 0x0200; idxNum |= 0x0200;
idxNum &= ~0x0100; idxNum &= ~0x0100;
aIdx[5] = i; aIdx[5] = i;
#ifndef ZERO_ARGUMENT_GENERATE_SERIES
bStartSeen = 1; bStartSeen = 1;
#endif
break; break;
} }
case SQLITE_INDEX_CONSTRAINT_LE: { case SQLITE_INDEX_CONSTRAINT_LE: {
@ -14169,7 +14175,7 @@ static int idxCreateVtabSchema(sqlite3expert *p, char **pzErrmsg){
}else{ }else{
IdxTable *pTab; IdxTable *pTab;
rc = idxGetTableInfo(p->db, zName, &pTab, pzErrmsg); rc = idxGetTableInfo(p->db, zName, &pTab, pzErrmsg);
if( rc==SQLITE_OK ){ if( rc==SQLITE_OK && ALWAYS(pTab!=0) ){
int i; int i;
char *zInner = 0; char *zInner = 0;
char *zOuter = 0; char *zOuter = 0;
@ -31840,7 +31846,6 @@ static QuickScanState quickscan(char *zLine, QuickScanState qss,
char cWait = (char)qss; /* intentional narrowing loss */ char cWait = (char)qss; /* intentional narrowing loss */
if( cWait==0 ){ if( cWait==0 ){
PlainScan: PlainScan:
assert( cWait==0 );
while( (cin = *zLine++)!=0 ){ while( (cin = *zLine++)!=0 ){
if( IsSpace(cin) ) if( IsSpace(cin) )
continue; continue;
@ -31892,7 +31897,6 @@ static QuickScanState quickscan(char *zLine, QuickScanState qss,
if( *zLine != '/' ) if( *zLine != '/' )
continue; continue;
++zLine; ++zLine;
cWait = 0;
CONTINUE_PROMPT_AWAITC(pst, 0); CONTINUE_PROMPT_AWAITC(pst, 0);
qss = QSS_SETV(qss, 0); qss = QSS_SETV(qss, 0);
goto PlainScan; goto PlainScan;
@ -31904,7 +31908,6 @@ static QuickScanState quickscan(char *zLine, QuickScanState qss,
} }
deliberate_fall_through; deliberate_fall_through;
case ']': case ']':
cWait = 0;
CONTINUE_PROMPT_AWAITC(pst, 0); CONTINUE_PROMPT_AWAITC(pst, 0);
qss = QSS_SETV(qss, 0); qss = QSS_SETV(qss, 0);
goto PlainScan; goto PlainScan;

118
deps/sqlite/sqlite3.c vendored
View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
** This file is an amalgamation of many separate C source files from SQLite ** This file is an amalgamation of many separate C source files from SQLite
** version 3.47.0. By combining all the individual C code files into this ** version 3.47.1. By combining all the individual C code files into this
** single large file, the entire code can be compiled as a single translation ** single large file, the entire code can be compiled as a single translation
** unit. This allows many compilers to do optimizations that would not be ** unit. This allows many compilers to do optimizations that would not be
** possible if the files were compiled separately. Performance improvements ** possible if the files were compiled separately. Performance improvements
@ -18,7 +18,7 @@
** separate file. This file contains only code for the core SQLite library. ** separate file. This file contains only code for the core SQLite library.
** **
** The content in this amalgamation comes from Fossil check-in ** The content in this amalgamation comes from Fossil check-in
** 03a9703e27c44437c39363d0baf82db4ebc9. ** b95d11e958643b969c47a8e5857f3793b9e6.
*/ */
#define SQLITE_CORE 1 #define SQLITE_CORE 1
#define SQLITE_AMALGAMATION 1 #define SQLITE_AMALGAMATION 1
@ -462,9 +462,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()]. ** [sqlite_version()] and [sqlite_source_id()].
*/ */
#define SQLITE_VERSION "3.47.0" #define SQLITE_VERSION "3.47.1"
#define SQLITE_VERSION_NUMBER 3047000 #define SQLITE_VERSION_NUMBER 3047001
#define SQLITE_SOURCE_ID "2024-10-21 16:30:22 03a9703e27c44437c39363d0baf82db4ebc94538a0f28411c85dda156f82636e" #define SQLITE_SOURCE_ID "2024-11-25 12:07:48 b95d11e958643b969c47a8e5857f3793b9e69700b8f1469371386369a26e577e"
/* /*
** CAPI3REF: Run-Time Library Version Numbers ** CAPI3REF: Run-Time Library Version Numbers
@ -968,6 +968,13 @@ SQLITE_API int sqlite3_exec(
** filesystem supports doing multiple write operations atomically when those ** filesystem supports doing multiple write operations atomically when those
** write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and ** write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and
** [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE]. ** [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE].
**
** The SQLITE_IOCAP_SUBPAGE_READ property means that it is ok to read
** from the database file in amounts that are not a multiple of the
** page size and that do not begin at a page boundary. Without this
** property, SQLite is careful to only do full-page reads and write
** on aligned pages, with the one exception that it will do a sub-page
** read of the first page to access the database header.
*/ */
#define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC 0x00000001
#define SQLITE_IOCAP_ATOMIC512 0x00000002 #define SQLITE_IOCAP_ATOMIC512 0x00000002
@ -984,6 +991,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000
#define SQLITE_IOCAP_IMMUTABLE 0x00002000 #define SQLITE_IOCAP_IMMUTABLE 0x00002000
#define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000 #define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000
#define SQLITE_IOCAP_SUBPAGE_READ 0x00008000
/* /*
** CAPI3REF: File Locking Levels ** CAPI3REF: File Locking Levels
@ -1130,6 +1138,7 @@ struct sqlite3_file {
** <li> [SQLITE_IOCAP_POWERSAFE_OVERWRITE] ** <li> [SQLITE_IOCAP_POWERSAFE_OVERWRITE]
** <li> [SQLITE_IOCAP_IMMUTABLE] ** <li> [SQLITE_IOCAP_IMMUTABLE]
** <li> [SQLITE_IOCAP_BATCH_ATOMIC] ** <li> [SQLITE_IOCAP_BATCH_ATOMIC]
** <li> [SQLITE_IOCAP_SUBPAGE_READ]
** </ul> ** </ul>
** **
** The SQLITE_IOCAP_ATOMIC property means that all writes of ** The SQLITE_IOCAP_ATOMIC property means that all writes of
@ -32298,6 +32307,7 @@ SQLITE_PRIVATE void sqlite3RecordErrorOffsetOfExpr(sqlite3 *db, const Expr *pExp
pExpr = pExpr->pLeft; pExpr = pExpr->pLeft;
} }
if( pExpr==0 ) return; if( pExpr==0 ) return;
if( ExprHasProperty(pExpr, EP_FromDDL) ) return;
db->errByteOffset = pExpr->w.iOfst; db->errByteOffset = pExpr->w.iOfst;
} }
@ -42591,6 +42601,7 @@ static void setDeviceCharacteristics(unixFile *pFd){
if( pFd->ctrlFlags & UNIXFILE_PSOW ){ if( pFd->ctrlFlags & UNIXFILE_PSOW ){
pFd->deviceCharacteristics |= SQLITE_IOCAP_POWERSAFE_OVERWRITE; pFd->deviceCharacteristics |= SQLITE_IOCAP_POWERSAFE_OVERWRITE;
} }
pFd->deviceCharacteristics |= SQLITE_IOCAP_SUBPAGE_READ;
pFd->sectorSize = SQLITE_DEFAULT_SECTOR_SIZE; pFd->sectorSize = SQLITE_DEFAULT_SECTOR_SIZE;
} }
@ -50391,7 +50402,7 @@ static int winSectorSize(sqlite3_file *id){
*/ */
static int winDeviceCharacteristics(sqlite3_file *id){ static int winDeviceCharacteristics(sqlite3_file *id){
winFile *p = (winFile*)id; winFile *p = (winFile*)id;
return SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN | return SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN | SQLITE_IOCAP_SUBPAGE_READ |
((p->ctrlFlags & WINFILE_PSOW)?SQLITE_IOCAP_POWERSAFE_OVERWRITE:0); ((p->ctrlFlags & WINFILE_PSOW)?SQLITE_IOCAP_POWERSAFE_OVERWRITE:0);
} }
@ -51779,7 +51790,7 @@ static int winOpen(
int rc = SQLITE_OK; /* Function Return Code */ int rc = SQLITE_OK; /* Function Return Code */
#if !defined(NDEBUG) || SQLITE_OS_WINCE #if !defined(NDEBUG) || SQLITE_OS_WINCE
int eType = flags&0xFFFFFF00; /* Type of file to open */ int eType = flags&0x0FFF00; /* Type of file to open */
#endif #endif
int isExclusive = (flags & SQLITE_OPEN_EXCLUSIVE); int isExclusive = (flags & SQLITE_OPEN_EXCLUSIVE);
@ -57999,18 +58010,26 @@ static const unsigned char aJournalMagic[] = {
** Return true if page pgno can be read directly from the database file ** Return true if page pgno can be read directly from the database file
** by the b-tree layer. This is the case if: ** by the b-tree layer. This is the case if:
** **
** * the database file is open, ** (1) the database file is open
** * there are no dirty pages in the cache, and ** (2) the VFS for the database is able to do unaligned sub-page reads
** * the desired page is not currently in the wal file. ** (3) there are no dirty pages in the cache, and
** (4) the desired page is not currently in the wal file.
*/ */
SQLITE_PRIVATE int sqlite3PagerDirectReadOk(Pager *pPager, Pgno pgno){ SQLITE_PRIVATE int sqlite3PagerDirectReadOk(Pager *pPager, Pgno pgno){
if( pPager->fd->pMethods==0 ) return 0; assert( pPager!=0 );
if( sqlite3PCacheIsDirty(pPager->pPCache) ) return 0; assert( pPager->fd!=0 );
if( pPager->fd->pMethods==0 ) return 0; /* Case (1) */
assert( pPager->fd->pMethods->xDeviceCharacteristics!=0 );
if( (pPager->fd->pMethods->xDeviceCharacteristics(pPager->fd)
& SQLITE_IOCAP_SUBPAGE_READ)==0 ){
return 0; /* Case (2) */
}
if( sqlite3PCacheIsDirty(pPager->pPCache) ) return 0; /* Failed (3) */
#ifndef SQLITE_OMIT_WAL #ifndef SQLITE_OMIT_WAL
if( pPager->pWal ){ if( pPager->pWal ){
u32 iRead = 0; u32 iRead = 0;
(void)sqlite3WalFindFrame(pPager->pWal, pgno, &iRead); (void)sqlite3WalFindFrame(pPager->pWal, pgno, &iRead);
return iRead==0; return iRead==0; /* Condition (4) */
} }
#endif #endif
return 1; return 1;
@ -158939,6 +158958,7 @@ static Expr *removeUnindexableInClauseTerms(
pNew->pLeft->x.pList = pLhs; pNew->pLeft->x.pList = pLhs;
} }
pSelect->pEList = pRhs; pSelect->pEList = pRhs;
pSelect->selId = ++pParse->nSelect; /* Req'd for SubrtnSig validity */
if( pLhs && pLhs->nExpr==1 ){ if( pLhs && pLhs->nExpr==1 ){
/* Take care here not to generate a TK_VECTOR containing only a /* Take care here not to generate a TK_VECTOR containing only a
** single value. Since the parser never creates such a vector, some ** single value. Since the parser never creates such a vector, some
@ -189798,10 +189818,15 @@ static int fts3PoslistPhraseMerge(
if( *p1==POS_COLUMN ){ if( *p1==POS_COLUMN ){
p1++; p1++;
p1 += fts3GetVarint32(p1, &iCol1); p1 += fts3GetVarint32(p1, &iCol1);
/* iCol1==0 indicates corruption. Column 0 does not have a POS_COLUMN
** entry, so this is actually end-of-doclist. */
if( iCol1==0 ) return 0;
} }
if( *p2==POS_COLUMN ){ if( *p2==POS_COLUMN ){
p2++; p2++;
p2 += fts3GetVarint32(p2, &iCol2); p2 += fts3GetVarint32(p2, &iCol2);
/* As above, iCol2==0 indicates corruption. */
if( iCol2==0 ) return 0;
} }
while( 1 ){ while( 1 ){
@ -192972,7 +192997,7 @@ static int fts3EvalNearTest(Fts3Expr *pExpr, int *pRc){
nTmp += p->pRight->pPhrase->doclist.nList; nTmp += p->pRight->pPhrase->doclist.nList;
} }
nTmp += p->pPhrase->doclist.nList; nTmp += p->pPhrase->doclist.nList;
aTmp = sqlite3_malloc64(nTmp*2); aTmp = sqlite3_malloc64(nTmp*2 + FTS3_VARINT_MAX);
if( !aTmp ){ if( !aTmp ){
*pRc = SQLITE_NOMEM; *pRc = SQLITE_NOMEM;
res = 0; res = 0;
@ -194525,10 +194550,11 @@ static int getNextString(
Fts3PhraseToken *pToken; Fts3PhraseToken *pToken;
p = fts3ReallocOrFree(p, nSpace + ii*sizeof(Fts3PhraseToken)); p = fts3ReallocOrFree(p, nSpace + ii*sizeof(Fts3PhraseToken));
if( !p ) goto no_mem;
zTemp = fts3ReallocOrFree(zTemp, nTemp + nByte); zTemp = fts3ReallocOrFree(zTemp, nTemp + nByte);
if( !zTemp ) goto no_mem; if( !zTemp || !p ){
rc = SQLITE_NOMEM;
goto getnextstring_out;
}
assert( nToken==ii ); assert( nToken==ii );
pToken = &((Fts3Phrase *)(&p[1]))->aToken[ii]; pToken = &((Fts3Phrase *)(&p[1]))->aToken[ii];
@ -194543,9 +194569,6 @@ static int getNextString(
nToken = ii+1; nToken = ii+1;
} }
} }
pModule->xClose(pCursor);
pCursor = 0;
} }
if( rc==SQLITE_DONE ){ if( rc==SQLITE_DONE ){
@ -194553,7 +194576,10 @@ static int getNextString(
char *zBuf = 0; char *zBuf = 0;
p = fts3ReallocOrFree(p, nSpace + nToken*sizeof(Fts3PhraseToken) + nTemp); p = fts3ReallocOrFree(p, nSpace + nToken*sizeof(Fts3PhraseToken) + nTemp);
if( !p ) goto no_mem; if( !p ){
rc = SQLITE_NOMEM;
goto getnextstring_out;
}
memset(p, 0, (char *)&(((Fts3Phrase *)&p[1])->aToken[0])-(char *)p); memset(p, 0, (char *)&(((Fts3Phrase *)&p[1])->aToken[0])-(char *)p);
p->eType = FTSQUERY_PHRASE; p->eType = FTSQUERY_PHRASE;
p->pPhrase = (Fts3Phrase *)&p[1]; p->pPhrase = (Fts3Phrase *)&p[1];
@ -194561,11 +194587,9 @@ static int getNextString(
p->pPhrase->nToken = nToken; p->pPhrase->nToken = nToken;
zBuf = (char *)&p->pPhrase->aToken[nToken]; zBuf = (char *)&p->pPhrase->aToken[nToken];
assert( nTemp==0 || zTemp );
if( zTemp ){ if( zTemp ){
memcpy(zBuf, zTemp, nTemp); memcpy(zBuf, zTemp, nTemp);
sqlite3_free(zTemp);
}else{
assert( nTemp==0 );
} }
for(jj=0; jj<p->pPhrase->nToken; jj++){ for(jj=0; jj<p->pPhrase->nToken; jj++){
@ -194575,17 +194599,17 @@ static int getNextString(
rc = SQLITE_OK; rc = SQLITE_OK;
} }
*ppExpr = p; getnextstring_out:
return rc;
no_mem:
if( pCursor ){ if( pCursor ){
pModule->xClose(pCursor); pModule->xClose(pCursor);
} }
sqlite3_free(zTemp); sqlite3_free(zTemp);
sqlite3_free(p); if( rc!=SQLITE_OK ){
*ppExpr = 0; sqlite3_free(p);
return SQLITE_NOMEM; p = 0;
}
*ppExpr = p;
return rc;
} }
/* /*
@ -232806,7 +232830,27 @@ SQLITE_API int sqlite3session_config(int op, void *pArg){
/************** End of sqlite3session.c **************************************/ /************** End of sqlite3session.c **************************************/
/************** Begin file fts5.c ********************************************/ /************** Begin file fts5.c ********************************************/
/*
** This, the "fts5.c" source file, is a composite file that is itself
** assembled from the following files:
**
** fts5.h
** fts5Int.h
** fts5parse.h <--- Generated from fts5parse.y by Lemon
** fts5parse.c <--- Generated from fts5parse.y by Lemon
** fts5_aux.c
** fts5_buffer.c
** fts5_config.c
** fts5_expr.c
** fts5_hash.c
** fts5_index.c
** fts5_main.c
** fts5_storage.c
** fts5_tokenize.c
** fts5_unicode2.c
** fts5_varint.c
** fts5_vocab.c
*/
#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS5) #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS5)
#if !defined(NDEBUG) && !defined(SQLITE_DEBUG) #if !defined(NDEBUG) && !defined(SQLITE_DEBUG)
@ -232816,6 +232860,12 @@ SQLITE_API int sqlite3session_config(int op, void *pArg){
# undef NDEBUG # undef NDEBUG
#endif #endif
#ifdef HAVE_STDINT_H
/* #include <stdint.h> */
#endif
#ifdef HAVE_INTTYPES_H
/* #include <inttypes.h> */
#endif
/* /*
** 2014 May 31 ** 2014 May 31
** **
@ -254888,7 +254938,7 @@ static void fts5SourceIdFunc(
){ ){
assert( nArg==0 ); assert( nArg==0 );
UNUSED_PARAM2(nArg, apUnused); UNUSED_PARAM2(nArg, apUnused);
sqlite3_result_text(pCtx, "fts5: 2024-10-21 16:30:22 03a9703e27c44437c39363d0baf82db4ebc94538a0f28411c85dda156f82636e", -1, SQLITE_TRANSIENT); sqlite3_result_text(pCtx, "fts5: 2024-11-25 12:07:48 b95d11e958643b969c47a8e5857f3793b9e69700b8f1469371386369a26e577e", -1, SQLITE_TRANSIENT);
} }
/* /*
@ -260079,7 +260129,7 @@ static int sqlite3Fts5VocabInit(Fts5Global *pGlobal, sqlite3 *db){
} }
/* Here ends the fts5.c composite file. */
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS5) */ #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS5) */
/************** End of fts5.c ************************************************/ /************** End of fts5.c ************************************************/

15
deps/sqlite/sqlite3.h vendored
View File

@ -146,9 +146,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()]. ** [sqlite_version()] and [sqlite_source_id()].
*/ */
#define SQLITE_VERSION "3.47.0" #define SQLITE_VERSION "3.47.1"
#define SQLITE_VERSION_NUMBER 3047000 #define SQLITE_VERSION_NUMBER 3047001
#define SQLITE_SOURCE_ID "2024-10-21 16:30:22 03a9703e27c44437c39363d0baf82db4ebc94538a0f28411c85dda156f82636e" #define SQLITE_SOURCE_ID "2024-11-25 12:07:48 b95d11e958643b969c47a8e5857f3793b9e69700b8f1469371386369a26e577e"
/* /*
** CAPI3REF: Run-Time Library Version Numbers ** CAPI3REF: Run-Time Library Version Numbers
@ -652,6 +652,13 @@ SQLITE_API int sqlite3_exec(
** filesystem supports doing multiple write operations atomically when those ** filesystem supports doing multiple write operations atomically when those
** write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and ** write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and
** [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE]. ** [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE].
**
** The SQLITE_IOCAP_SUBPAGE_READ property means that it is ok to read
** from the database file in amounts that are not a multiple of the
** page size and that do not begin at a page boundary. Without this
** property, SQLite is careful to only do full-page reads and write
** on aligned pages, with the one exception that it will do a sub-page
** read of the first page to access the database header.
*/ */
#define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC 0x00000001
#define SQLITE_IOCAP_ATOMIC512 0x00000002 #define SQLITE_IOCAP_ATOMIC512 0x00000002
@ -668,6 +675,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000
#define SQLITE_IOCAP_IMMUTABLE 0x00002000 #define SQLITE_IOCAP_IMMUTABLE 0x00002000
#define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000 #define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000
#define SQLITE_IOCAP_SUBPAGE_READ 0x00008000
/* /*
** CAPI3REF: File Locking Levels ** CAPI3REF: File Locking Levels
@ -814,6 +822,7 @@ struct sqlite3_file {
** <li> [SQLITE_IOCAP_POWERSAFE_OVERWRITE] ** <li> [SQLITE_IOCAP_POWERSAFE_OVERWRITE]
** <li> [SQLITE_IOCAP_IMMUTABLE] ** <li> [SQLITE_IOCAP_IMMUTABLE]
** <li> [SQLITE_IOCAP_BATCH_ATOMIC] ** <li> [SQLITE_IOCAP_BATCH_ATOMIC]
** <li> [SQLITE_IOCAP_SUBPAGE_READ]
** </ul> ** </ul>
** **
** The SQLITE_IOCAP_ATOMIC property means that all writes of ** The SQLITE_IOCAP_ATOMIC property means that all writes of