You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Alex Ramos (Jira)" <ji...@apache.org> on 2020/11/20 06:44:00 UTC
[jira] [Created] (CALCITE-4412) SqlParser MySQL mode fails to parse
"INT(11)" type
Alex Ramos created CALCITE-4412:
-----------------------------------
Summary: SqlParser MySQL mode fails to parse "INT(11)" type
Key: CALCITE-4412
URL: https://issues.apache.org/jira/browse/CALCITE-4412
Project: Calcite
Issue Type: Bug
Components: server
Affects Versions: 1.26.0
Environment: Java 11
Windows 10
Reporter: Alex Ramos
I am trying to use Calcite to parse some MySQL-style DDL. The parse fails on MySQL-style type declarations that include a display size e.g. int(11).
Here is my test code:
{code:java}
public class SqlParserMysqlTest {
private static final Config CONFIG = SqlParser.Config.DEFAULT
.withLex(Lex.MYSQL).withConformance(SqlConformanceEnum.MYSQL_5)
.withParserFactory(SqlDdlParserImpl.FACTORY);
@Test
public void testMysqlCreate() throws SqlParseException {
SqlParser sqlParser = SqlParser.create(
new SourceStringReader("create table `t1` (x int(11))"), CONFIG);
SqlNode sqlNode = sqlParser.parseQuery();
Assert.assertEquals(SqlKind.CREATE_TABLE, sqlNode.getKind());
SqlCreateTable create = (SqlCreateTable) sqlNode;
Assert.assertEquals("T1", create.name.getSimple());
final SqlColumnDeclaration sqlColumnDeclaration = (SqlColumnDeclaration) create.columnList
.get(0);
Assert.assertEquals("X", sqlColumnDeclaration.name.getSimple());
Assert.assertEquals("INTEGER",
sqlColumnDeclaration.dataType.getTypeName().getSimple());
}
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)