You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2026/08/23 13:53:52 UTC
(shardingsphere) branch master updated: Support parsing Doris REFRESH MATERIALIZED VIEW syntax (#39582)
This is an automated email from the ASF dual-hosted git repository.
terrymanu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new ccc490cce63 Support parsing Doris REFRESH MATERIALIZED VIEW syntax (#39582)
ccc490cce63 is described below
commit ccc490cce637e600d8591b5835b3b57f5c6c392f
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Aug 23 21:53:46 2026 +0800
Support parsing Doris REFRESH MATERIALIZED VIEW syntax (#39582)
- Add REFRESH MATERIALIZED VIEW <mv-name> (AUTO | COMPLETE | PARTITIONS) grammar rule to the Doris dialect
- Add DorisRefreshMaterializedViewStatement and visitRefreshMaterializedView to extract mv name, refresh type and partition names
- Add parser IT cases covering the AUTO, COMPLETE and PARTITIONS variants from issue #31457
Fixes #31457
---
.../core/database/visitor/SQLVisitorRule.java | 2 +
.../src/main/antlr4/imports/doris/DDLStatement.g4 | 12 +++++
.../sql/parser/autogen/DorisStatement.g4 | 1 +
.../statement/type/DorisDDLStatementVisitor.java | 15 ++++++
.../ddl/DorisRefreshMaterializedViewStatement.java | 47 ++++++++++++++++++
.../ddl/dialect/doris/DorisDDLStatementAssert.java | 5 ++
...orisRefreshMaterializedViewStatementAssert.java | 57 ++++++++++++++++++++++
.../cases/parser/jaxb/RootSQLParserTestCases.java | 4 ++
...isRefreshMaterializedViewStatementTestCase.java | 47 ++++++++++++++++++
.../case/ddl/refresh-materialized-view.xml | 13 +++++
.../supported/ddl/refresh-materialized-view.xml | 3 ++
11 files changed, 206 insertions(+)
diff --git a/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java b/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
index d5841d5c54b..ef9368e1df0 100644
--- a/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
+++ b/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
@@ -831,6 +831,8 @@ public enum SQLVisitorRule {
CREATE_MATERIALIZED_VIEW_LOG("CreateMaterializedViewLog", SQLStatementType.DDL),
+ DORIS_REFRESH_MATERIALIZED_VIEW("RefreshMaterializedView", SQLStatementType.DDL),
+
CREATE_OPERATOR("CreateOperator", SQLStatementType.DDL),
CREATE_INDEX_TYPE("CreateIndexType", SQLStatementType.DDL),
diff --git a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4 b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
index 975b2ab45ad..8dc552f7e84 100644
--- a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
+++ b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
@@ -515,6 +515,18 @@ refreshSchedule
;
// DORIS ADDED END
+// DORIS ADDED BEGIN
+refreshMaterializedView
+ : REFRESH MATERIALIZED VIEW name (partitionSpec | refreshMethod)
+ ;
+// DORIS ADDED END
+
+// DORIS ADDED BEGIN
+partitionSpec
+ : PARTITIONS LP_ identifierList RP_
+ ;
+// DORIS ADDED END
+
alterView
: ALTER (ALGORITHM EQ_ (UNDEFINED | MERGE | TEMPTABLE))?
ownerStatement?
diff --git a/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4 b/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
index 7030a3f3176..f77c74cf8a8 100644
--- a/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
+++ b/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
@@ -142,6 +142,7 @@ execute
| delimiter
| startReplica
| createMaterializedView
+ | refreshMaterializedView
| resumeJob
| pauseJob
| dropJob
diff --git a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
index 243bf4c4e54..c5b90b289e4 100644
--- a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
+++ b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
@@ -80,6 +80,7 @@ import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateS
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateLikeClauseContext;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateLogfileGroupContext;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateMaterializedViewContext;
+import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.RefreshMaterializedViewContext;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateProcedureContext;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateServerContext;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateSyncJobContext;
@@ -291,6 +292,7 @@ import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisPauseJobSta
import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisResumeJobStatement;
import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisResumeSyncJobStatement;
import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisStopSyncJobStatement;
+import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisRefreshMaterializedViewStatement;
import org.apache.shardingsphere.sql.parser.statement.mysql.ddl.event.MySQLAlterEventStatement;
import org.apache.shardingsphere.sql.parser.statement.mysql.ddl.event.MySQLCreateEventStatement;
import org.apache.shardingsphere.sql.parser.statement.mysql.ddl.event.MySQLDropEventStatement;
@@ -2037,6 +2039,19 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
return new CreateMaterializedViewStatement(getDatabaseType());
}
+ @Override
+ public ASTNode visitRefreshMaterializedView(final RefreshMaterializedViewContext ctx) {
+ boolean auto = null != ctx.refreshMethod() && null != ctx.refreshMethod().AUTO();
+ boolean complete = null != ctx.refreshMethod() && null != ctx.refreshMethod().COMPLETE();
+ List<String> partitionNames = new LinkedList<>();
+ if (null != ctx.partitionSpec()) {
+ for (IdentifierContext each : ctx.partitionSpec().identifierList().identifier()) {
+ partitionNames.add(((IdentifierValue) visit(each)).getValue());
+ }
+ }
+ return new DorisRefreshMaterializedViewStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.name().identifier())).getValue(), auto, complete, partitionNames);
+ }
+
@Override
public ASTNode visitCreateEncryptKey(final CreateEncryptKeyContext ctx) {
return new CreateEncryptKeyStatement(getDatabaseType());
diff --git a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisRefreshMaterializedViewStatement.java b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisRefreshMaterializedViewStatement.java
new file mode 100644
index 00000000000..dfeab8eaefa
--- /dev/null
+++ b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisRefreshMaterializedViewStatement.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sql.parser.statement.doris.ddl;
+
+import lombok.Getter;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
+
+import java.util.List;
+
+/**
+ * Refresh materialized view statement for Doris.
+ */
+@Getter
+public final class DorisRefreshMaterializedViewStatement extends DDLStatement {
+
+ private final String mvName;
+
+ private final boolean auto;
+
+ private final boolean complete;
+
+ private final List<String> partitionNames;
+
+ public DorisRefreshMaterializedViewStatement(final DatabaseType databaseType, final String mvName, final boolean auto, final boolean complete, final List<String> partitionNames) {
+ super(databaseType);
+ this.mvName = mvName;
+ this.auto = auto;
+ this.complete = complete;
+ this.partitionNames = partitionNames;
+ }
+}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDDLStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDDLStatementAssert.java
index d1e86cc31f9..3663d9700fa 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDDLStatementAssert.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDDLStatementAssert.java
@@ -26,6 +26,7 @@ import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisAlterWorklo
import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisCreateFunctionStatement;
import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisDropFunctionStatement;
import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisCancelMaterializedViewTaskStatement;
+import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisRefreshMaterializedViewStatement;
import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisCancelTaskStatement;
import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisAlterJobStatement;
import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisDropJobStatement;
@@ -41,6 +42,7 @@ import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAsse
import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.dialect.doris.type.DorisAlterColocateGroupStatementAssert;
import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.dialect.doris.type.DorisAlterStoragePolicyStatementAssert;
import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.dialect.doris.type.DorisAlterWorkloadGroupStatementAssert;
+import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.dialect.doris.type.DorisRefreshMaterializedViewStatementAssert;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisAlterColocateGroupStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisAlterStoragePolicyStatementTestCase;
@@ -48,6 +50,7 @@ import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisCreateJobStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisDropFunctionStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisCancelMaterializedViewTaskStatementTestCase;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisRefreshMaterializedViewStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisCancelTaskStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisAlterJobStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisDropJobStatementTestCase;
@@ -108,6 +111,8 @@ public final class DorisDDLStatementAssert {
DorisCancelTaskStatementAssert.assertIs(assertContext, (DorisCancelTaskStatement) actual, (DorisCancelTaskStatementTestCase) expected);
} else if (actual instanceof DorisCancelMaterializedViewTaskStatement) {
DorisCancelMaterializedViewTaskStatementAssert.assertIs(assertContext, (DorisCancelMaterializedViewTaskStatement) actual, (DorisCancelMaterializedViewTaskStatementTestCase) expected);
+ } else if (actual instanceof DorisRefreshMaterializedViewStatement) {
+ DorisRefreshMaterializedViewStatementAssert.assertIs(assertContext, (DorisRefreshMaterializedViewStatement) actual, (DorisRefreshMaterializedViewStatementTestCase) expected);
}
}
}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/type/DorisRefreshMaterializedViewStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/type/DorisRefreshMaterializedViewStatementAssert.java
new file mode 100644
index 00000000000..53c647a6113
--- /dev/null
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/type/DorisRefreshMaterializedViewStatementAssert.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.dialect.doris.type;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisRefreshMaterializedViewStatement;
+import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisRefreshMaterializedViewStatementTestCase;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Refresh materialized view statement assert for Doris.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DorisRefreshMaterializedViewStatementAssert {
+
+ /**
+ * Assert refresh materialized view statement is correct with expected parser result.
+ *
+ * @param assertContext assert context
+ * @param actual actual refresh materialized view statement
+ * @param expected expected refresh materialized view statement test case
+ */
+ public static void assertIs(final SQLCaseAssertContext assertContext, final DorisRefreshMaterializedViewStatement actual, final DorisRefreshMaterializedViewStatementTestCase expected) {
+ if (null != expected.getMvName()) {
+ assertThat(assertContext.getText("materialized view name does not match: "), actual.getMvName(), is(expected.getMvName()));
+ }
+ if (expected.isAuto()) {
+ assertTrue(actual.isAuto(), assertContext.getText("materialized view refresh type AUTO does not match: "));
+ }
+ if (expected.isComplete()) {
+ assertTrue(actual.isComplete(), assertContext.getText("materialized view refresh type COMPLETE does not match: "));
+ }
+ if (!expected.getPartitionNames().isEmpty()) {
+ assertThat(assertContext.getText("materialized view partition names do not match: "), actual.getPartitionNames(), is(expected.getPartitionNames()));
+ }
+ }
+}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
index f70009cb056..40ed8b9bb78 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
@@ -165,6 +165,7 @@ import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisCreateJobStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisCreateStreamingJobStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisCreateSyncJobStatementTestCase;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisRefreshMaterializedViewStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisDropFunctionStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisDropJobStatementTestCase;
import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisPauseJobStatementTestCase;
@@ -651,6 +652,9 @@ public final class RootSQLParserTestCases {
@XmlElement(name = "create-streaming-job")
private final List<DorisCreateStreamingJobStatementTestCase> createStreamingJobTestCases = new LinkedList<>();
+ @XmlElement(name = "doris-refresh-materialized-view")
+ private final List<DorisRefreshMaterializedViewStatementTestCase> dorisRefreshMaterializedViewTestCases = new LinkedList<>();
+
@XmlElement(name = "alter-catalog")
private final List<AlterCatalogStatementTestCase> alterCatalogTestCases = new LinkedList<>();
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisRefreshMaterializedViewStatementTestCase.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisRefreshMaterializedViewStatementTestCase.java
new file mode 100644
index 00000000000..d1aca2075ed
--- /dev/null
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisRefreshMaterializedViewStatementTestCase.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Refresh materialized view statement test case for Doris.
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@Getter
+@Setter
+public final class DorisRefreshMaterializedViewStatementTestCase extends SQLParserTestCase {
+
+ @XmlElement(name = "mv-name")
+ private String mvName;
+
+ private boolean auto;
+
+ private boolean complete;
+
+ @XmlElement(name = "partition-name")
+ private final List<String> partitionNames = new LinkedList<>();
+}
diff --git a/test/it/parser/src/main/resources/case/ddl/refresh-materialized-view.xml b/test/it/parser/src/main/resources/case/ddl/refresh-materialized-view.xml
index 3a95f8b0574..a185eac059f 100644
--- a/test/it/parser/src/main/resources/case/ddl/refresh-materialized-view.xml
+++ b/test/it/parser/src/main/resources/case/ddl/refresh-materialized-view.xml
@@ -21,4 +21,17 @@
<refresh-materialized-view sql-case-id="refresh_mat_view_concurrently_no_data" />
<refresh-materialized-view sql-case-id="refresh_mat_view_point" />
<refresh-materialized-view sql-case-id="refresh_mat_view" />
+ <doris-refresh-materialized-view sql-case-id="doris_refresh_materialized_view_auto">
+ <mv-name>mv1</mv-name>
+ <auto>true</auto>
+ </doris-refresh-materialized-view>
+ <doris-refresh-materialized-view sql-case-id="doris_refresh_materialized_view_partitions">
+ <mv-name>mv1</mv-name>
+ <partition-name>p_19950801_19950901</partition-name>
+ <partition-name>p_19950901_19951001</partition-name>
+ </doris-refresh-materialized-view>
+ <doris-refresh-materialized-view sql-case-id="doris_refresh_materialized_view_complete">
+ <mv-name>mv1</mv-name>
+ <complete>true</complete>
+ </doris-refresh-materialized-view>
</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/ddl/refresh-materialized-view.xml b/test/it/parser/src/main/resources/sql/supported/ddl/refresh-materialized-view.xml
index 97578752d50..541b9b0331e 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/refresh-materialized-view.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/refresh-materialized-view.xml
@@ -21,4 +21,7 @@
<sql-case id="refresh_mat_view_concurrently_no_data" value="REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_tvmm WITH NO DATA;" db-types="PostgreSQL" />
<sql-case id="refresh_mat_view_point" value="REFRESH MATERIALIZED VIEW matview_schema.mv_nodata2;" db-types="PostgreSQL" />
<sql-case id="refresh_mat_view" value="REFRESH MATERIALIZED VIEW mvtest_mv;" db-types="PostgreSQL" />
+ <sql-case id="doris_refresh_materialized_view_auto" value="REFRESH MATERIALIZED VIEW mv1 AUTO" db-types="Doris" />
+ <sql-case id="doris_refresh_materialized_view_partitions" value="REFRESH MATERIALIZED VIEW mv1 partitions(p_19950801_19950901,p_19950901_19951001)" db-types="Doris" />
+ <sql-case id="doris_refresh_materialized_view_complete" value="REFRESH MATERIALIZED VIEW mv1 complete" db-types="Doris" />
</sql-cases>