diff --git a/core/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java b/core/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java index b058ccc159..3ed05b3819 100644 --- a/core/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/core/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -749,6 +749,7 @@ public class SQLExprParser extends SQLParser { case SHOW: case INOUT: case OUTER: + case QUALIFY: sqlExpr = new SQLIdentifierExpr(lexer.stringVal()); lexer.nextToken(); break; diff --git a/core/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java b/core/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java index 57f45d139e..8b4fa85f72 100644 --- a/core/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java +++ b/core/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java @@ -283,6 +283,7 @@ public class SQLParser { case REPEAT: case USE: case MOD: + case QUALIFY: case OUT: { String strVal = lexer.stringVal(); lexer.nextToken(); diff --git a/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsResourceTest.java b/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsResourceTest.java index 63e78de4d1..dc67576efb 100644 --- a/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsResourceTest.java +++ b/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsResourceTest.java @@ -36,6 +36,10 @@ public class OdpsResourceTest extends TestCase { exec_test("bvt/parser/odps-9.txt"); } + public void test_10() throws Exception { + exec_test("bvt/parser/odps-10.txt"); + } + public void exec_test(String resource) throws Exception { String input = TestUtil.getResource(resource); String[] items = input.split("---------------------------"); diff --git a/core/src/test/resources/bvt/parser/odps-10.txt b/core/src/test/resources/bvt/parser/odps-10.txt new file mode 100644 index 0000000000..f0818e1743 --- /dev/null +++ b/core/src/test/resources/bvt/parser/odps-10.txt @@ -0,0 +1,6 @@ +select qualify.api_name +from t_api qualify where qualify.api_name is not null; +--------------------------- +SELECT qualify.api_name +FROM t_api qualify +WHERE qualify.api_name IS NOT NULL; \ No newline at end of file