You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "galaxy yang (Jira)" <ji...@apache.org> on 2022/04/01 07:51:00 UTC

[jira] (CALCITE-5076) errors happen when i define materializations use sql with Lex.MYSQL

    [ https://issues.apache.org/jira/browse/CALCITE-5076 ]


    galaxy yang deleted comment on CALCITE-5076:
    --------------------------------------

was (Author: tobbi):
I created a pull request there [https://github.com/apache/calcite/pull/2759/files]   

would you please review [~julianhyde] 

> errors happen when i define materializations use sql with Lex.MYSQL
> -------------------------------------------------------------------
>
>                 Key: CALCITE-5076
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5076
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.30.0
>            Reporter: galaxy yang
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: image-2022-03-31-23-44-44-916.png, image-2022-03-31-23-45-01-468.png, image-2022-03-31-23-45-33-979.png, image-2022-03-31-23-46-46-939.png, image-2022-03-31-23-47-12-377.png
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> i have setted the CalciteConnectionConfig use the properties lex = MYSQL, errors happen when i define the materializations use sql with mysql syntax, but the query is ok
> {code:java}
> @Test void testScan() {
>     CalciteAssert.that()
>         .with(Lex.MYSQL)
>         .withMaterializations(
>             "{\n"
>                 + "  version: '1.0',\n"
>                 + "  defaultSchema: 'SCOTT_CLONE',\n"
>                 + "  schemas: [ {\n"
>                 + "    name: 'SCOTT_CLONE',\n"
>                 + "    type: 'custom',\n"
>                 + "    factory: 'org.apache.calcite.adapter.clone.CloneSchema$Factory',\n"
>                 + "    operand: {\n"
>                 + "      jdbcDriver: '" + JdbcTest.SCOTT.driver + "',\n"
>                 + "      jdbcUser: '" + JdbcTest.SCOTT.username + "',\n"
>                 + "      jdbcPassword: '" + JdbcTest.SCOTT.password + "',\n"
>                 + "      jdbcUrl: '" + JdbcTest.SCOTT.url + "',\n"
>                 + "      jdbcSchema: 'SCOTT'\n"
>                 + "   } } ]\n"
>                 + "}",
>             "m0",
>             "select empno, deptno from `emp` order by deptno")
>         .query(
>             "select empno, deptno from `emp`")
>         .enableMaterializations(true)
>         .explainContains("EnumerableTableScan(table=[[SCOTT_CLONE, m0]])")
>         .sameResultWithMaterializationsDisabled();
>   }
> {code}
> it throws such error:
> Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Object 'emp' not found within 'SCOTT_CLONE'; did you mean 'EMP'?
> i setted the lex with Lex.MYSQL, but the materialization's sql seems only support the default Lex.ORACLE, errors happen when i use back-quotes.  but the query sql is ok when i use mysql syntax.
> it is not a graceful thing that the materialization's sql and query sql are two different sql syntax when i changed the default syntax from oracle to others



--
This message was sent by Atlassian Jira
(v8.20.1#820001)