]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix the generate_series extension for the case where the termination value
authordrh <>
Thu, 13 Mar 2025 18:51:18 +0000 (18:51 +0000)
committerdrh <>
Thu, 13 Mar 2025 18:51:18 +0000 (18:51 +0000)
is not an even multiple of the step from the start value and there is also
a value=NNN constraint in the WHERE clause.
[forum:/info/bf2dc8e909983511|Forum post bf2dc8e9]

FossilOrigin-Name: 75e72e3b0d0d689d39e00a01dc361dd6ce2649e68d200bf501ddcf04063041b2

ext/misc/series.c
manifest
manifest.uuid
test/tabfunc01.test

index d500842d561297661edf338d3ea40104fbf3b3e2..04644dd603985270151166564470ec0ec2662e46 100644 (file)
@@ -519,8 +519,7 @@ static int seriesFilter(
         pCur->ss.iBase += ((d+szStep-1)/szStep)*szStep;
       }
       if( pCur->ss.iTerm>iMax ){
-        sqlite3_uint64 d = pCur->ss.iTerm - iMax;
-        pCur->ss.iTerm -= ((d+szStep-1)/szStep)*szStep;
+        pCur->ss.iTerm = iMax;
       }
     }else{
       sqlite3_int64 szStep = -pCur->ss.iStep;
@@ -530,8 +529,7 @@ static int seriesFilter(
         pCur->ss.iBase -= ((d+szStep-1)/szStep)*szStep;
       }
       if( pCur->ss.iTerm<iMin ){
-        sqlite3_uint64 d = iMin - pCur->ss.iTerm;
-        pCur->ss.iTerm += ((d+szStep-1)/szStep)*szStep;
+        pCur->ss.iTerm = iMin;
       }
     }
   }
index c474735113dcb945fd9f22dc8a49e231f56113a9..3096adc66e459c4062c5f338b6b48eec79d30785 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C The\s--echo\sflag\son\sthe\sCLI\salso\sechos\sdot-commands\sprovided\son\sthe\scommand-line.
-D 2025-03-12T15:17:13.208
+C Fix\sthe\sgenerate_series\sextension\sfor\sthe\scase\swhere\sthe\stermination\svalue\nis\snot\san\seven\smultiple\sof\sthe\sstep\sfrom\sthe\sstart\svalue\sand\sthere\sis\salso\na\svalue=NNN\sconstraint\sin\sthe\sWHERE\sclause.\n[forum:/info/bf2dc8e909983511|Forum\spost\sbf2dc8e9]
+D 2025-03-13T18:51:18.706
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -436,7 +436,7 @@ F ext/misc/regexp.c 388e7f237307c7dfbfb8dde44e097946f6c437801d63f0d7ad63f3320d4e
 F ext/misc/remember.c add730f0f7e7436cd15ea3fd6a90fd83c3f706ab44169f7f048438b7d6baa69c
 F ext/misc/rot13.c 51ac5f51e9d5fd811db58a9c23c628ad5f333c173f1fc53c8491a3603d38556c
 F ext/misc/scrub.c 2a44b0d44c69584c0580ad2553f6290a307a49df4668941d2812135bfb96a946
-F ext/misc/series.c 13c13768db923313c561851c7feb0adf5c456a40d01bf7c57051895f3e4b81c7
+F ext/misc/series.c 69e0d2b5d193c67bdfee5baf79c10ec24a61a40212c7ca9c219edf7afa24305f
 F ext/misc/sha1.c cb5002148c2661b5946f34561701e9105e9d339b713ec8ac057fd888b196dcb9
 F ext/misc/shathree.c fd22d70620f86a0467acfdd3acd8435d5cb54eb1e2d9ff36ae44e389826993df
 F ext/misc/showauth.c 732578f0fe4ce42d577e1c86dc89dd14a006ab52
@@ -1717,7 +1717,7 @@ F test/sync.test 89539f4973c010eda5638407e71ca7fddbcd8e0594f4c9980229f804d433309
 F test/sync2.test 8f9f7d4f6d5be8ca8941a8dadcc4299e558cb6a1ff653a9469146c7a76ef2039
 F test/syscall.test a067468b43b8cb2305e9f9fe414e5f40c875bb5d2cba5f00b8154396e95fcf37
 F test/sysfault.test c9f2b0d8d677558f74de750c75e12a5454719d04
-F test/tabfunc01.test 7be82bd50c7ede7f01b2dd17cd1b84f352c516078222d0b067d858f081e3f9a7
+F test/tabfunc01.test 66d1ea27289c19317bf111744a4d5fda901759945d22ddb5bc964641fc38c185
 F test/table.test 7862a00b58b5541511a26757ea9c5c7c3f8298766e98aa099deec703d9c0a8e0
 F test/tableapi.test e37c33e6be2276e3a96bb54b00eea7f321277115d10e5b30fdb52a112b432750
 F test/tableopts.test dba698ba97251017b7c80d738c198d39ab747930
@@ -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 ba058ce90a2ba9ebc4d8fb289108c04f80fa85da01c0b8bd58855681836ba83d
-R 8a620b0dc40f645c425a37f6c9520afe
+P 6ec0c03b954cf705da076d035a1cc2e784233ae28857385379e44a59af6c5ec4
+R ed704471ff935c4c658477722480723c
 U drh
-Z 59b1c4ee8192208101e011858b1f1e61
+Z 7365cbca0dfe1a68adc01dee6650e845
 # Remove this line to create a well-formed Fossil manifest.
index 30117bd21c33ebedd3c791a0328c69a848558d0f..f66e3d0bb3c716743682de63ac6c21bb80185134 100644 (file)
@@ -1 +1 @@
-6ec0c03b954cf705da076d035a1cc2e784233ae28857385379e44a59af6c5ec4
+75e72e3b0d0d689d39e00a01dc361dd6ce2649e68d200bf501ddcf04063041b2
index b6797171e0b3017f80ca2ee57029cb79afa784f9..cbf9865edab4575aa571049b5356ee494aae08a9 100644 (file)
@@ -181,6 +181,19 @@ do_execsql_test tabfunc01-4.4 {
   SELECT * FROM (generate_series(1,5,2)) AS x LIMIT 10;
 } {1 3 5}
 
+# 2025-03-13 forum post bf2dc8e909983511
+#
+do_execsql_test tabfunc01-5.1 {
+  SELECT value
+    FROM generate_series(60,73,6)
+   WHERE value=66;
+} 66
+do_execsql_test tabfunc01-5.2 {
+  SELECT value
+    FROM generate_series(73,60,-6)
+   WHERE value=67;
+} 67
+
 # The next series of tests is verifying that virtual table are able
 # to optimize the IN operator, even on terms that are not marked "omit".
 # When the generate_series virtual table is compiled for the testfixture,