diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGExprParser.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGExprParser.java index 4fa5092a43..de6b67faac 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGExprParser.java @@ -40,6 +40,14 @@ public class PGExprParser extends SQLExprParser { this.aggregateFunctions = AGGREGATE_FUNCTIONS; this.dbType = JdbcConstants.POSTGRESQL; } + + @Override + public SQLDataType parseDataType() { + if (lexer.token() == Token.TYPE) { + lexer.nextToken(); + } + return super.parseDataType(); + } @Override public PGOrderBy parseOrderBy() { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGLexer.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGLexer.java index 8f3fc4f5ad..ff1377df20 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGLexer.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGLexer.java @@ -63,6 +63,7 @@ public class PGLexer extends Lexer { map.put("FALSE", Token.FALSE); map.put("ARRAY", Token.ARRAY); map.put("IF", Token.IF); + map.put("TYPE", Token.TYPE); DEFAULT_PG_KEYWORDS = new Keywords(map); } diff --git a/src/main/java/com/alibaba/druid/sql/parser/Token.java b/src/main/java/com/alibaba/druid/sql/parser/Token.java index a20e118eb4..4fa67c12e1 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/Token.java +++ b/src/main/java/com/alibaba/druid/sql/parser/Token.java @@ -154,6 +154,7 @@ public enum Token { RETURNING("RETURNING"), COMMENT("COMMENT"), OVER("OVER"), + TYPE("TYPE"), // oracle START("START"),