This is an automated email from the ASF dual-hosted git repository. libenchao pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/main by this push: new 3731206c1c [CALCITE-4802] Babel parser doesn't parse IF(condition, then, else) statements 3731206c1c is described below commit 3731206c1c360f7803955e60929063496b7e4164 Author: xiejiajun <jiajunbernou...@foxmail.com> AuthorDate: Sat Jun 18 17:20:58 2022 +0800 [CALCITE-4802] Babel parser doesn't parse IF(condition, then, else) statements This closes #2835 --- babel/src/main/codegen/config.fmpp | 2 +- .../java/org/apache/calcite/sql/parser/SqlParserTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/babel/src/main/codegen/config.fmpp b/babel/src/main/codegen/config.fmpp index f75631e739..3562e254dc 100644 --- a/babel/src/main/codegen/config.fmpp +++ b/babel/src/main/codegen/config.fmpp @@ -45,6 +45,7 @@ data: { # items in this list become non-reserved nonReservedKeywordsToAdd: [ # not in core, added in babel + "IF" "SEMI" # The following keywords are reserved in core Calcite, @@ -236,7 +237,6 @@ data: { "HOLD" "HOUR" "IDENTITY" -# "IF" # not a keyword in Calcite "ILIKE" "IMMEDIATE" "IMMEDIATELY" diff --git a/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java b/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java index 38da13a74c..e692dfaee2 100644 --- a/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java +++ b/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java @@ -4915,6 +4915,18 @@ public class SqlParserTest { .fails("(?s).*when1.*"); } + /** Test case for + * <a href="https://issues.apache.org/jira/browse/CALCITE-4802">[CALCITE-4802] + * Babel parser doesn't parse IF(condition, then, else) statements </a>. + */ + @Test void testIf() { + expr("if(true, 1, 0)") + .ok("`IF`(TRUE, 1, 0)"); + + sql("select 1 as if") + .ok("SELECT 1 AS `IF`"); + } + @Test void testNullIf() { expr("nullif(v1,v2)") .ok("NULLIF(`V1`, `V2`)");