This is an automated email from the ASF dual-hosted git repository.
snuyanzin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new 134a9e6fc30 [FLINK-36840][table] Add correct call syntax for functions
without `()`
134a9e6fc30 is described below
commit 134a9e6fc30cf34b09f09ef6c86a59b9b1d3e439
Author: Gustavo de Morais <[email protected]>
AuthorDate: Wed Dec 4 13:57:36 2024 +0100
[FLINK-36840][table] Add correct call syntax for functions without `()`
---
.../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 5e62819495b..ec4e4291089 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
@@ -2155,6 +2155,7 @@ public final class BuiltInFunctionDefinitions {
BuiltInFunctionDefinition.newBuilder()
.name("currentDate")
.sqlName("CURRENT_DATE")
+ .callSyntax(SqlCallSyntax.NO_PARENTHESIS)
.kind(SCALAR)
.outputTypeStrategy(explicit(DATE().notNull()))
.build();
@@ -2163,6 +2164,7 @@ public final class BuiltInFunctionDefinitions {
BuiltInFunctionDefinition.newBuilder()
.name("currentTime")
.sqlName("CURRENT_TIME")
+ .callSyntax(SqlCallSyntax.NO_PARENTHESIS)
.kind(SCALAR)
.outputTypeStrategy(explicit(TIME().notNull()))
.build();
@@ -2170,6 +2172,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();
@@ -2178,6 +2181,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();
@@ -2201,6 +2205,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 f961391a07a..7552457bd9e 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
@@ -70,6 +70,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.