]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Convert the Fts5Sorter.aIdx field to a flexible array.
authordrh <>
Sat, 15 Mar 2025 00:11:22 +0000 (00:11 +0000)
committerdrh <>
Sat, 15 Mar 2025 00:11:22 +0000 (00:11 +0000)
FossilOrigin-Name: 28ac776a23da2753265a7fe2ee2ebb09964815fc9058e69c08275fc217842edc

ext/fts5/fts5_main.c
manifest
manifest.uuid

index 4d5e3cd4f3b83ee5f03e67bb199591b1e11ca04e..e888abf215745d1772abbf4d167774538155713c 100644 (file)
@@ -170,9 +170,11 @@ struct Fts5Sorter {
   i64 iRowid;                     /* Current rowid */
   const u8 *aPoslist;             /* Position lists for current row */
   int nIdx;                       /* Number of entries in aIdx[] */
-  int aIdx[1];                    /* Offsets into aPoslist for current row */
+  int aIdx[FLEXARRAY];            /* Offsets into aPoslist for current row */
 };
 
+/* Size (int bytes) of an Fts5Sorter object with N indexes */
+#define SZ_FTS5SORTER(N) (offsetof(Fts5Sorter,nIdx)+((N+2)/2)*sizeof(i64))
 
 /*
 ** Virtual-table cursor object.
@@ -1050,7 +1052,7 @@ static int fts5CursorFirstSorted(
   const char *zRankArgs = pCsr->zRankArgs;
   
   nPhrase = sqlite3Fts5ExprPhraseCount(pCsr->pExpr);
-  nByte = sizeof(Fts5Sorter) + sizeof(int) * (nPhrase-1);
+  nByte = SZ_FTS5SORTER(nPhrase);
   pSorter = (Fts5Sorter*)sqlite3_malloc64(nByte);
   if( pSorter==0 ) return SQLITE_NOMEM;
   memset(pSorter, 0, (size_t)nByte);
index 408a20c931d74340d790f82adaf727dc6d2726c3..2d0615da6db2ccb0259e35b0151fb34fb718d13d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Turn\sFts5Colset.aiCol\sinto\sa\sflexible\sarray.
-D 2025-03-14T23:57:53.780
+C Convert\sthe\sFts5Sorter.aIdx\sfield\sto\sa\sflexible\sarray.
+D 2025-03-15T00:11:22.914
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -113,7 +113,7 @@ F ext/fts5/fts5_config.c e7d8dd062b44a66cd77e5a0f74f23a2354cd1f3f8575afb967b2773
 F ext/fts5/fts5_expr.c 390502c9954e20a9b6fcc31e4dc699df78a4ad52fd64e5b8aef0bfb82aa4a40d
 F ext/fts5/fts5_hash.c a6266cedd801ab7964fa9e74ebcdda6d30ec6a96107fa24148ec6b7b5b80f6e0
 F ext/fts5/fts5_index.c 2f35dd8408946f0e0bfea8f3bfbe8dfaafe90a5345885b43d678546c19266673
-F ext/fts5/fts5_main.c b0e95a793f3c649d313c536269403e1a413ee665223adb5f8196edd2bc1146f7
+F ext/fts5/fts5_main.c 57933c18efe1058d8871199875c7a59744dabc3904f3aefbf9ff4a4e11fc79e2
 F ext/fts5/fts5_storage.c 1ad05dab4830a4e2eaf2900bb143477f93bc17437093582f36f4b818809e88d8
 F ext/fts5/fts5_tcl.c 7fb5a3d3404099075aaa2457307cb459bbc257c0de3dbd52b1e80a5b503e0329
 F ext/fts5/fts5_test_mi.c d35fdd50db99a775a040fb57127a45adc968e97da94ae784eec664256ac86db2
@@ -2213,8 +2213,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P bb00b973980d259ca85af84c054501cae78b3a9d33ccffa54d7034235dd8d50d
-R 05b17a99b8821529239b9da49f396cc0
+P 0c4d9c74741794468adc444908f6024f016738aa2852d3a646f2c28d079d9446
+R 36e1481e3adfdafd4b3b226a43a9ad79
 U drh
-Z 04bcbcb01c8f02443f6768740e1f8171
+Z 97caa33dc844f08a198788bd53346fc8
 # Remove this line to create a well-formed Fossil manifest.
index ec9f099abf919866f5b83b40293b9ed97aa773e2..103c672440b3fff96046e4dd842ecd2bcd62789e 100644 (file)
@@ -1 +1 @@
-0c4d9c74741794468adc444908f6024f016738aa2852d3a646f2c28d079d9446
+28ac776a23da2753265a7fe2ee2ebb09964815fc9058e69c08275fc217842edc