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++) {