I’m not keen on supporting foreign key syntax in the parser without also 
implementing foreign keys in the engine. That’s a big task.

Maybe the Babel parser could support it. 

Julian

> On Apr 16, 2022, at 05:43, Benchao Li <[email protected]> wrote:
> 
> Hi Arthur,
> 
> I checked out the parser in Calcite, and I think you are right,
> Calcite's server module does not support 'FOREIGN KEY' now.
> 
> Searching in Jira, there is no related issues about this feature.
> IMHO, Calcite could support it.
> 
> 
> Arthur Pan <[email protected]> 于2022年4月15日周五 22:52写道:
> 
>> Dear dev,
>> 
>> I'm trying to parse a create table statement with foreign key into SqlNode
>> using the following code snippet:
>> 
>> String createTable = "CREATE TABLE emp (\n" +
>>        "    empno INTEGER,\n" +
>>        "    name VARCHAR NOT NULL,\n" +
>>        "    deptno INTEGER,\n" +
>>        "    FOREIGN KEY (deptno) REFERENCES dept(deptno)\n" +
>>        ")";
>> SqlParser.Config schemaParserConfig = SqlParser.Config.DEFAULT
>>        .withParserFactory(SqlDdlParserImpl.FACTORY)
>>        .withLex(Lex.MYSQL);
>> SqlParser schemaParser = SqlParser.create(createTable, schemaParserConfig);
>> SqlNode schemaNode = schemaParser.parseStmt();
>> 
>> but it seems that the parser (from calcite-server) could not recognize the
>> "FOREIGN" keyword and it will throw an exception. If the foreign key row is
>> commented out, while the trailing comma above is removed, this statement
>> could be parsed correctly.
>> 
>> If the parser supports foreign key constraints, how should I use it (or is
>> there anything wrong/missing in the code above)? Otherwise is there a
>> reason why the foreign key constraint is not supported? I would appreciate
>> any help on this.
>> 
>> Sincerely,
>> Arthur Pan
>> 
> 
> 
> -- 
> 
> Best,
> Benchao Li

Reply via email to