From 2cfdf1c9f53518d858a22fb67dcf280d5cdb71d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E8=99=B9?= <1157270989@qq.com> Date: Fri, 8 Aug 2025 00:21:00 +0800 Subject: [PATCH] Fix pg refresh materialized view concurrently --- .../com/alibaba/druid/sql/parser/SQLStatementParser.java | 3 ++- .../com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java | 6 +++--- core/src/test/resources/bvt/parser/postgresql/15.txt | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java b/core/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java index 2673b1e1de..ae7a49a6d6 100644 --- a/core/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java +++ b/core/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java @@ -1037,11 +1037,12 @@ public SQLStatement parseRefresh() { acceptIdentifier("MATERIALIZED"); + accept(Token.VIEW); + if (lexer.identifierEquals("CONCURRENTLY")) { lexer.nextToken(); stmt.setConcurrently(true); } - accept(Token.VIEW); stmt.setName(this.exprParser.name()); diff --git a/core/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java b/core/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java index bb30110f55..59641dc48f 100644 --- a/core/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/core/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -9302,12 +9302,12 @@ public boolean visit(SQLShowCreateMaterializedViewStatement x) { public boolean visit(SQLRefreshMaterializedViewStatement x) { print0(ucase ? "REFRESH MATERIALIZED" : "refresh materialized"); + print0(ucase ? " VIEW " : " view "); + if (x.isConcurrently()) { - print0(ucase ? " CONCURRENTLY" : " concurrently"); + print0(ucase ? "CONCURRENTLY " : "concurrently "); } - print0(ucase ? " VIEW " : " view "); - x.getName().accept(this); if (x.isWithNoData()) { diff --git a/core/src/test/resources/bvt/parser/postgresql/15.txt b/core/src/test/resources/bvt/parser/postgresql/15.txt index 7d2471ad68..0508566c84 100644 --- a/core/src/test/resources/bvt/parser/postgresql/15.txt +++ b/core/src/test/resources/bvt/parser/postgresql/15.txt @@ -1,3 +1,3 @@ -refresh materialized concurrently view v1 with no data +refresh materialized view concurrently v1 with no data -------------------- -REFRESH MATERIALIZED CONCURRENTLY VIEW v1 WITH NO DATA \ No newline at end of file +REFRESH MATERIALIZED VIEW CONCURRENTLY v1 WITH NO DATA \ No newline at end of file