forked from cory/tildefriends
update: sqlite 3.47.1.
This commit is contained in:
parent
df1e6711af
commit
a08bba438e
@ -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
17
deps/sqlite/shell.c
vendored
@ -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
118
deps/sqlite/sqlite3.c
vendored
@ -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
15
deps/sqlite/sqlite3.h
vendored
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user