update: sqlite 3.47.1.
This commit is contained in:
		| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user