Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5923,6 +5923,9 @@ private ArgumentsAnalysis analyzeArguments(

private boolean isPartitionColumnsProvidedByProperSchema(String functionName) {
return TableBuiltinTableFunction.M4.getFunctionName().equalsIgnoreCase(functionName)
|| TableBuiltinTableFunction.LOWPASS.getFunctionName().equalsIgnoreCase(functionName)
|| TableBuiltinTableFunction.HIGHPASS.getFunctionName().equalsIgnoreCase(functionName)
|| TableBuiltinTableFunction.XCORR.getFunctionName().equalsIgnoreCase(functionName)
|| TableBuiltinTableFunction.FFT.getFunctionName().equalsIgnoreCase(functionName);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1572,12 +1572,7 @@ public RelationPlan visitTableFunctionInvocation(TableFunctionInvocation node, V
symbol ->
new TableFunctionNode.PassThroughColumn(symbol, partitionBy.contains(symbol)))
.forEach(passThroughColumns::add);
} else if (!TableBuiltinTableFunction.M4
.getFunctionName()
.equalsIgnoreCase(functionAnalysis.getFunctionName())
&& !TableBuiltinTableFunction.FFT
.getFunctionName()
.equalsIgnoreCase(functionAnalysis.getFunctionName())
} else if (needAddPartitionColumn(functionAnalysis.getFunctionName())
&& tableArgument.getPartitionBy().isPresent()) {
tableArgument.getPartitionBy().get().stream()
// the original symbols for partitioning columns, not coerced
Expand Down Expand Up @@ -1613,6 +1608,14 @@ public RelationPlan visitTableFunctionInvocation(TableFunctionInvocation node, V
return new RelationPlan(root, analysis.getScope(node), outputSymbols.build(), outerContext);
}

private boolean needAddPartitionColumn(String functionName) {
return !TableBuiltinTableFunction.M4.getFunctionName().equalsIgnoreCase(functionName)
&& !TableBuiltinTableFunction.LOWPASS.getFunctionName().equalsIgnoreCase(functionName)
&& !TableBuiltinTableFunction.HIGHPASS.getFunctionName().equalsIgnoreCase(functionName)
&& !TableBuiltinTableFunction.XCORR.getFunctionName().equalsIgnoreCase(functionName)
&& !TableBuiltinTableFunction.FFT.getFunctionName().equalsIgnoreCase(functionName);
}

private RelationPlan planExternalTsFileScan(
TableFunctionInvocation node, TableFunctionInvocationAnalysis functionAnalysis) {
if (!(functionAnalysis.getTableFunctionHandle()
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -217,5 +217,11 @@ private CommonMessages() {}
public static final String EXCEPTION_DISK_SPACE_WARNING_THRESHOLD_MUST_BE_IN_0_1_BUT_WAS_7B345766 = "disk_space_warning_threshold 必须在 [0, 1) 范围内,但实际为 ";
public static final String LOG_TRUSTED_CHANNEL_FUNCTION_FAILED_INITIATOR_ARG_TARGET_ARG_E4C28443 =
"可信信道功能失效:发起者=%s,目标端=%s";

public static final String EXCEPTION_FILTER_FUNCTION_WPASS_VALIDATION = "wpass的取值范围应该位于(0, 1)";
public static final String EXCEPTION_NO_CALCULATE_COLUMNS = "没有找到可以计算的列.";
public static final String EXCEPTION_NOT_ALLOWED_COLUMNS = "只允许列类型为double, float, int32, int64参与函数计算, 当前列 %s 类型是 %s.";
public static final String EXCEPTION_FILTER_FUNCTION_ROW_INDEX_EXCEED_MAXIMUM = "分区行数超过了最大限制";
public static final String
EXCEPTION_XCORR_REQUIRES_EXACTLY_TWO_CALCULATION_COLUMNS_BUT_FOUND_ARG_2FF8EB0C =
"XCorr 要求必须正好有两列计算列,但实际找到 %d 列。";
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,13 @@
import org.apache.iotdb.commons.udf.builtin.relational.tvf.CumulateTableFunction;
import org.apache.iotdb.commons.udf.builtin.relational.tvf.FFTTableFunction;
import org.apache.iotdb.commons.udf.builtin.relational.tvf.HOPTableFunction;
import org.apache.iotdb.commons.udf.builtin.relational.tvf.HighPassTableFunction;
import org.apache.iotdb.commons.udf.builtin.relational.tvf.LowPassTableFunction;
import org.apache.iotdb.commons.udf.builtin.relational.tvf.M4TableFunction;
import org.apache.iotdb.commons.udf.builtin.relational.tvf.SessionTableFunction;
import org.apache.iotdb.commons.udf.builtin.relational.tvf.TumbleTableFunction;
import org.apache.iotdb.commons.udf.builtin.relational.tvf.VariationTableFunction;
import org.apache.iotdb.commons.udf.builtin.relational.tvf.XCorrTableFunction;
import org.apache.iotdb.udf.api.relational.TableFunction;

import java.util.Arrays;
Expand All @@ -49,7 +52,10 @@ public enum TableBuiltinTableFunction {
FFT("fft"),
FORECAST("forecast"),
PATTERN_MATCH("pattern_match"),
CLASSIFY("classify");
CLASSIFY("classify"),
LOWPASS("lowpass"),
HIGHPASS("highpass"),
XCORR("xcorr");

private final String functionName;

Expand Down Expand Up @@ -99,6 +105,12 @@ public static TableFunction getBuiltinTableFunction(String functionName) {
return new ForecastTableFunction();
case "classify":
return new ClassifyTableFunction();
case "lowpass":
return new LowPassTableFunction();
case "highpass":
return new HighPassTableFunction();
case "xcorr":
return new XCorrTableFunction();
default:
throw new UnsupportedOperationException(
String.format(QueryMessages.UNSUPPORTED_TABLE_FUNCTION, functionName));
Expand Down
Loading