diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSQLStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSQLStatementParser.java index 69207d1621..584bf910a1 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSQLStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSQLStatementParser.java @@ -151,6 +151,14 @@ public class PGSQLStatementParser extends SQLStatementParser { SQLName tableName = exprParser.name(); deleteStatement.setTableName(tableName); + + if (lexer.token() == Token.AS) { + accept(Token.AS); + } + if (lexer.token() == Token.IDENTIFIER) { + deleteStatement.setAlias(lexer.stringVal()); + lexer.nextToken(); + } if (lexer.token() == Token.USING) { lexer.nextToken(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGDeleteTest.java b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGDeleteTest.java index 5e13e8c7b4..7724869667 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGDeleteTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGDeleteTest.java @@ -21,6 +21,7 @@ import org.junit.Assert; import com.alibaba.druid.sql.PGTest; import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGDeleteStatement; import com.alibaba.druid.sql.dialect.postgresql.parser.PGSQLStatementParser; import com.alibaba.druid.sql.dialect.postgresql.visitor.PGSchemaStatVisitor; import com.alibaba.druid.stat.TableStat; @@ -50,5 +51,17 @@ public class PGDeleteTest extends PGTest { //Assert.assertTrue(visitor.getFields().size() == 0); } + public void test_1() { + String sql = "delete from test01 as a where a.id = 2"; + PGSQLStatementParser parser = new PGSQLStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement statemen = statementList.get(0); + print(statementList); + assertTrue(statementList.size() == 1); + assertTrue(statemen instanceof PGDeleteStatement); + PGDeleteStatement delete = (PGDeleteStatement) statemen; + assertTrue(delete.getAlias().equalsIgnoreCase("a")); + assertTrue(delete.getTableName().getSimpleName().equals("test01")); + } }