mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved postgresql parser. for issue #2129
This commit is contained in:
@@ -17,6 +17,7 @@ package com.alibaba.druid.sql.parser;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.statement.*;
|
||||
import com.alibaba.druid.util.FnvHash;
|
||||
@@ -130,7 +131,7 @@ public class SQLCreateTableParser extends SQLDDLParser {
|
||||
|
||||
accept(Token.RPAREN);
|
||||
|
||||
if (lexer.identifierEquals("INHERITS")) {
|
||||
if (lexer.identifierEquals(FnvHash.Constants.INHERITS)) {
|
||||
lexer.nextToken();
|
||||
accept(Token.LPAREN);
|
||||
SQLName inherits = this.exprParser.name();
|
||||
@@ -145,6 +146,29 @@ public class SQLCreateTableParser extends SQLDDLParser {
|
||||
createTable.setSelect(select);
|
||||
}
|
||||
|
||||
if (lexer.token == Token.WITH && JdbcConstants.POSTGRESQL.equals(dbType)) {
|
||||
lexer.nextToken();
|
||||
accept(Token.LPAREN);
|
||||
|
||||
for (;;) {
|
||||
String name = lexer.stringVal();
|
||||
lexer.nextToken();
|
||||
accept(Token.EQ);
|
||||
SQLExpr value = this.exprParser.expr();
|
||||
value.setParent(createTable);
|
||||
|
||||
createTable.getTableOptions().put(name, value);
|
||||
|
||||
if (lexer.token == Token.COMMA) {
|
||||
lexer.nextToken();
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
accept(Token.RPAREN);
|
||||
}
|
||||
|
||||
return createTable;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user