mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for pg sql parser
This commit is contained in:
@@ -59,24 +59,24 @@ public class PGSelectParser extends SQLSelectParser {
|
||||
accept(Token.RPAREN);
|
||||
return queryRest(valuesQuery);
|
||||
}
|
||||
|
||||
|
||||
if (lexer.token() == Token.LPAREN) {
|
||||
lexer.nextToken();
|
||||
|
||||
SQLSelectQuery select = query();
|
||||
if (select instanceof SQLSelectQueryBlock) {
|
||||
((SQLSelectQueryBlock) select).setParenthesized(true);
|
||||
}
|
||||
if (select instanceof SQLSelectQueryBlock) {
|
||||
((SQLSelectQueryBlock) select).setParenthesized(true);
|
||||
}
|
||||
accept(Token.RPAREN);
|
||||
|
||||
return queryRest(select);
|
||||
}
|
||||
|
||||
|
||||
PGSelectQueryBlock queryBlock = new PGSelectQueryBlock();
|
||||
|
||||
if (lexer.token() == Token.SELECT) {
|
||||
lexer.nextToken();
|
||||
|
||||
|
||||
if (lexer.token() == Token.COMMENT) {
|
||||
lexer.nextToken();
|
||||
}
|
||||
@@ -160,7 +160,7 @@ public class PGSelectParser extends SQLSelectParser {
|
||||
for (;;) {
|
||||
if (lexer.token() == Token.LIMIT) {
|
||||
PGLimit limit = new PGLimit();
|
||||
|
||||
|
||||
lexer.nextToken();
|
||||
if (lexer.token() == Token.ALL) {
|
||||
limit.setRowCount(new SQLIdentifierExpr("ALL"));
|
||||
@@ -168,7 +168,7 @@ public class PGSelectParser extends SQLSelectParser {
|
||||
} else {
|
||||
limit.setRowCount(expr());
|
||||
}
|
||||
|
||||
|
||||
queryBlock.setLimit(limit);
|
||||
} else if (lexer.token() == Token.OFFSET) {
|
||||
PGLimit limit = queryBlock.getLimit();
|
||||
@@ -259,13 +259,22 @@ public class PGSelectParser extends SQLSelectParser {
|
||||
|
||||
protected SQLTableSource parseTableSourceRest(SQLTableSource tableSource) {
|
||||
if (lexer.token() == Token.AS && tableSource instanceof SQLExprTableSource) {
|
||||
lexer.nextToken();
|
||||
|
||||
String alias = null;
|
||||
if (lexer.token() == Token.IDENTIFIER) {
|
||||
alias = lexer.stringVal();
|
||||
lexer.nextToken();
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.LPAREN) {
|
||||
SQLExprTableSource exprTableSource = (SQLExprTableSource) tableSource;
|
||||
|
||||
String alias = this.as();
|
||||
PGFunctionTableSource functionTableSource = new PGFunctionTableSource(exprTableSource.getExpr());
|
||||
functionTableSource.setAlias(alias);
|
||||
|
||||
if (alias != null) {
|
||||
functionTableSource.setAlias(alias);
|
||||
}
|
||||
|
||||
lexer.nextToken();
|
||||
parserParameters(functionTableSource.getParameters());
|
||||
accept(Token.RPAREN);
|
||||
|
||||
+3
-1
@@ -97,6 +97,8 @@ public class PGSchemaStatVisitor extends SchemaStatVisitor implements PGASTVisit
|
||||
|
||||
@Override
|
||||
public boolean visit(PGWithQuery x) {
|
||||
x.getQuery().accept(this);
|
||||
|
||||
Map<String, String> aliasMap = getAliasMap();
|
||||
if (aliasMap != null) {
|
||||
String alias = null;
|
||||
@@ -109,7 +111,7 @@ public class PGSchemaStatVisitor extends SchemaStatVisitor implements PGASTVisit
|
||||
subQueryMap.put(alias, x.getQuery());
|
||||
}
|
||||
}
|
||||
x.getQuery().accept(this);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user