mirror of
https://github.com/tnodir/fort
synced 2024-11-15 09:36:28 +00:00
UI: Update SQLite to v3.39.3
This commit is contained in:
parent
cceb5e999d
commit
e8de7646d4
126
src/3rdparty/sqlite/sqlite3.c
vendored
126
src/3rdparty/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.39.2. By combining all the individual C code files into this
|
** version 3.39.3. 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
|
||||||
@ -452,9 +452,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.39.2"
|
#define SQLITE_VERSION "3.39.3"
|
||||||
#define SQLITE_VERSION_NUMBER 3039002
|
#define SQLITE_VERSION_NUMBER 3039003
|
||||||
#define SQLITE_SOURCE_ID "2022-07-21 15:24:47 698edb77537b67c41adc68f9b892db56bcf9a55e00371a61420f3ddd668e6603"
|
#define SQLITE_SOURCE_ID "2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
@ -13144,6 +13144,11 @@ struct fts5_api {
|
|||||||
/************** End of sqlite3.h *********************************************/
|
/************** End of sqlite3.h *********************************************/
|
||||||
/************** Continuing where we left off in sqliteInt.h ******************/
|
/************** Continuing where we left off in sqliteInt.h ******************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Reuse the STATIC_LRU for mutex access to sqlite3_temp_directory.
|
||||||
|
*/
|
||||||
|
#define SQLITE_MUTEX_STATIC_TEMPDIR SQLITE_MUTEX_STATIC_VFS1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Include the configuration header output by 'configure' if we're using the
|
** Include the configuration header output by 'configure' if we're using the
|
||||||
** autoconf-based build
|
** autoconf-based build
|
||||||
@ -29563,8 +29568,13 @@ SQLITE_PRIVATE void *sqlite3OomFault(sqlite3 *db){
|
|||||||
}
|
}
|
||||||
DisableLookaside;
|
DisableLookaside;
|
||||||
if( db->pParse ){
|
if( db->pParse ){
|
||||||
|
Parse *pParse;
|
||||||
sqlite3ErrorMsg(db->pParse, "out of memory");
|
sqlite3ErrorMsg(db->pParse, "out of memory");
|
||||||
db->pParse->rc = SQLITE_NOMEM_BKPT;
|
db->pParse->rc = SQLITE_NOMEM_BKPT;
|
||||||
|
for(pParse=db->pParse->pOuterParse; pParse; pParse = pParse->pOuterParse){
|
||||||
|
pParse->nErr++;
|
||||||
|
pParse->rc = SQLITE_NOMEM;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -33459,7 +33469,7 @@ SQLITE_PRIVATE void sqlite3ErrorMsg(Parse *pParse, const char *zFormat, ...){
|
|||||||
va_list ap;
|
va_list ap;
|
||||||
sqlite3 *db = pParse->db;
|
sqlite3 *db = pParse->db;
|
||||||
assert( db!=0 );
|
assert( db!=0 );
|
||||||
assert( db->pParse==pParse );
|
assert( db->pParse==pParse || db->pParse->pToplevel==pParse );
|
||||||
db->errByteOffset = -2;
|
db->errByteOffset = -2;
|
||||||
va_start(ap, zFormat);
|
va_start(ap, zFormat);
|
||||||
zMsg = sqlite3VMPrintf(db, zFormat, ap);
|
zMsg = sqlite3VMPrintf(db, zFormat, ap);
|
||||||
@ -41320,6 +41330,7 @@ static const char *unixTempFileDir(void){
|
|||||||
static int unixGetTempname(int nBuf, char *zBuf){
|
static int unixGetTempname(int nBuf, char *zBuf){
|
||||||
const char *zDir;
|
const char *zDir;
|
||||||
int iLimit = 0;
|
int iLimit = 0;
|
||||||
|
int rc = SQLITE_OK;
|
||||||
|
|
||||||
/* It's odd to simulate an io-error here, but really this is just
|
/* It's odd to simulate an io-error here, but really this is just
|
||||||
** using the io-error infrastructure to test that SQLite handles this
|
** using the io-error infrastructure to test that SQLite handles this
|
||||||
@ -41328,18 +41339,26 @@ static int unixGetTempname(int nBuf, char *zBuf){
|
|||||||
zBuf[0] = 0;
|
zBuf[0] = 0;
|
||||||
SimulateIOError( return SQLITE_IOERR );
|
SimulateIOError( return SQLITE_IOERR );
|
||||||
|
|
||||||
|
sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
zDir = unixTempFileDir();
|
zDir = unixTempFileDir();
|
||||||
if( zDir==0 ) return SQLITE_IOERR_GETTEMPPATH;
|
if( zDir==0 ){
|
||||||
do{
|
rc = SQLITE_IOERR_GETTEMPPATH;
|
||||||
u64 r;
|
}else{
|
||||||
sqlite3_randomness(sizeof(r), &r);
|
do{
|
||||||
assert( nBuf>2 );
|
u64 r;
|
||||||
zBuf[nBuf-2] = 0;
|
sqlite3_randomness(sizeof(r), &r);
|
||||||
sqlite3_snprintf(nBuf, zBuf, "%s/"SQLITE_TEMP_FILE_PREFIX"%llx%c",
|
assert( nBuf>2 );
|
||||||
zDir, r, 0);
|
zBuf[nBuf-2] = 0;
|
||||||
if( zBuf[nBuf-2]!=0 || (iLimit++)>10 ) return SQLITE_ERROR;
|
sqlite3_snprintf(nBuf, zBuf, "%s/"SQLITE_TEMP_FILE_PREFIX"%llx%c",
|
||||||
}while( osAccess(zBuf,0)==0 );
|
zDir, r, 0);
|
||||||
return SQLITE_OK;
|
if( zBuf[nBuf-2]!=0 || (iLimit++)>10 ){
|
||||||
|
rc = SQLITE_ERROR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}while( osAccess(zBuf,0)==0 );
|
||||||
|
}
|
||||||
|
sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__)
|
#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__)
|
||||||
@ -45482,6 +45501,7 @@ SQLITE_API int sqlite3_win32_set_directory8(
|
|||||||
int rc = sqlite3_initialize();
|
int rc = sqlite3_initialize();
|
||||||
if( rc ) return rc;
|
if( rc ) return rc;
|
||||||
#endif
|
#endif
|
||||||
|
sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
if( type==SQLITE_WIN32_DATA_DIRECTORY_TYPE ){
|
if( type==SQLITE_WIN32_DATA_DIRECTORY_TYPE ){
|
||||||
ppDirectory = &sqlite3_data_directory;
|
ppDirectory = &sqlite3_data_directory;
|
||||||
}else if( type==SQLITE_WIN32_TEMP_DIRECTORY_TYPE ){
|
}else if( type==SQLITE_WIN32_TEMP_DIRECTORY_TYPE ){
|
||||||
@ -45496,14 +45516,19 @@ SQLITE_API int sqlite3_win32_set_directory8(
|
|||||||
if( zValue && zValue[0] ){
|
if( zValue && zValue[0] ){
|
||||||
zCopy = sqlite3_mprintf("%s", zValue);
|
zCopy = sqlite3_mprintf("%s", zValue);
|
||||||
if ( zCopy==0 ){
|
if ( zCopy==0 ){
|
||||||
return SQLITE_NOMEM_BKPT;
|
rc = SQLITE_NOMEM_BKPT;
|
||||||
|
goto set_directory8_done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sqlite3_free(*ppDirectory);
|
sqlite3_free(*ppDirectory);
|
||||||
*ppDirectory = zCopy;
|
*ppDirectory = zCopy;
|
||||||
return SQLITE_OK;
|
rc = SQLITE_OK;
|
||||||
|
}else{
|
||||||
|
rc = SQLITE_ERROR;
|
||||||
}
|
}
|
||||||
return SQLITE_ERROR;
|
set_directory8_done:
|
||||||
|
sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -48277,6 +48302,18 @@ static int winMakeEndInDirSep(int nBuf, char *zBuf){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** If sqlite3_temp_directory is not, take the mutex and return true.
|
||||||
|
**
|
||||||
|
** If sqlite3_temp_directory is NULL, omit the mutex and return false.
|
||||||
|
*/
|
||||||
|
static int winTempDirDefined(void){
|
||||||
|
sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
|
if( sqlite3_temp_directory!=0 ) return 1;
|
||||||
|
sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Create a temporary file name and store the resulting pointer into pzBuf.
|
** Create a temporary file name and store the resulting pointer into pzBuf.
|
||||||
** The pointer returned in pzBuf must be freed via sqlite3_free().
|
** The pointer returned in pzBuf must be freed via sqlite3_free().
|
||||||
@ -48313,20 +48350,23 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
|
|||||||
*/
|
*/
|
||||||
nDir = nMax - (nPre + 15);
|
nDir = nMax - (nPre + 15);
|
||||||
assert( nDir>0 );
|
assert( nDir>0 );
|
||||||
if( sqlite3_temp_directory ){
|
if( winTempDirDefined() ){
|
||||||
int nDirLen = sqlite3Strlen30(sqlite3_temp_directory);
|
int nDirLen = sqlite3Strlen30(sqlite3_temp_directory);
|
||||||
if( nDirLen>0 ){
|
if( nDirLen>0 ){
|
||||||
if( !winIsDirSep(sqlite3_temp_directory[nDirLen-1]) ){
|
if( !winIsDirSep(sqlite3_temp_directory[nDirLen-1]) ){
|
||||||
nDirLen++;
|
nDirLen++;
|
||||||
}
|
}
|
||||||
if( nDirLen>nDir ){
|
if( nDirLen>nDir ){
|
||||||
|
sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
sqlite3_free(zBuf);
|
sqlite3_free(zBuf);
|
||||||
OSTRACE(("TEMP-FILENAME rc=SQLITE_ERROR\n"));
|
OSTRACE(("TEMP-FILENAME rc=SQLITE_ERROR\n"));
|
||||||
return winLogError(SQLITE_ERROR, 0, "winGetTempname1", 0);
|
return winLogError(SQLITE_ERROR, 0, "winGetTempname1", 0);
|
||||||
}
|
}
|
||||||
sqlite3_snprintf(nMax, zBuf, "%s", sqlite3_temp_directory);
|
sqlite3_snprintf(nMax, zBuf, "%s", sqlite3_temp_directory);
|
||||||
}
|
}
|
||||||
|
sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__CYGWIN__)
|
#if defined(__CYGWIN__)
|
||||||
else{
|
else{
|
||||||
static const char *azDirs[] = {
|
static const char *azDirs[] = {
|
||||||
@ -49115,7 +49155,7 @@ static BOOL winIsVerbatimPathname(
|
|||||||
** pathname into zOut[]. zOut[] will be at least pVfs->mxPathname
|
** pathname into zOut[]. zOut[] will be at least pVfs->mxPathname
|
||||||
** bytes in size.
|
** bytes in size.
|
||||||
*/
|
*/
|
||||||
static int winFullPathname(
|
static int winFullPathnameNoMutex(
|
||||||
sqlite3_vfs *pVfs, /* Pointer to vfs object */
|
sqlite3_vfs *pVfs, /* Pointer to vfs object */
|
||||||
const char *zRelative, /* Possibly relative input path */
|
const char *zRelative, /* Possibly relative input path */
|
||||||
int nFull, /* Size of output buffer in bytes */
|
int nFull, /* Size of output buffer in bytes */
|
||||||
@ -49294,6 +49334,19 @@ static int winFullPathname(
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
static int winFullPathname(
|
||||||
|
sqlite3_vfs *pVfs, /* Pointer to vfs object */
|
||||||
|
const char *zRelative, /* Possibly relative input path */
|
||||||
|
int nFull, /* Size of output buffer in bytes */
|
||||||
|
char *zFull /* Output buffer */
|
||||||
|
){
|
||||||
|
int rc;
|
||||||
|
sqlite3_mutex *pMutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR);
|
||||||
|
sqlite3_mutex_enter(pMutex);
|
||||||
|
rc = winFullPathnameNoMutex(pVfs, zRelative, nFull, zFull);
|
||||||
|
sqlite3_mutex_leave(pMutex);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef SQLITE_OMIT_LOAD_EXTENSION
|
#ifndef SQLITE_OMIT_LOAD_EXTENSION
|
||||||
/*
|
/*
|
||||||
@ -59676,6 +59729,7 @@ static int pager_open_journal(Pager *pPager){
|
|||||||
if( rc!=SQLITE_OK ){
|
if( rc!=SQLITE_OK ){
|
||||||
sqlite3BitvecDestroy(pPager->pInJournal);
|
sqlite3BitvecDestroy(pPager->pInJournal);
|
||||||
pPager->pInJournal = 0;
|
pPager->pInJournal = 0;
|
||||||
|
pPager->journalOff = 0;
|
||||||
}else{
|
}else{
|
||||||
assert( pPager->eState==PAGER_WRITER_LOCKED );
|
assert( pPager->eState==PAGER_WRITER_LOCKED );
|
||||||
pPager->eState = PAGER_WRITER_CACHEMOD;
|
pPager->eState = PAGER_WRITER_CACHEMOD;
|
||||||
@ -61231,7 +61285,7 @@ SQLITE_PRIVATE int sqlite3PagerGetJournalMode(Pager *pPager){
|
|||||||
SQLITE_PRIVATE int sqlite3PagerOkToChangeJournalMode(Pager *pPager){
|
SQLITE_PRIVATE int sqlite3PagerOkToChangeJournalMode(Pager *pPager){
|
||||||
assert( assert_pager_state(pPager) );
|
assert( assert_pager_state(pPager) );
|
||||||
if( pPager->eState>=PAGER_WRITER_CACHEMOD ) return 0;
|
if( pPager->eState>=PAGER_WRITER_CACHEMOD ) return 0;
|
||||||
if( NEVER(isOpen(pPager->jfd) && pPager->journalOff>0) ) return 0;
|
if( isOpen(pPager->jfd) && pPager->journalOff>0 ) return 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81035,6 +81089,7 @@ SQLITE_PRIVATE int sqlite3VdbeAddFunctionCall(
|
|||||||
addr = sqlite3VdbeAddOp4(v, eCallCtx ? OP_PureFunc : OP_Function,
|
addr = sqlite3VdbeAddOp4(v, eCallCtx ? OP_PureFunc : OP_Function,
|
||||||
p1, p2, p3, (char*)pCtx, P4_FUNCCTX);
|
p1, p2, p3, (char*)pCtx, P4_FUNCCTX);
|
||||||
sqlite3VdbeChangeP5(v, eCallCtx & NC_SelfRef);
|
sqlite3VdbeChangeP5(v, eCallCtx & NC_SelfRef);
|
||||||
|
sqlite3MayAbort(pParse);
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81370,6 +81425,7 @@ SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
|
|||||||
|| opcode==OP_VDestroy
|
|| opcode==OP_VDestroy
|
||||||
|| opcode==OP_VCreate
|
|| opcode==OP_VCreate
|
||||||
|| opcode==OP_ParseSchema
|
|| opcode==OP_ParseSchema
|
||||||
|
|| opcode==OP_Function || opcode==OP_PureFunc
|
||||||
|| ((opcode==OP_Halt || opcode==OP_HaltIfNull)
|
|| ((opcode==OP_Halt || opcode==OP_HaltIfNull)
|
||||||
&& ((pOp->p1)!=SQLITE_OK && pOp->p2==OE_Abort))
|
&& ((pOp->p1)!=SQLITE_OK && pOp->p2==OE_Abort))
|
||||||
){
|
){
|
||||||
@ -132704,6 +132760,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
|
|||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
case PragTyp_TEMP_STORE_DIRECTORY: {
|
case PragTyp_TEMP_STORE_DIRECTORY: {
|
||||||
|
sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
if( !zRight ){
|
if( !zRight ){
|
||||||
returnSingleText(v, sqlite3_temp_directory);
|
returnSingleText(v, sqlite3_temp_directory);
|
||||||
}else{
|
}else{
|
||||||
@ -132713,6 +132770,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
|
|||||||
rc = sqlite3OsAccess(db->pVfs, zRight, SQLITE_ACCESS_READWRITE, &res);
|
rc = sqlite3OsAccess(db->pVfs, zRight, SQLITE_ACCESS_READWRITE, &res);
|
||||||
if( rc!=SQLITE_OK || res==0 ){
|
if( rc!=SQLITE_OK || res==0 ){
|
||||||
sqlite3ErrorMsg(pParse, "not a writable directory");
|
sqlite3ErrorMsg(pParse, "not a writable directory");
|
||||||
|
sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
goto pragma_out;
|
goto pragma_out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132730,6 +132788,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
|
|||||||
}
|
}
|
||||||
#endif /* SQLITE_OMIT_WSD */
|
#endif /* SQLITE_OMIT_WSD */
|
||||||
}
|
}
|
||||||
|
sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132748,6 +132807,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
|
|||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
case PragTyp_DATA_STORE_DIRECTORY: {
|
case PragTyp_DATA_STORE_DIRECTORY: {
|
||||||
|
sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
if( !zRight ){
|
if( !zRight ){
|
||||||
returnSingleText(v, sqlite3_data_directory);
|
returnSingleText(v, sqlite3_data_directory);
|
||||||
}else{
|
}else{
|
||||||
@ -132757,6 +132817,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
|
|||||||
rc = sqlite3OsAccess(db->pVfs, zRight, SQLITE_ACCESS_READWRITE, &res);
|
rc = sqlite3OsAccess(db->pVfs, zRight, SQLITE_ACCESS_READWRITE, &res);
|
||||||
if( rc!=SQLITE_OK || res==0 ){
|
if( rc!=SQLITE_OK || res==0 ){
|
||||||
sqlite3ErrorMsg(pParse, "not a writable directory");
|
sqlite3ErrorMsg(pParse, "not a writable directory");
|
||||||
|
sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
goto pragma_out;
|
goto pragma_out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132768,6 +132829,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
|
|||||||
}
|
}
|
||||||
#endif /* SQLITE_OMIT_WSD */
|
#endif /* SQLITE_OMIT_WSD */
|
||||||
}
|
}
|
||||||
|
sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_TEMPDIR));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -137213,7 +137275,7 @@ static void generateSortTail(
|
|||||||
if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce);
|
if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce);
|
||||||
addr = 1 + sqlite3VdbeAddOp2(v, OP_SorterSort, iTab, addrBreak);
|
addr = 1 + sqlite3VdbeAddOp2(v, OP_SorterSort, iTab, addrBreak);
|
||||||
VdbeCoverage(v);
|
VdbeCoverage(v);
|
||||||
codeOffset(v, p->iOffset, addrContinue);
|
assert( p->iLimit==0 && p->iOffset==0 );
|
||||||
sqlite3VdbeAddOp3(v, OP_SorterData, iTab, regSortOut, iSortTab);
|
sqlite3VdbeAddOp3(v, OP_SorterData, iTab, regSortOut, iSortTab);
|
||||||
bSeq = 0;
|
bSeq = 0;
|
||||||
}else{
|
}else{
|
||||||
@ -137221,6 +137283,9 @@ static void generateSortTail(
|
|||||||
codeOffset(v, p->iOffset, addrContinue);
|
codeOffset(v, p->iOffset, addrContinue);
|
||||||
iSortTab = iTab;
|
iSortTab = iTab;
|
||||||
bSeq = 1;
|
bSeq = 1;
|
||||||
|
if( p->iOffset>0 ){
|
||||||
|
sqlite3VdbeAddOp2(v, OP_AddImm, p->iLimit, -1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for(i=0, iCol=nKey+bSeq-1; i<nColumn; i++){
|
for(i=0, iCol=nKey+bSeq-1; i<nColumn; i++){
|
||||||
#ifdef SQLITE_ENABLE_SORTER_REFERENCES
|
#ifdef SQLITE_ENABLE_SORTER_REFERENCES
|
||||||
@ -139213,10 +139278,11 @@ static int multiSelectOrderBy(
|
|||||||
*/
|
*/
|
||||||
sqlite3VdbeResolveLabel(v, labelEnd);
|
sqlite3VdbeResolveLabel(v, labelEnd);
|
||||||
|
|
||||||
/* Reassembly the compound query so that it will be freed correctly
|
/* Reassemble the compound query so that it will be freed correctly
|
||||||
** by the calling function */
|
** by the calling function */
|
||||||
if( pSplit->pPrior ){
|
if( pSplit->pPrior ){
|
||||||
sqlite3SelectDelete(db, pSplit->pPrior);
|
sqlite3ParserAddCleanup(pParse,
|
||||||
|
(void(*)(sqlite3*,void*))sqlite3SelectDelete, pSplit->pPrior);
|
||||||
}
|
}
|
||||||
pSplit->pPrior = pPrior;
|
pSplit->pPrior = pPrior;
|
||||||
pPrior->pNext = pSplit;
|
pPrior->pNext = pSplit;
|
||||||
@ -140735,6 +140801,7 @@ static Table *isSimpleCount(Select *p, AggInfo *pAggInfo){
|
|||||||
|| p->pSrc->nSrc!=1
|
|| p->pSrc->nSrc!=1
|
||||||
|| p->pSrc->a[0].pSelect
|
|| p->pSrc->a[0].pSelect
|
||||||
|| pAggInfo->nFunc!=1
|
|| pAggInfo->nFunc!=1
|
||||||
|
|| p->pHaving
|
||||||
){
|
){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -149783,7 +149850,8 @@ static int codeEqualityTerm(
|
|||||||
}
|
}
|
||||||
sqlite3ExprDelete(db, pX);
|
sqlite3ExprDelete(db, pX);
|
||||||
}else{
|
}else{
|
||||||
aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*nEq);
|
int n = sqlite3ExprVectorSize(pX->pLeft);
|
||||||
|
aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*MAX(nEq,n));
|
||||||
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap, &iTab);
|
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap, &iTab);
|
||||||
}
|
}
|
||||||
pX = pExpr;
|
pX = pExpr;
|
||||||
@ -181120,7 +181188,7 @@ static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
|
|||||||
nDistance = iPrev - nMaxUndeferred;
|
nDistance = iPrev - nMaxUndeferred;
|
||||||
}
|
}
|
||||||
|
|
||||||
aOut = (char *)sqlite3_malloc(nPoslist+8);
|
aOut = (char *)sqlite3Fts3MallocZero(nPoslist+FTS3_BUFFER_PADDING);
|
||||||
if( !aOut ){
|
if( !aOut ){
|
||||||
sqlite3_free(aPoslist);
|
sqlite3_free(aPoslist);
|
||||||
return SQLITE_NOMEM;
|
return SQLITE_NOMEM;
|
||||||
@ -204146,7 +204214,7 @@ static int geopolyUpdate(
|
|||||||
sqlite3_free(p);
|
sqlite3_free(p);
|
||||||
nChange = 1;
|
nChange = 1;
|
||||||
}
|
}
|
||||||
for(jj=1; jj<pRtree->nAux; jj++){
|
for(jj=1; jj<nData-2; jj++){
|
||||||
nChange++;
|
nChange++;
|
||||||
sqlite3_bind_value(pUp, jj+2, aData[jj+2]);
|
sqlite3_bind_value(pUp, jj+2, aData[jj+2]);
|
||||||
}
|
}
|
||||||
@ -236636,7 +236704,7 @@ static void fts5SourceIdFunc(
|
|||||||
){
|
){
|
||||||
assert( nArg==0 );
|
assert( nArg==0 );
|
||||||
UNUSED_PARAM2(nArg, apUnused);
|
UNUSED_PARAM2(nArg, apUnused);
|
||||||
sqlite3_result_text(pCtx, "fts5: 2022-07-21 15:24:47 698edb77537b67c41adc68f9b892db56bcf9a55e00371a61420f3ddd668e6603", -1, SQLITE_TRANSIENT);
|
sqlite3_result_text(pCtx, "fts5: 2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8", -1, SQLITE_TRANSIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
6
src/3rdparty/sqlite/sqlite3.h
vendored
6
src/3rdparty/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.39.2"
|
#define SQLITE_VERSION "3.39.3"
|
||||||
#define SQLITE_VERSION_NUMBER 3039002
|
#define SQLITE_VERSION_NUMBER 3039003
|
||||||
#define SQLITE_SOURCE_ID "2022-07-21 15:24:47 698edb77537b67c41adc68f9b892db56bcf9a55e00371a61420f3ddd668e6603"
|
#define SQLITE_SOURCE_ID "2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
|
Loading…
Reference in New Issue
Block a user