[BEAM-9027] Unparse LIKE as binary operator
diff --git a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/SqlOperators.java b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/SqlOperators.java
index 9f0e948..3e9459f 100644
--- a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/SqlOperators.java
+++ b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/SqlOperators.java
@@ -31,6 +31,7 @@
import org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.schema.ScalarFunction;
import org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.SqlIdentifier;
import org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.SqlOperator;
+import org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.SqlSyntax;
import org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.parser.SqlParserPos;
import org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.type.FamilyOperandTypeChecker;
import org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.type.InferTypes;
@@ -74,6 +75,11 @@
// SqlUserDefinedFunction will be able to pass through Calcite codegen and get proper function
// called.
public static SqlUserDefinedFunction createUdfOperator(String name, Method method) {
+ return createUdfOperator(name, method, SqlSyntax.FUNCTION);
+ }
+
+ public static SqlUserDefinedFunction createUdfOperator(
+ String name, Method method, final SqlSyntax syntax) {
Function function = ScalarFunctionImpl.create(method);
final RelDataTypeFactory typeFactory = createTypeFactory();
@@ -96,7 +102,12 @@
InferTypes.explicit(argTypes),
typeChecker,
paramTypes,
- function);
+ function) {
+ @Override
+ public SqlSyntax getSyntax() {
+ return syntax;
+ }
+ };
}
private static RelDataType createSqlType(SqlTypeName typeName, boolean withNullability) {
@@ -171,7 +182,8 @@
public static final SqlOperator ENDS_WITH =
createUdfOperator("ENDS_WITH", BeamBuiltinMethods.ENDS_WITH_METHOD);
- public static final SqlOperator LIKE = createUdfOperator("LIKE", BeamBuiltinMethods.LIKE_METHOD);
+ public static final SqlOperator LIKE =
+ createUdfOperator("LIKE", BeamBuiltinMethods.LIKE_METHOD, SqlSyntax.BINARY);
public static final SqlOperator VALIDATE_TIMESTAMP =
createUdfOperator(