Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: 修复解析sql条件为global in的问题,补充Clickhouse相关数据库类型的处理 #4881

Merged
merged 1 commit into from
Aug 1, 2022

Conversation

KANLON
Copy link
Contributor

@KANLON KANLON commented Jul 28, 2022

给SQLParserUtils 工具类,补充Clickhouse相关数据库处理,以免解析 clickhouse 的global in语法的时候报错,
如果不加这个的话,则执行如下代码的时候会报错:

    /**
     * 测试解析sql条件
     */
    @Test
    public void testParseGlobalInSqlCondition() {
        String sql1 = "a global in (select * from t)";
        SQLExpr conditionExpr = SQLUtils.toSQLExpr(sql1, DbType.clickhouse);
        System.out.println(conditionExpr.toString());
    }

报错信息如下:

com.alibaba.druid.sql.parser.ParserException: illegal sql expr : a global in (select * from t), pos 8, line 1, column 3, token IDENTIFIER global

at com.alibaba.druid.sql.SQLUtils.toSQLExpr(SQLUtils.java:279)
at com.hiido.SelfDruidSqlUtilsTest.testParseGlobalInSqlCondition(SelfDruidSqlUtilsTest.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)

@wenshao wenshao merged commit de0e199 into alibaba:master Aug 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants