]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix various compiler warnings and other problems with the new code on this branch.
authordan <Dan Kennedy>
Sat, 2 Dec 2023 20:35:04 +0000 (20:35 +0000)
committerdan <Dan Kennedy>
Sat, 2 Dec 2023 20:35:04 +0000 (20:35 +0000)
FossilOrigin-Name: 3a623cfa173b4035c759cb84985d11d8727053beb383648503987d6ab15c0ef0

ext/fts5/fts5.h
ext/fts5/fts5Int.h
ext/fts5/fts5_expr.c
ext/fts5/fts5_index.c
manifest
manifest.uuid

index 9feedbba19dd28267bf13894b4f0fc0f76d8893e..63c9765eb6d95f62305a6f22001baffcbc12f703 100644 (file)
@@ -281,7 +281,7 @@ struct Fts5PhraseIter {
 **   includes any embedded 0x00 and trailing data.
 **
 **   This API can be quite slow if used with an FTS5 table created with the
-**   "detail=none" or "detail=column" option. 
+**   "detail=none" or "detail=column" option.
 */
 struct Fts5ExtensionApi {
   int iVersion;                   /* Currently always set to 3 */
index 911f547d17d748600b1b7a58571ea23d99b55cf6..4e4385ce2b733c62a68c8417fb76f901b36525d4 100644 (file)
@@ -467,7 +467,7 @@ void sqlite3Fts5StructureRelease(void*);
 int sqlite3Fts5StructureTest(Fts5Index*, void*);
 
 /*
-** Used by xInstToken() and xPhraseToken().
+** Used by xInstToken():
 */
 int sqlite3Fts5IterToken(Fts5IndexIter*, i64, int, int, const char**, int*);
 
@@ -547,8 +547,9 @@ int sqlite3Fts5IndexLoadConfig(Fts5Index *p);
 int sqlite3Fts5IndexGetOrigin(Fts5Index *p, i64 *piOrigin);
 int sqlite3Fts5IndexContentlessDelete(Fts5Index *p, i64 iOrigin, i64 iRowid);
 
-/* Used to populate hash tables for xInstToken in detail=none/column mode. */
 void sqlite3Fts5IndexIterClearTokendata(Fts5IndexIter*);
+
+/* Used to populate hash tables for xInstToken in detail=none/column mode. */
 int sqlite3Fts5IndexIterWriteTokendata(
     Fts5IndexIter*, const char*, int, i64 iRowid, int iCol, int iOff
 );
index 95d102062d32a6beb5cda6a9127f96632ea49ef0..6f58cf873556fcedbc13974c1a1f3faf7a19ba26 100644 (file)
@@ -2985,6 +2985,11 @@ static int fts5ExprColsetTest(Fts5Colset *pColset, int iCol){
   return 0;
 }
 
+/*
+** pToken is a buffer nToken bytes in size that may or may not contain
+** an embedded 0x00 byte. If it does, return the number of bytes in
+** the buffer before the 0x00. If it does not, return nToken.
+*/
 static int fts5QueryTerm(const char *pToken, int nToken){
   int ii;
   for(ii=0; ii<nToken && pToken[ii]; ii++){}
@@ -3189,6 +3194,9 @@ int sqlite3Fts5ExprQueryToken(
   return SQLITE_OK;
 }
 
+/*
+** Does the work of the fts5_api.xInstToken() API method.
+*/
 int sqlite3Fts5ExprInstToken(
   Fts5Expr *pExpr, 
   int iPhrase, 
index 9edf184c710f72ca511010d485b66cb17c85283a..df08ca21278bca4e549ccf8208d051ba49dda41a 100644 (file)
@@ -324,6 +324,7 @@ typedef struct Fts5Structure Fts5Structure;
 typedef struct Fts5StructureLevel Fts5StructureLevel;
 typedef struct Fts5StructureSegment Fts5StructureSegment;
 typedef struct Fts5TokenDataIter Fts5TokenDataIter;
+typedef struct Fts5TokenDataMap Fts5TokenDataMap;
 typedef struct Fts5TombstoneArray Fts5TombstoneArray;
 
 struct Fts5Data {
@@ -548,6 +549,9 @@ struct Fts5SegIter {
   u8 bDel;                        /* True if the delete flag is set */
 };
 
+/*
+** Array of tombstone pages. Reference counted.
+*/
 struct Fts5TombstoneArray {
   int nRef;                       /* Number of pointers to this object */
   int nTombstone;
@@ -1923,9 +1927,9 @@ static void fts5SegIterSetNext(Fts5Index *p, Fts5SegIter *pIter){
 }
 
 /*
-** Allocate a tombstone hash page array (pIter->apTombstone) for the 
-** iterator passed as the second argument. If an OOM error occurs, leave
-** an error in the Fts5Index object.
+** Allocate a tombstone hash page array object (pIter->pTombArray) for 
+** the iterator passed as the second argument. If an OOM error occurs, 
+** leave an error in the Fts5Index object.
 */
 static void fts5SegIterAllocTombstone(Fts5Index *p, Fts5SegIter *pIter){
   const int nTomb = pIter->pSeg->nPgTombstone;
@@ -2748,6 +2752,7 @@ static void fts5SegIterNextInit(
       bDlidx = (val & 0x0001);
     }
     p->rc = sqlite3_reset(pSel);
+    sqlite3_bind_null(pSel, 2);
     if( p->rc ) return;
   }
 
@@ -2772,7 +2777,7 @@ static void fts5SegIterNextInit(
     if( bDlidx ) fts5SegIterLoadDlidx(p, pIter);
 
     assert( p->rc!=SQLITE_OK || 
-        fts5BufferCompareBlob(&pIter->term, pTerm, nTerm)>0
+        fts5BufferCompareBlob(&pIter->term, (const u8*)pTerm, nTerm)>0
     );
   }
 }
@@ -2862,6 +2867,10 @@ static void fts5IndexFreeArray(Fts5Data **ap, int n){
   }
 }
 
+/*
+** Decrement the ref-count of the object passed as the only argument. If it
+** reaches 0, free it and its contents. 
+*/
 static void fts5TombstoneArrayDelete(Fts5TombstoneArray *p){
   if( p ){
     p->nRef--;
@@ -3828,6 +3837,10 @@ static void fts5IterSetOutputCb(int *pRc, Fts5Iter *pIter){
   }
 }
 
+/*
+** All the component segment-iterators of pIter have been set up. This
+** functions finishes setup for iterator pIter itself.
+*/
 static void fts5MultiIterFinishSetup(Fts5Index *p, Fts5Iter *pIter){
   int iIter;
   for(iIter=pIter->nSeg-1; iIter>0; iIter--){
@@ -6566,13 +6579,25 @@ static void fts5SegIterSetEOF(Fts5SegIter *pSeg){
   pSeg->pLeaf = 0;
 }
 
-typedef struct Fts5TokenDataMap Fts5TokenDataMap;
+/*
+** Usually, a tokendata=1 iterator (struct Fts5TokenDataIter) accumulates an
+** array of these for each row it visits. Or, for an iterator used by an
+** "ORDER BY rank" query, it accumulates an array of these for the entire
+** query.
+**
+** Each instance in the array indicates the iterator (and therefore term)
+** associated with position iPos of rowid iRowid. This is used by the
+** xInstToken() API.
+*/
 struct Fts5TokenDataMap {
-  i64 iRowid;
-  i64 iPos;
-  int iIter;
+  i64 iRowid;                     /* Row this token is located in */
+  i64 iPos;                       /* Position of token */
+  int iIter;                      /* Iterator token was read from */
 };
 
+/*
+** An object used to supplement Fts5Iter for tokendata=1 iterators.
+*/
 struct Fts5TokenDataIter {
   int nIter;
   int nIterAlloc;
@@ -6585,10 +6610,14 @@ struct Fts5TokenDataIter {
   Fts5Iter *apIter[1];
 };
 
+/*
+** This function appends iterator pAppend to Fts5TokenDataIter pIn and 
+** returns the result.
+*/
 static Fts5TokenDataIter *fts5AppendTokendataIter(
-  Fts5Index *p, 
-  Fts5TokenDataIter *pIn, 
-  Fts5Iter *pAppend
+  Fts5Index *p,                   /* Index object (for error code) */
+  Fts5TokenDataIter *pIn,         /* Current Fts5TokenDataIter struct */
+  Fts5Iter *pAppend               /* Append this iterator */
 ){
   Fts5TokenDataIter *pRet = pIn;
 
@@ -6617,6 +6646,9 @@ static Fts5TokenDataIter *fts5AppendTokendataIter(
   return pRet;
 }
 
+/*
+** Delete an Fts5TokenDataIter structure and its contents.
+*/
 static void fts5TokendataIterDelete(Fts5TokenDataIter *pSet){
   if( pSet ){
     int ii;
@@ -6629,6 +6661,13 @@ static void fts5TokendataIterDelete(Fts5TokenDataIter *pSet){
   }
 }
 
+/*
+** The iterator passed as the first argument must be a tokendata=1 iterator
+** (pIter->pTokenDataIter!=0). This function is used to access the token
+** instance located at offset iOff of column iCol of row iRowid. It is
+** returned via output pointers *ppOut and *pnOut. This is used by the
+** xInstToken() API.
+*/
 static int fts5TokendataIterToken(
   Fts5Iter *pIter, 
   i64 iRowid,
@@ -6673,6 +6712,9 @@ static int fts5TokendataIterToken(
   return SQLITE_OK;
 }
 
+/*
+** Append a mapping to the token-map belonging to object pT.
+*/
 static void fts5TokendataIterAppendMap(
   Fts5Index *p, 
   Fts5TokenDataIter *pT, 
@@ -6703,6 +6745,12 @@ static void fts5TokendataIterAppendMap(
   }
 }
 
+/*
+** The iterator passed as the only argument must be a tokendata=1 iterator
+** (pIter->pTokenDataIter!=0). This function sets the iterator output
+** variables (pIter->base.*) according to the contents of the current
+** row.
+*/
 static void fts5IterSetOutputsTokendata(Fts5Iter *pIter){
   int ii;
   int nHit = 0;
@@ -6819,6 +6867,13 @@ static void fts5IterSetOutputsTokendata(Fts5Iter *pIter){
   }
 }
 
+/*
+** The iterator passed as the only argument must be a tokendata=1 iterator
+** (pIter->pTokenDataIter!=0). This function advances the iterator. If
+** argument bFrom is false, then the iterator is advanced to the next
+** entry. Or, if bFrom is true, it is advanced to the first entry with
+** a rowid of iFrom or greater.
+*/
 static void fts5TokendataIterNext(Fts5Iter *pIter, int bFrom, i64 iFrom){
   int ii;
   Fts5TokenDataIter *pT = pIter->pTokenDataIter;
@@ -6841,6 +6896,10 @@ static void fts5TokendataIterNext(Fts5Iter *pIter, int bFrom, i64 iFrom){
   fts5IterSetOutputsTokendata(pIter);
 }
 
+/*
+** If the segment-iterator passed as the first argument is at EOF, then
+** set pIter->term to a copy of buffer pTerm.
+*/
 static void fts5TokendataSetTermIfEof(Fts5Iter *pIter, Fts5Buffer *pTerm){
   if( pIter && pIter->aSeg[0].pLeaf==0 ){
     fts5BufferSet(&pIter->pIndex->rc, &pIter->aSeg[0].term, pTerm->n, pTerm->p);
@@ -7144,7 +7203,9 @@ const char *sqlite3Fts5IterTerm(Fts5IndexIter *pIndexIter, int *pn){
 }
 
 /*
-**
+** This is used by xInstToken() to access the token at offset iOff, column
+** iCol of row iRowid. The token is returned via output variables *ppOut
+** and *pnOut.
 */
 int sqlite3Fts5IterToken(
   Fts5IndexIter *pIndexIter, 
@@ -7173,6 +7234,13 @@ void sqlite3Fts5IndexIterClearTokendata(Fts5IndexIter *pIndexIter){
   }
 }
 
+/*
+** Set a token-mapping for the iterator passed as the first argument. This
+** is used in detail=column or detail=none mode when a token is requested
+** using the xInstToken() API. In this case the caller tokenizers the
+** current row and configures the token-mapping via multiple calls to this
+** function.
+*/
 int sqlite3Fts5IndexIterWriteTokendata(
   Fts5IndexIter *pIndexIter, 
   const char *pToken, int nToken, 
index 699d024ca1087ff477f35771f47690186c1e1a3f..2353c55e4cce65d066bc4e0a1505ed467ab1032d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C When\stokendata=1\squeries\srequire\smultiple\ssegment-cursors,\sallow\sthose\scursors\sto\sshare\sa\ssingle\sarray\sof\sin-memory\stombstone\spages.
-D 2023-12-02T18:14:07.393
+C Fix\svarious\scompiler\swarnings\sand\sother\sproblems\swith\sthe\snew\scode\son\sthis\sbranch.
+D 2023-12-02T20:35:04.768
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -89,14 +89,14 @@ F ext/fts3/unicode/UnicodeData.txt cd07314edb62d49fde34debdaf92fa2aa69011e7
 F ext/fts3/unicode/mkunicode.tcl d5aebf022fa4577ee8cdf27468f0d847879993959101f6dbd6348ef0cfc324a7
 F ext/fts3/unicode/parseunicode.tcl a981bd6466d12dd17967515801c3ff23f74a281be1a03cf1e6f52a6959fc77eb
 F ext/fts5/extract_api_docs.tcl a36e54ec777172ddd3f9a88daf593b00848368e0
-F ext/fts5/fts5.h 5e5630fc81e212f658afaa5b2650dac939d2729d0723aef1eeaff908f1725648
-F ext/fts5/fts5Int.h 285118aa6dfccb382e84eaeb9f7bec334e4f7104efa9303240605447003445c9
+F ext/fts5/fts5.h ff90acaa97f8e865b66d1177d1b56b8c110fd5548ab5863bab43f055a1d745fe
+F ext/fts5/fts5Int.h 1fdbf3d16bdd481fe2ee99927919e4c3db835efae00f8efd7efb5e6a93277459
 F ext/fts5/fts5_aux.c ee770eec0af8646db9e18fc01a0dad7345b5f5e8cbba236704cfae2d777022ad
 F ext/fts5/fts5_buffer.c 3001fbabb585d6de52947b44b455235072b741038391f830d6b729225eeaf6a5
 F ext/fts5/fts5_config.c 8072a207034b51ae9b7694121d1b5715c794e94b275e088f70ae532378ca5cdf
-F ext/fts5/fts5_expr.c f83259b52b7b3e76768b835fe155cb7e345affdfafb96574372b4127d5f5496a
+F ext/fts5/fts5_expr.c 5619c3fab45a78eb5ed3021e3b40ec3b435ef3669293e8700354aa8dd3e6c796
 F ext/fts5/fts5_hash.c adda4272be401566a6e0ba1acbe70ee5cb97fce944bc2e04dc707152a0ec91b1
-F ext/fts5/fts5_index.c 21f8f449666ac44c12d5051e153ad84a886a729cb2f5d6ad02a113095c3f8ec6
+F ext/fts5/fts5_index.c b31bf4f0fb51a15cc1aa54c2f337197740f4f8898347266781ca6970ca751302
 F ext/fts5/fts5_main.c 075995302198fe6f591fdbbedd415dfac564a9bfc20aea81e6fa0503b2d94af0
 F ext/fts5/fts5_storage.c 5d10b9bdcce5b90656cad13c7d12ad4148677d4b9e3fca0481fca56d6601426d
 F ext/fts5/fts5_tcl.c cf0fd0dbe64ec272491b749e0d594f563cda03336aeb60900129e6d18b0aefb8
@@ -2149,8 +2149,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 7bda09ab404a110d57449e149a3281fca8dc4cacf7bd9832ea2a1356ad20fe8e
-R 1ce6343b4aa590c869e9b9aa51095415
+P e0175d07e4094db5ea4b0378a5ff480dafb6ba9da86a113fa767c4c89c3c866f
+R a72f98879c56fe0b2489dc56b6289649
 U dan
-Z 8664660cde606ab1a6fdc20b18622c4a
+Z 6a8664529c8f348c40cce12fb229aa10
 # Remove this line to create a well-formed Fossil manifest.
index 0cbd0844803731f106ddeb8982f468718918d21d..b4349493decf4d6cd05eec84c47925282616905e 100644 (file)
@@ -1 +1 @@
-e0175d07e4094db5ea4b0378a5ff480dafb6ba9da86a113fa767c4c89c3c866f
\ No newline at end of file
+3a623cfa173b4035c759cb84985d11d8727053beb383648503987d6ab15c0ef0
\ No newline at end of file