diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup index cd4ea3cdb9d50c..0d7e8a5dbb63a4 100644 --- a/fe/fe-core/src/main/cup/sql_parser.cup +++ b/fe/fe-core/src/main/cup/sql_parser.cup @@ -3262,6 +3262,46 @@ select_list_item ::= {: RESULT = new SelectListItem(expr, alias); :} + | expr:e1 opt_collate:collate EQUAL:op expr:e2 select_alias:alias + {: + Predicate p = new BinaryPredicate(BinaryPredicate.Operator.EQ, e1, e2); + RESULT = new SelectListItem(p, alias); + :} + | expr:e1 opt_collate:collate NOT EQUAL:op expr:e2 select_alias:alias + {: + Predicate p = new BinaryPredicate(BinaryPredicate.Operator.NE, e1, e2); + RESULT = new SelectListItem(p, alias); + :} + | expr:e1 opt_collate:collate LESSTHAN GREATERTHAN:op expr:e2 select_alias:alias + {: + Predicate p = new BinaryPredicate(BinaryPredicate.Operator.NE, e1, e2); + RESULT = new SelectListItem(p, alias); + :} + | expr:e1 opt_collate:collate LESSTHAN EQUAL:op expr:e2 select_alias:alias + {: + Predicate p = new BinaryPredicate(BinaryPredicate.Operator.LE, e1, e2); + RESULT = new SelectListItem(p, alias); + :} + | expr:e1 opt_collate:collate GREATERTHAN EQUAL:op expr:e2 select_alias:alias + {: + Predicate p = new BinaryPredicate(BinaryPredicate.Operator.GE, e1, e2); + RESULT = new SelectListItem(p, alias); + :} + | expr:e1 opt_collate:collate LESSTHAN:op expr:e2 select_alias:alias + {: + Predicate p = new BinaryPredicate(BinaryPredicate.Operator.LT, e1, e2); + RESULT = new SelectListItem(p, alias); + :} + | expr:e1 opt_collate:collate GREATERTHAN:op expr:e2 select_alias:alias + {: + Predicate p = new BinaryPredicate(BinaryPredicate.Operator.GT, e1, e2); + RESULT = new SelectListItem(p, alias); + :} + | expr:e1 opt_collate:collate LESSTHAN EQUAL GREATERTHAN:op expr:e2 select_alias:alias + {: + Predicate p = new BinaryPredicate(BinaryPredicate.Operator.EQ_FOR_NULL, e1, e2); + RESULT = new SelectListItem(p, alias); + :} | star_expr:expr {: RESULT = expr; diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java index 84c7757712027c..e03e8c5a39fddb 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java @@ -350,4 +350,16 @@ public void testOuterJoinNullUnionView() throws Exception{ "SELECT v1.k FROM test_view AS v1 LEFT OUTER JOIN test_view AS v2 ON v1.k=v2.k"; dorisAssert.query(sql).explainQuery(); } + + @Test + public void testDataGripSupport() throws Exception { + String sql = "select schema();"; + dorisAssert.query(sql).explainQuery(); + sql = "select\n" + + "collation_name,\n" + + "character_set_name,\n" + + "is_default collate utf8_general_ci = 'Yes' as is_default\n" + + "from information_schema.collations"; + dorisAssert.query(sql).explainQuery(); + } }