This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 cfa9a862a68 Support parsing Doris SYNC/DESC syntax (#38063)
cfa9a862a68 is described below
commit cfa9a862a68c41cf508a2a89c82ddf983f2ac856
Author: cxy <[email protected]>
AuthorDate: Tue Feb 17 15:23:13 2026 +0800
Support parsing Doris SYNC/DESC syntax (#38063)
---
.../core/database/visitor/SQLVisitorRule.java | 2 ++
.../src/main/antlr4/imports/doris/DALStatement.g4 | 6 ++++-
.../src/main/antlr4/imports/doris/DorisKeyword.g4 | 4 +++
.../sql/parser/autogen/DorisStatement.g4 | 1 +
.../statement/type/DorisDALStatementVisitor.java | 15 ++++++++---
.../statement/doris/dal/DorisSyncStatement.java | 31 ++++++++++++++++++++++
.../dal/show/column/MySQLDescribeStatement.java | 7 +++++
.../mysql/type/MySQLDescribeStatementAssert.java | 8 ++++++
.../cases/parser/jaxb/RootSQLParserTestCases.java | 4 +++
.../DorisSyncStatementTestCase.java} | 20 +++-----------
.../column/MySQLDescribeStatementTestCase.java | 4 +++
.../src/main/resources/case/dal/describe.xml | 6 +++++
.../it/parser/src/main/resources/case/dal/sync.xml | 21 +++++++++++++++
.../main/resources/sql/supported/dal/describe.xml | 1 +
.../src/main/resources/sql/supported/dal/sync.xml | 21 +++++++++++++++
15 files changed, 130 insertions(+), 21 deletions(-)
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 a9c7959c6e3..7ef1877ec02 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
@@ -445,6 +445,8 @@ public enum SQLVisitorRule {
SET_CHARACTER("SetCharacter", SQLStatementType.DAL),
+ SYNC("Sync", SQLStatementType.DAL),
+
RESET_PARAMETER("ResetParameter", SQLStatementType.DAL),
VACUUM("Vacuum", SQLStatementType.DAL),
diff --git
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4
index 8f339f4e3f0..accc28a1e08 100644
---
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4
+++
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4
@@ -33,7 +33,7 @@ help
explain
: (DESC | DESCRIBE | EXPLAIN)
- (tableName (columnRef | textString)?
+ (tableName (columnRef | textString)? ALL?
| explainType? (explainableStatement | FOR CONNECTION connectionId)
| ANALYZE (FORMAT EQ_ TREE)? (select | delete | update | insert))
;
@@ -266,6 +266,10 @@ setCharacter
: SET (CHARACTER SET | CHARSET) (charsetName | DEFAULT)
;
+sync
+ : SYNC
+ ;
+
clone
: CLONE cloneAction
;
diff --git
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
index 7b0b83eda48..ef7d5aaca32 100644
---
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
+++
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
@@ -2714,6 +2714,10 @@ SWITCHES
: S W I T C H E S
;
+SYNC
+ :S Y N C
+ ;
+
SYSTEM
: S Y S T E M
;
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 bebe296e063..c24affdad27 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
@@ -143,6 +143,7 @@ execute
| cancelBuildIndex
| createFile
| dropFile
+ | sync
// TODO consider refactor following sytax to SEMI_? EOF
) (SEMI_ EOF? | EOF)
| EOF
diff --git
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java
index 79d4dd47b3f..97526d05fbc 100644
---
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java
+++
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java
@@ -117,6 +117,7 @@ import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.Shutdow
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.StartSlaveContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.StopSlaveContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.SwitchCatalogContext;
+import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.SyncContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.TablesOptionContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.UninstallComponentContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.UninstallPluginContext;
@@ -199,6 +200,7 @@ import
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisDropSqlBloc
import
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisShowSqlBlockRuleStatement;
import
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisShowRoutineLoadTaskStatement;
import
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisShowRoutineLoadStatement;
+import
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisSyncStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.ShowBuildIndexStatement;
import
org.apache.shardingsphere.sql.parser.statement.doris.dal.show.DorisShowQueryStatsStatement;
import
org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLCloneStatement;
@@ -485,6 +487,11 @@ public final class DorisDALStatementVisitor extends
DorisStatementVisitor implem
return new MySQLFlushStatement(getDatabaseType(),
ctx.tableName().stream().map(each -> (SimpleTableSegment)
visit(each)).collect(Collectors.toList()), true);
}
+ @Override
+ public ASTNode visitSync(final SyncContext ctx) {
+ return new DorisSyncStatement(getDatabaseType());
+ }
+
@Override
public ASTNode visitKill(final KillContext ctx) {
String processId;
@@ -605,9 +612,11 @@ public final class DorisDALStatementVisitor extends
DorisStatementVisitor implem
@Override
public ASTNode visitExplain(final ExplainContext ctx) {
- return null == ctx.tableName()
- ? new ExplainStatement(getDatabaseType(),
getExplainableSQLStatement(ctx).orElse(null))
- : new MySQLDescribeStatement(getDatabaseType(),
(SimpleTableSegment) visit(ctx.tableName()), getColumnWildcard(ctx));
+ if (null == ctx.tableName()) {
+ return new ExplainStatement(getDatabaseType(),
getExplainableSQLStatement(ctx).orElse(null));
+ }
+ boolean showAll = null != ctx.ALL();
+ return new MySQLDescribeStatement(getDatabaseType(),
(SimpleTableSegment) visit(ctx.tableName()), getColumnWildcard(ctx), showAll);
}
private Optional<SQLStatement> getExplainableSQLStatement(final
ExplainContext ctx) {
diff --git
a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/dal/DorisSyncStatement.java
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/dal/DorisSyncStatement.java
new file mode 100644
index 00000000000..2c3d107690b
--- /dev/null
+++
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/dal/DorisSyncStatement.java
@@ -0,0 +1,31 @@
+/*
+ * 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.dal;
+
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DALStatement;
+
+/**
+ * Sync statement for Doris.
+ */
+public final class DorisSyncStatement extends DALStatement {
+
+ public DorisSyncStatement(final DatabaseType databaseType) {
+ super(databaseType);
+ }
+}
diff --git
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLDescribeStatement.java
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLDescribeStatement.java
index 4fda2a832dc..25bd992f5e9 100644
---
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLDescribeStatement.java
+++
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLDescribeStatement.java
@@ -40,10 +40,17 @@ public final class MySQLDescribeStatement extends
DALStatement {
private SQLStatementAttributes attributes;
+ private final boolean showAll;
+
public MySQLDescribeStatement(final DatabaseType databaseType, final
SimpleTableSegment table, final ColumnSegment columnWildcard) {
+ this(databaseType, table, columnWildcard, false);
+ }
+
+ public MySQLDescribeStatement(final DatabaseType databaseType, final
SimpleTableSegment table, final ColumnSegment columnWildcard, final boolean
showAll) {
super(databaseType);
this.table = table;
this.columnWildcard = columnWildcard;
+ this.showAll = showAll;
}
/**
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/mysql/type/MySQLDescribeStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/mysql/type/MySQLDescribeStatementAssert.java
index 2616a134c57..ecd3533b83a 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/mysql/type/MySQLDescribeStatementAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/mysql/type/MySQLDescribeStatementAssert.java
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.tab
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.mysql.show.column.MySQLDescribeStatementTestCase;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Describe statement assert for MySQL.
@@ -41,6 +42,7 @@ public final class MySQLDescribeStatementAssert {
* @param expected expected describe statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext,
final MySQLDescribeStatement actual, final MySQLDescribeStatementTestCase
expected) {
+ assertShowAll(assertContext, actual, expected);
TableAssert.assertIs(assertContext, actual.getTable(),
expected.getTable());
if (actual.getColumnWildcard().isPresent()) {
assertDescribeColumnWild(assertContext, actual, expected);
@@ -54,4 +56,10 @@ public final class MySQLDescribeStatementAssert {
assertNull(expected.getColumn(), assertContext.getText("Actual
column wild should not exist."));
}
}
+
+ private static void assertShowAll(final SQLCaseAssertContext
assertContext, final MySQLDescribeStatement actual, final
MySQLDescribeStatementTestCase expected) {
+ if (expected.isShowAll()) {
+ assertTrue(actual.isShowAll(), assertContext.getText("Actual show
all flag should be true"));
+ }
+ }
}
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 9bd7ec20af3..487b55d1d9a 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
@@ -86,6 +86,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.dal.dialect.mysql.table.MySQLOptimizeTableStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.mysql.table.MySQLRepairTableStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisAlterResourceStatementTestCase;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisSyncStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.show.DorisShowQueryStatsStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.oracle.OracleSpoolStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.postgresql.PostgreSQLResetParameterStatementTestCase;
@@ -1185,6 +1186,9 @@ public final class RootSQLParserTestCases {
@XmlElement(name = "show-shadow-table-rules")
private final List<ShowShadowTableRulesStatementTestCase>
showShadowTableRulesTestCases = new LinkedList<>();
+ @XmlElement(name = "sync")
+ private final List<DorisSyncStatementTestCase> syncTestCases = new
LinkedList<>();
+
@XmlElement(name = "drop-shadow-algorithm")
private final List<DropShadowAlgorithmStatementTestCase>
dropShadowAlgorithmTestCases = new LinkedList<>();
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/mysql/show/column/MySQLDescribeStatementTestCase.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/doris/DorisSyncStatementTestCase.java
similarity index 58%
copy from
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/mysql/show/column/MySQLDescribeStatementTestCase.java
copy to
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/doris/DorisSyncStatementTestCase.java
index 431eb0f9105..631fbee4ce5 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/mysql/show/column/MySQLDescribeStatementTestCase.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/doris/DorisSyncStatementTestCase.java
@@ -15,26 +15,12 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.mysql.show.column;
+package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris;
-import lombok.Getter;
-import lombok.Setter;
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.segment.impl.column.ExpectedColumn;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedSimpleTable;
-
-import javax.xml.bind.annotation.XmlElement;
/**
- * Describe statement test case for MySQL.
+ * Sync statement test case for Doris.
*/
-@Getter
-@Setter
-public final class MySQLDescribeStatementTestCase extends SQLParserTestCase {
-
- @XmlElement(name = "simple-table")
- private ExpectedSimpleTable table;
-
- @XmlElement(name = "column-wild")
- private ExpectedColumn column;
+public final class DorisSyncStatementTestCase extends SQLParserTestCase {
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/mysql/show/column/MySQLDescribeStatementTestCase.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/mysql/show/column/MySQLDescribeStatementTestCase.java
index 431eb0f9105..a227de030ee 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/mysql/show/column/MySQLDescribeStatementTestCase.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/mysql/show/column/MySQLDescribeStatementTestCase.java
@@ -24,6 +24,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.segment.impl.table.ExpectedSimpleTable;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAttribute;
/**
* Describe statement test case for MySQL.
@@ -37,4 +38,7 @@ public final class MySQLDescribeStatementTestCase extends
SQLParserTestCase {
@XmlElement(name = "column-wild")
private ExpectedColumn column;
+
+ @XmlAttribute(name = "show-all")
+ private boolean showAll;
}
diff --git a/test/it/parser/src/main/resources/case/dal/describe.xml
b/test/it/parser/src/main/resources/case/dal/describe.xml
index b366e2b2ffa..1cfdf01805a 100644
--- a/test/it/parser/src/main/resources/case/dal/describe.xml
+++ b/test/it/parser/src/main/resources/case/dal/describe.xml
@@ -119,4 +119,10 @@
</simple-table>
<column-wild name="products" start-index="54" stop-index="61" />
</describe>
+
+ <describe sql-case-id="desc_table_all_doris" db-types="Doris"
show-all="true">
+ <simple-table name="test_table" start-index="5" stop-index="19" >
+ <owner start-index="5" stop-index="8" name="demo" />
+ </simple-table>
+ </describe>
</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/dal/sync.xml
b/test/it/parser/src/main/resources/case/dal/sync.xml
new file mode 100644
index 00000000000..e831ffcd433
--- /dev/null
+++ b/test/it/parser/src/main/resources/case/dal/sync.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<sql-parser-test-cases>
+ <sync sql-case-id="sync" />
+</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/dal/describe.xml
b/test/it/parser/src/main/resources/sql/supported/dal/describe.xml
index 263dd732b34..de4dbfc86df 100644
--- a/test/it/parser/src/main/resources/sql/supported/dal/describe.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dal/describe.xml
@@ -42,4 +42,5 @@
<sql-case id="describe_map_value" value="DESCRIBE event_log
params.'$value$';" db-types="Hive" />
<sql-case id="describe_nested_struct_in_array" value="DESCRIBE posts
comments.'$elem$'.author;" db-types="Hive" />
<sql-case id="describe_with_partition_and_complex" value="DESCRIBE
sales_db.actions PARTITION (dt='2025-08-17') products.'$elem$'.details.price;"
db-types="Hive" />
+ <sql-case id="desc_table_all_doris" value="DESC demo.test_table ALL"
db-types="Doris" />
</sql-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/dal/sync.xml
b/test/it/parser/src/main/resources/sql/supported/dal/sync.xml
new file mode 100644
index 00000000000..cb09a4e764c
--- /dev/null
+++ b/test/it/parser/src/main/resources/sql/supported/dal/sync.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<sql-cases>
+ <sql-case id="sync" value="SYNC" db-types="Doris" />
+</sql-cases>