This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch DefaultOrderByTime
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/DefaultOrderByTime by this 
push:
     new 41a9ba55deb Fix possible / zero bug
41a9ba55deb is described below

commit 41a9ba55deb808f9ab2dd4cd3f2a38bdf0cec47a
Author: JackieTien97 <[email protected]>
AuthorDate: Thu May 15 15:31:35 2025 +0800

    Fix possible / zero bug
---
 .../function/tvf/ForecastTableFunction.java           | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/ForecastTableFunction.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/ForecastTableFunction.java
index a04cb1c3ad3..534b0995da7 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/ForecastTableFunction.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/ForecastTableFunction.java
@@ -171,7 +171,7 @@ public class ForecastTableFunction implements TableFunction 
{
   private static final String KEEP_INPUT_PARAMETER_NAME = "KEEP_INPUT";
   private static final Boolean DEFAULT_KEEP_INPUT = Boolean.FALSE;
   private static final String IS_INPUT_COLUMN_NAME = "is_input";
-  private static final String OPTIONS_PARAMETER_NAME = "OPTIONS";
+  private static final String OPTIONS_PARAMETER_NAME = "MODEL_OPTIONS";
   private static final String DEFAULT_OPTIONS = "";
 
   private static final String INVALID_OPTIONS_FORMAT = "Invalid options: %s";
@@ -501,10 +501,19 @@ public class ForecastTableFunction implements 
TableFunction {
       // time column
       long inputStartTime = inputRecords.getFirst().getLong(0);
       long inputEndTime = inputRecords.getLast().getLong(0);
-      long interval =
-          outputInterval <= 0
-              ? (inputEndTime - inputStartTime) / inputRecords.size()
-              : outputInterval;
+      if (inputEndTime < inputStartTime) {
+        throw new SemanticException(
+            String.format(
+                "input end time should never less than start time, start time 
is %s, end time is %s",
+                inputStartTime, inputEndTime));
+      }
+      long interval = outputInterval;
+      if (outputInterval <= 0) {
+        interval =
+            inputRecords.size() == 1
+                ? 0
+                : (inputEndTime - inputStartTime) / (inputRecords.size() - 1);
+      }
       long outputTime =
           (outputStartTime == Long.MIN_VALUE) ? (inputEndTime + interval) : 
outputStartTime;
       for (int i = 0; i < outputLength; i++) {

Reply via email to