This is an automated email from the ASF dual-hosted git repository.
dwysakowicz pushed a commit to branch release-1.20
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/release-1.20 by this push:
new bbe1946923e [FLINK-36840][table] Add correct call syntax for functions
without `()` (#25756)
bbe1946923e is described below
commit bbe1946923ec72d0fb0af7199adc6314ba4fc128
Author: Gustavo de Morais <[email protected]>
AuthorDate: Fri Dec 6 17:44:11 2024 +0100
[FLINK-36840][table] Add correct call syntax for functions without `()`
(#25756)
---
.../flink/table/expressions/ExpressionSerializationTest.java | 8 +++++---
.../apache/flink/table/functions/BuiltInFunctionDefinitions.java | 5 +++++
.../main/java/org/apache/flink/table/functions/SqlCallSyntax.java | 6 ++++++
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git
a/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/expressions/ExpressionSerializationTest.java
b/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/expressions/ExpressionSerializationTest.java
index cee99c63273..a1dce0724c6 100644
---
a/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/expressions/ExpressionSerializationTest.java
+++
b/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/expressions/ExpressionSerializationTest.java
@@ -349,9 +349,11 @@ public class ExpressionSerializationTest {
.withField("f0", DataTypes.TIMESTAMP())
.withField("f1", DataTypes.TIMESTAMP())
.expectStr("TIMESTAMPDIFF(DAY, `f0`, `f1`)"),
-
TestSpec.forExpr(Expressions.currentDate()).expectStr("CURRENT_DATE()"),
-
TestSpec.forExpr(Expressions.currentTime()).expectStr("CURRENT_TIME()"),
-
TestSpec.forExpr(Expressions.currentTimestamp()).expectStr("CURRENT_TIMESTAMP()"),
+
TestSpec.forExpr(Expressions.currentDate()).expectStr("CURRENT_DATE"),
+
TestSpec.forExpr(Expressions.currentTime()).expectStr("CURRENT_TIME"),
+
TestSpec.forExpr(Expressions.currentTimestamp()).expectStr("CURRENT_TIMESTAMP"),
+
TestSpec.forExpr(Expressions.localTimestamp()).expectStr("LOCALTIMESTAMP"),
+
TestSpec.forExpr(Expressions.localTime()).expectStr("LOCALTIME"),
TestSpec.forExpr(Expressions.dateFormat($("f0"),
lit("yyyy-MM-dd")))
.withField("f0", DataTypes.TIMESTAMP(3))
.expectStr("DATE_FORMAT(`f0`, 'yyyy-MM-dd')"),
diff --git
a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/BuiltInFunctionDefinitions.java
b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/BuiltInFunctionDefinitions.java
index 80204ceeff6..9e58e1ca937 100644
---
a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/BuiltInFunctionDefinitions.java
+++
b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/BuiltInFunctionDefinitions.java
@@ -1863,6 +1863,7 @@ public final class BuiltInFunctionDefinitions {
BuiltInFunctionDefinition.newBuilder()
.name("currentDate")
.sqlName("CURRENT_DATE")
+ .callSyntax(SqlCallSyntax.NO_PARENTHESIS)
.kind(SCALAR)
.outputTypeStrategy(explicit(DATE().notNull()))
.build();
@@ -1871,6 +1872,7 @@ public final class BuiltInFunctionDefinitions {
BuiltInFunctionDefinition.newBuilder()
.name("currentTime")
.sqlName("CURRENT_TIME")
+ .callSyntax(SqlCallSyntax.NO_PARENTHESIS)
.kind(SCALAR)
.outputTypeStrategy(explicit(TIME().notNull()))
.build();
@@ -1878,6 +1880,7 @@ public final class BuiltInFunctionDefinitions {
public static final BuiltInFunctionDefinition LOCAL_TIME =
BuiltInFunctionDefinition.newBuilder()
.name("localTime")
+ .callSyntax(SqlCallSyntax.NO_PARENTHESIS)
.kind(SCALAR)
.outputTypeStrategy(explicit(TIME().notNull()))
.build();
@@ -1886,6 +1889,7 @@ public final class BuiltInFunctionDefinitions {
BuiltInFunctionDefinition.newBuilder()
.name("currentTimestamp")
.sqlName("CURRENT_TIMESTAMP")
+ .callSyntax(SqlCallSyntax.NO_PARENTHESIS)
.kind(SCALAR)
.outputTypeStrategy(explicit(TIMESTAMP_LTZ(3).notNull()))
.build();
@@ -1909,6 +1913,7 @@ public final class BuiltInFunctionDefinitions {
public static final BuiltInFunctionDefinition LOCAL_TIMESTAMP =
BuiltInFunctionDefinition.newBuilder()
.name("localTimestamp")
+ .callSyntax(SqlCallSyntax.NO_PARENTHESIS)
.kind(SCALAR)
.outputTypeStrategy(explicit(TIMESTAMP(3).notNull()))
.build();
diff --git
a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/SqlCallSyntax.java
b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/SqlCallSyntax.java
index 479ca8d9be3..3052d0001f3 100644
---
a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/SqlCallSyntax.java
+++
b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/SqlCallSyntax.java
@@ -69,6 +69,12 @@ public interface SqlCallSyntax {
}
};
+ /**
+ * Function syntax for functions without parenthesis (e.g., CURRENT_DATE,
LOCALTIMESTAMP,
+ * LOCALTIME, CURRENT_TIMESTAMP, CURRENT_TIME).
+ */
+ SqlCallSyntax NO_PARENTHESIS = (sqlName, operands) -> sqlName;
+
/**
* Function syntax for handling DISTINCT aggregates. Special case. It does
not have a syntax
* itself, but modifies the syntax of the nested call.