Skip to content

Commit 8d89c1e

Browse files
committed
Merge branch 'subpr-b' into subpr-c
2 parents 9eb9c4f + 895e993 commit 8d89c1e

85 files changed

Lines changed: 1870 additions & 1479 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

core/src/main/java/org/opensearch/sql/calcite/CalciteRexNodeVisitor.java

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -579,26 +579,8 @@ public RexNode visitWindowFunction(WindowFunction node, CalcitePlanContext conte
579579
(arguments.isEmpty() || arguments.size() == 1)
580580
? Collections.emptyList()
581581
: arguments.subList(1, arguments.size());
582-
List<RexNode> nodes =
583-
PPLFuncImpTable.INSTANCE.validateAggFunctionSignature(
584-
functionName, field, args, context.rexBuilder);
585-
return nodes != null
586-
? PlanUtils.makeOver(
587-
context,
588-
functionName,
589-
nodes.getFirst(),
590-
nodes.size() <= 1 ? Collections.emptyList() : nodes.subList(1, nodes.size()),
591-
partitions,
592-
List.of(),
593-
node.getWindowFrame())
594-
: PlanUtils.makeOver(
595-
context,
596-
functionName,
597-
field,
598-
args,
599-
partitions,
600-
List.of(),
601-
node.getWindowFrame());
582+
return PlanUtils.makeOver(
583+
context, functionName, field, args, partitions, List.of(), node.getWindowFrame());
602584
})
603585
.orElseThrow(
604586
() ->

core/src/main/java/org/opensearch/sql/calcite/utils/PPLOperandTypes.java

Lines changed: 164 additions & 194 deletions
Large diffs are not rendered by default.

core/src/main/java/org/opensearch/sql/calcite/utils/UserDefinedFunctionUtils.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.apache.calcite.sql.validate.SqlUserDefinedAggFunction;
4040
import org.apache.calcite.tools.RelBuilder;
4141
import org.apache.calcite.util.Optionality;
42+
import org.jspecify.annotations.NonNull;
4243
import org.opensearch.sql.calcite.type.AbstractExprRelDataType;
4344
import org.opensearch.sql.calcite.udf.UserDefinedAggFunction;
4445
import org.opensearch.sql.calcite.utils.OpenSearchTypeFactory.ExprUDT;
@@ -213,7 +214,7 @@ public static ImplementorUDF adaptExprMethodToUDF(
213214
String methodName,
214215
SqlReturnTypeInference returnTypeInference,
215216
NullPolicy nullPolicy,
216-
@Nullable UDFOperandMetadata operandMetadata) {
217+
@NonNull UDFOperandMetadata operandMetadata) {
217218
NotNullImplementor implementor =
218219
(translator, call, translatedOperands) -> {
219220
List<Expression> operands =
@@ -229,7 +230,7 @@ public SqlReturnTypeInference getReturnTypeInference() {
229230
}
230231

231232
@Override
232-
public UDFOperandMetadata getOperandMetadata() {
233+
public @NonNull UDFOperandMetadata getOperandMetadata() {
233234
return operandMetadata;
234235
}
235236
};
@@ -261,7 +262,7 @@ public SqlReturnTypeInference getReturnTypeInference() {
261262
}
262263

263264
@Override
264-
public UDFOperandMetadata getOperandMetadata() {
265+
public @NonNull UDFOperandMetadata getOperandMetadata() {
265266
return operandMetadata;
266267
}
267268
};
@@ -302,7 +303,7 @@ public SqlReturnTypeInference getReturnTypeInference() {
302303
}
303304

304305
@Override
305-
public UDFOperandMetadata getOperandMetadata() {
306+
public @NonNull UDFOperandMetadata getOperandMetadata() {
306307
return operandMetadata;
307308
}
308309
};

core/src/main/java/org/opensearch/sql/calcite/utils/binning/BinnableField.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import lombok.Getter;
99
import org.apache.calcite.rel.type.RelDataType;
1010
import org.apache.calcite.rex.RexNode;
11-
import org.opensearch.sql.calcite.utils.OpenSearchTypeFactory;
11+
import org.opensearch.sql.calcite.utils.OpenSearchTypeUtil;
1212
import org.opensearch.sql.exception.SemanticCheckException;
1313

1414
/** Represents a field that supports binning operations. */
@@ -33,8 +33,8 @@ public BinnableField(RexNode fieldExpr, RelDataType fieldType, String fieldName)
3333
this.fieldType = fieldType;
3434
this.fieldName = fieldName;
3535

36-
this.isTimeBased = OpenSearchTypeFactory.isTimeBasedType(fieldType);
37-
this.isNumeric = OpenSearchTypeFactory.isNumericType(fieldType);
36+
this.isTimeBased = OpenSearchTypeUtil.isDatetime(fieldType);
37+
this.isNumeric = OpenSearchTypeUtil.isNumericOrCharacter(fieldType);
3838

3939
// Reject truly unsupported types (e.g., BOOLEAN, ARRAY, MAP)
4040
if (!isNumeric && !isTimeBased) {

core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/ArrayFunctionImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@
2222
import org.apache.calcite.rel.type.RelDataTypeFactory;
2323
import org.apache.calcite.rex.RexCall;
2424
import org.apache.calcite.sql.fun.SqlLibraryOperators;
25+
import org.apache.calcite.sql.type.OperandTypes;
2526
import org.apache.calcite.sql.type.SqlReturnTypeInference;
2627
import org.apache.calcite.sql.type.SqlTypeName;
28+
import org.jspecify.annotations.NonNull;
2729
import org.opensearch.sql.expression.function.ImplementorUDF;
2830
import org.opensearch.sql.expression.function.UDFOperandMetadata;
2931

@@ -59,8 +61,8 @@ public SqlReturnTypeInference getReturnTypeInference() {
5961
}
6062

6163
@Override
62-
public UDFOperandMetadata getOperandMetadata() {
63-
return null;
64+
public @NonNull UDFOperandMetadata getOperandMetadata() {
65+
return UDFOperandMetadata.wrap(OperandTypes.ARRAY_FUNCTION);
6466
}
6567

6668
public static class ArrayImplementor implements NotNullImplementor {

core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/ExistsFunctionImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
import org.apache.calcite.linq4j.tree.Types;
1515
import org.apache.calcite.rex.RexCall;
1616
import org.apache.calcite.schema.impl.ScalarFunctionImpl;
17+
import org.apache.calcite.sql.type.OperandTypes;
1718
import org.apache.calcite.sql.type.ReturnTypes;
1819
import org.apache.calcite.sql.type.SqlReturnTypeInference;
20+
import org.jspecify.annotations.NonNull;
1921
import org.opensearch.sql.expression.function.ImplementorUDF;
2022
import org.opensearch.sql.expression.function.UDFOperandMetadata;
2123

@@ -35,8 +37,8 @@ public SqlReturnTypeInference getReturnTypeInference() {
3537
}
3638

3739
@Override
38-
public UDFOperandMetadata getOperandMetadata() {
39-
return null;
40+
public @NonNull UDFOperandMetadata getOperandMetadata() {
41+
return UDFOperandMetadata.wrap(OperandTypes.EXISTS);
4042
}
4143

4244
public static class ExistsImplementor implements NotNullImplementor {

core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/FilterFunctionImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
import org.apache.calcite.linq4j.tree.Types;
1616
import org.apache.calcite.rex.RexCall;
1717
import org.apache.calcite.schema.impl.ScalarFunctionImpl;
18+
import org.apache.calcite.sql.type.OperandTypes;
1819
import org.apache.calcite.sql.type.ReturnTypes;
1920
import org.apache.calcite.sql.type.SqlReturnTypeInference;
21+
import org.jspecify.annotations.NonNull;
2022
import org.opensearch.sql.expression.function.ImplementorUDF;
2123
import org.opensearch.sql.expression.function.UDFOperandMetadata;
2224

@@ -35,8 +37,8 @@ public SqlReturnTypeInference getReturnTypeInference() {
3537
}
3638

3739
@Override
38-
public UDFOperandMetadata getOperandMetadata() {
39-
return null;
40+
public @NonNull UDFOperandMetadata getOperandMetadata() {
41+
return UDFOperandMetadata.wrap(OperandTypes.MAP_FUNCTION);
4042
}
4143

4244
public static class FilterImplementor implements NotNullImplementor {

core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/ForallFunctionImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
import org.apache.calcite.linq4j.tree.Types;
1515
import org.apache.calcite.rex.RexCall;
1616
import org.apache.calcite.schema.impl.ScalarFunctionImpl;
17+
import org.apache.calcite.sql.type.OperandTypes;
1718
import org.apache.calcite.sql.type.ReturnTypes;
1819
import org.apache.calcite.sql.type.SqlReturnTypeInference;
20+
import org.jspecify.annotations.NonNull;
1921
import org.opensearch.sql.expression.function.ImplementorUDF;
2022
import org.opensearch.sql.expression.function.UDFOperandMetadata;
2123

@@ -34,8 +36,8 @@ public SqlReturnTypeInference getReturnTypeInference() {
3436
}
3537

3638
@Override
37-
public UDFOperandMetadata getOperandMetadata() {
38-
return null;
39+
public @NonNull UDFOperandMetadata getOperandMetadata() {
40+
return UDFOperandMetadata.wrap(OperandTypes.MAP_FUNCTION);
3941
}
4042

4143
public static class ForallImplementor implements NotNullImplementor {

core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/MVAppendFunctionImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818
import org.apache.calcite.rel.type.RelDataTypeFactory;
1919
import org.apache.calcite.rex.RexCall;
2020
import org.apache.calcite.sql.SqlOperatorBinding;
21+
import org.apache.calcite.sql.type.OperandTypes;
2122
import org.apache.calcite.sql.type.SqlReturnTypeInference;
2223
import org.apache.calcite.sql.type.SqlTypeName;
24+
import org.jspecify.annotations.NonNull;
2325
import org.opensearch.sql.expression.function.ImplementorUDF;
2426
import org.opensearch.sql.expression.function.UDFOperandMetadata;
2527

@@ -49,8 +51,8 @@ public SqlReturnTypeInference getReturnTypeInference() {
4951
}
5052

5153
@Override
52-
public UDFOperandMetadata getOperandMetadata() {
53-
return null;
54+
public @NonNull UDFOperandMetadata getOperandMetadata() {
55+
return UDFOperandMetadata.wrap(OperandTypes.VARIADIC);
5456
}
5557

5658
private static RelDataType determineElementType(

core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/MVFindFunctionImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.calcite.sql.type.ReturnTypes;
2121
import org.apache.calcite.sql.type.SqlReturnTypeInference;
2222
import org.apache.calcite.sql.type.SqlTypeFamily;
23+
import org.jspecify.annotations.NonNull;
2324
import org.opensearch.sql.expression.function.ImplementorUDF;
2425
import org.opensearch.sql.expression.function.UDFOperandMetadata;
2526

@@ -45,7 +46,7 @@ public SqlReturnTypeInference getReturnTypeInference() {
4546
}
4647

4748
@Override
48-
public UDFOperandMetadata getOperandMetadata() {
49+
public @NonNull UDFOperandMetadata getOperandMetadata() {
4950
// Accept ARRAY and STRING for the regex pattern
5051
return UDFOperandMetadata.wrap(
5152
OperandTypes.family(SqlTypeFamily.ARRAY, SqlTypeFamily.CHARACTER));

0 commit comments

Comments
 (0)