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 361a30b30ae Support parsing Doris ALTER/DROP/PAUSE JOB syntax (#38311)
361a30b30ae is described below
commit 361a30b30aedc8943430bafd91f5707ca12f6ddc
Author: cxy <[email protected]>
AuthorDate: Tue Mar 3 15:01:42 2026 +0800
Support parsing Doris ALTER/DROP/PAUSE JOB syntax (#38311)
---
.../core/database/visitor/SQLVisitorRule.java | 6 ++
.../src/main/antlr4/imports/doris/DDLStatement.g4 | 12 +++
.../sql/parser/autogen/DorisStatement.g4 | 3 +
.../statement/type/DorisDDLStatementVisitor.java | 31 ++++++++
.../doris/ddl/DorisAlterJobStatement.java | 64 +++++++++++++++
.../statement/doris/ddl/DorisDropJobStatement.java | 36 +++++++++
.../doris/ddl/DorisPauseJobStatement.java | 36 +++++++++
.../doris/DorisAlterJobStatementAssert.java | 93 ++++++++++++++++++++++
.../ddl/dialect/doris/DorisDDLStatementAssert.java | 12 +++
.../dialect/doris/DorisDropJobStatementAssert.java | 47 +++++++++++
.../doris/DorisPauseJobStatementAssert.java | 47 +++++++++++
.../cases/parser/jaxb/RootSQLParserTestCases.java | 12 +++
.../doris/DorisAlterJobStatementTestCase.java | 52 ++++++++++++
.../doris/DorisDropJobStatementTestCase.java | 38 +++++++++
.../doris/DorisPauseJobStatementTestCase.java | 38 +++++++++
.../src/main/resources/case/ddl/alter-job.xml | 45 +++++++++++
.../src/main/resources/case/ddl/drop-job.xml | 27 +++++++
.../src/main/resources/case/ddl/pause-job.xml | 27 +++++++
.../main/resources/sql/supported/ddl/alter-job.xml | 23 ++++++
.../main/resources/sql/supported/ddl/drop-job.xml | 22 +++++
.../main/resources/sql/supported/ddl/pause-job.xml | 22 +++++
21 files changed, 693 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 2a6c33a34c3..ea5de1f229b 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
@@ -303,6 +303,12 @@ public enum SQLVisitorRule {
SHOW_SYNC_JOB("ShowSyncJob", SQLStatementType.DAL),
+ ALTER_JOB("AlterJob", SQLStatementType.DDL),
+
+ DROP_JOB("DropJob", SQLStatementType.DDL),
+
+ PAUSE_JOB("PauseJob", SQLStatementType.DDL),
+
ALTER_CATALOG("AlterCatalog", SQLStatementType.DDL),
ALTER_COLOCATE_GROUP("AlterColocateGroup", 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 97819f83ffc..b48a8b52d82 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
@@ -1008,6 +1008,18 @@ resumeJob
: RESUME JOB WHERE jobName EQ_ stringLiterals
;
+pauseJob
+ : PAUSE JOB WHERE jobName EQ_ stringLiterals
+ ;
+
+dropJob
+ : DROP JOB WHERE jobName EQ_ stringLiterals
+ ;
+
+alterJob
+ : ALTER JOB jobName propertiesClause? (DO insert)?
+ ;
+
resumeSyncJob
: RESUME SYNC JOB (owner DOT_)? identifier
;
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 ef0cc52bec7..2f11cd11595 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
@@ -141,6 +141,9 @@ execute
| startReplica
| createMaterializedView
| resumeJob
+ | pauseJob
+ | dropJob
+ | alterJob
| resumeSyncJob
| pauseSyncJob
| stopSyncJob
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 f3e21e0234e..6bb688fa766 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
@@ -118,6 +118,9 @@ import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.LoopSta
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ModifyColumnContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ModifyDistributionClauseContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PartitionValueListContext;
+import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.AlterJobContext;
+import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropJobContext;
+import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PauseJobContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PauseSyncJobContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PlaceContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PrepareContext;
@@ -267,6 +270,9 @@ import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisCreateJobSt
import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisCreateSyncJobStatement;
import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisDropFunctionStatement;
import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisPauseSyncJobStatement;
+import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisAlterJobStatement;
+import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisDropJobStatement;
+import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisPauseJobStatement;
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;
@@ -402,6 +408,31 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
return new DorisResumeJobStatement(getDatabaseType(), jobName);
}
+ @Override
+ public ASTNode visitAlterJob(final AlterJobContext ctx) {
+ DorisAlterJobStatement result = new
DorisAlterJobStatement(getDatabaseType());
+ result.setJobName(new
JobNameSegment(ctx.jobName().start.getStartIndex(),
ctx.jobName().stop.getStopIndex(), (IdentifierValue)
visit(ctx.jobName().identifier())));
+ if (null != ctx.propertiesClause()) {
+
result.setProperties(extractPropertiesSegment(ctx.propertiesClause()));
+ }
+ if (null != ctx.insert()) {
+ result.setInsertStatement((InsertStatement) visit(ctx.insert()));
+ }
+ return result;
+ }
+
+ @Override
+ public ASTNode visitPauseJob(final PauseJobContext ctx) {
+ String jobName =
SQLUtils.getExactlyValue(ctx.stringLiterals().getText());
+ return new DorisPauseJobStatement(getDatabaseType(), jobName);
+ }
+
+ @Override
+ public ASTNode visitDropJob(final DropJobContext ctx) {
+ String jobName =
SQLUtils.getExactlyValue(ctx.stringLiterals().getText());
+ return new DorisDropJobStatement(getDatabaseType(), jobName);
+ }
+
@Override
public ASTNode visitResumeSyncJob(final ResumeSyncJobContext ctx) {
DorisResumeSyncJobStatement result = new
DorisResumeSyncJobStatement(getDatabaseType());
diff --git
a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisAlterJobStatement.java
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisAlterJobStatement.java
new file mode 100644
index 00000000000..ff1c412146e
--- /dev/null
+++
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisAlterJobStatement.java
@@ -0,0 +1,64 @@
+/*
+ * 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 lombok.Setter;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.job.JobNameSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertiesSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.InsertStatement;
+
+import java.util.Optional;
+
+/**
+ * Alter job statement for Doris.
+ */
+@Getter
+@Setter
+public final class DorisAlterJobStatement extends DDLStatement {
+
+ private JobNameSegment jobName;
+
+ private PropertiesSegment properties;
+
+ private InsertStatement insertStatement;
+
+ public DorisAlterJobStatement(final DatabaseType databaseType) {
+ super(databaseType);
+ }
+
+ /**
+ * Get properties.
+ *
+ * @return properties
+ */
+ public Optional<PropertiesSegment> getProperties() {
+ return Optional.ofNullable(properties);
+ }
+
+ /**
+ * Get insert statement.
+ *
+ * @return insert statement
+ */
+ public Optional<InsertStatement> getInsertStatement() {
+ return Optional.ofNullable(insertStatement);
+ }
+}
diff --git
a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisDropJobStatement.java
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisDropJobStatement.java
new file mode 100644
index 00000000000..b926c93a2f0
--- /dev/null
+++
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisDropJobStatement.java
@@ -0,0 +1,36 @@
+/*
+ * 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;
+
+/**
+ * Drop job statement for Doris.
+ */
+@Getter
+public final class DorisDropJobStatement extends DDLStatement {
+
+ private final String jobName;
+
+ public DorisDropJobStatement(final DatabaseType databaseType, final String
jobName) {
+ super(databaseType);
+ this.jobName = jobName;
+ }
+}
diff --git
a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisPauseJobStatement.java
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisPauseJobStatement.java
new file mode 100644
index 00000000000..cb9ed2c1615
--- /dev/null
+++
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisPauseJobStatement.java
@@ -0,0 +1,36 @@
+/*
+ * 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;
+
+/**
+ * Pause job statement for Doris.
+ */
+@Getter
+public final class DorisPauseJobStatement extends DDLStatement {
+
+ private final String jobName;
+
+ public DorisPauseJobStatement(final DatabaseType databaseType, final
String jobName) {
+ super(databaseType);
+ this.jobName = jobName;
+ }
+}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisAlterJobStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisAlterJobStatementAssert.java
new file mode 100644
index 00000000000..ecb6378c849
--- /dev/null
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisAlterJobStatementAssert.java
@@ -0,0 +1,93 @@
+/*
+ * 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;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertySegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
+import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisAlterJobStatement;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.SQLSegmentAssert;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.table.TableAssert;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.PropertyTestCase;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisAlterJobStatementTestCase;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Alter job statement assert for Doris.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DorisAlterJobStatementAssert {
+
+ /**
+ * Assert alter job statement is correct with expected parser result.
+ *
+ * @param assertContext assert context
+ * @param actual actual alter job statement
+ * @param expected expected alter job statement test case
+ */
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final DorisAlterJobStatement actual, final DorisAlterJobStatementTestCase
expected) {
+ assertJobName(assertContext, actual, expected);
+ assertProperties(assertContext, actual, expected);
+ assertInsertStatement(assertContext, actual, expected);
+ }
+
+ private static void assertJobName(final SQLCaseAssertContext
assertContext, final DorisAlterJobStatement actual, final
DorisAlterJobStatementTestCase expected) {
+ assertNotNull(actual.getJobName(), assertContext.getText("Job name
should exist."));
+ assertThat(assertContext.getText("Job name does not match: "),
actual.getJobName().getIdentifier().getValue(),
is(expected.getJobName().getName()));
+ SQLSegmentAssert.assertIs(assertContext, actual.getJobName(),
expected.getJobName());
+ }
+
+ private static void assertProperties(final SQLCaseAssertContext
assertContext, final DorisAlterJobStatement actual, final
DorisAlterJobStatementTestCase expected) {
+ if (!expected.getProperties().isEmpty()) {
+ assertTrue(actual.getProperties().isPresent(),
assertContext.getText("Properties should exist."));
+ assertThat(assertContext.getText("Properties size does not match:
"), actual.getProperties().get().getProperties().size(),
is(expected.getProperties().size()));
+ for (int i = 0; i < expected.getProperties().size(); i++) {
+ assertProperty(assertContext,
actual.getProperties().get().getProperties().get(i),
expected.getProperties().get(i));
+ }
+ }
+ }
+
+ private static void assertProperty(final SQLCaseAssertContext
assertContext, final PropertySegment actual, final PropertyTestCase expected) {
+ assertThat(assertContext.getText(String.format("Property key '%s'
assertion error: ", expected.getKey())), actual.getKey(),
is(expected.getKey()));
+ assertThat(assertContext.getText(String.format("Property value for key
'%s' assertion error: ", expected.getKey())), actual.getValue(),
is(expected.getValue()));
+ SQLSegmentAssert.assertIs(assertContext, actual, expected);
+ }
+
+ private static void assertInsertStatement(final SQLCaseAssertContext
assertContext, final DorisAlterJobStatement actual, final
DorisAlterJobStatementTestCase expected) {
+ if (null == expected.getInsertTable() && null ==
expected.getInsertSelectTable()) {
+ return;
+ }
+ assertTrue(actual.getInsertStatement().isPresent(),
assertContext.getText("Insert statement should exist."));
+ if (null != expected.getInsertTable()) {
+
assertTrue(actual.getInsertStatement().get().getTable().isPresent(),
assertContext.getText("Insert target table should exist."));
+ TableAssert.assertIs(assertContext,
actual.getInsertStatement().get().getTable().get(), expected.getInsertTable());
+ }
+ if (null != expected.getInsertSelectTable()) {
+
assertTrue(actual.getInsertStatement().get().getInsertSelect().isPresent(),
assertContext.getText("Insert select should exist."));
+ SimpleTableSegment fromTable = (SimpleTableSegment)
actual.getInsertStatement().get().getInsertSelect().get().getSelect().getFrom().orElse(null);
+ assertNotNull(fromTable, assertContext.getText("Insert select from
table should exist."));
+ TableAssert.assertIs(assertContext, fromTable,
expected.getInsertSelectTable());
+ }
+ }
+}
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 d7626cead13..44fc4cce063 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
@@ -24,6 +24,9 @@ import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisAlterColoca
import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisAlterStoragePolicyStatement;
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.DorisAlterJobStatement;
+import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisDropJobStatement;
+import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisPauseJobStatement;
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.DorisPauseSyncJobStatement;
@@ -38,6 +41,9 @@ 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.DorisAlterStoragePolicyStatementTestCase;
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.DorisAlterJobStatementTestCase;
+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;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisResumeJobStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisResumeSyncJobStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisPauseSyncJobStatementTestCase;
@@ -79,6 +85,12 @@ public final class DorisDDLStatementAssert {
DorisCreateJobStatementAssert.assertIs(assertContext,
(DorisCreateJobStatement) actual, (DorisCreateJobStatementTestCase) expected);
} else if (actual instanceof DorisAlterColocateGroupStatement) {
DorisAlterColocateGroupStatementAssert.assertIs(assertContext,
(DorisAlterColocateGroupStatement) actual,
(DorisAlterColocateGroupStatementTestCase) expected);
+ } else if (actual instanceof DorisPauseJobStatement) {
+ DorisPauseJobStatementAssert.assertIs(assertContext,
(DorisPauseJobStatement) actual, (DorisPauseJobStatementTestCase) expected);
+ } else if (actual instanceof DorisDropJobStatement) {
+ DorisDropJobStatementAssert.assertIs(assertContext,
(DorisDropJobStatement) actual, (DorisDropJobStatementTestCase) expected);
+ } else if (actual instanceof DorisAlterJobStatement) {
+ DorisAlterJobStatementAssert.assertIs(assertContext,
(DorisAlterJobStatement) actual, (DorisAlterJobStatementTestCase) expected);
}
}
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDropJobStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDropJobStatementAssert.java
new file mode 100644
index 00000000000..112f53dda42
--- /dev/null
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDropJobStatementAssert.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.asserts.statement.ddl.dialect.doris;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisDropJobStatement;
+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.DorisDropJobStatementTestCase;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+
+/**
+ * Drop job statement assert for Doris.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DorisDropJobStatementAssert {
+
+ /**
+ * Assert drop job statement is correct with expected parser result.
+ *
+ * @param assertContext assert context
+ * @param actual actual drop job statement
+ * @param expected expected drop job statement test case
+ */
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final DorisDropJobStatement actual, final DorisDropJobStatementTestCase
expected) {
+ if (null != expected.getJobName()) {
+ assertThat(assertContext.getText("Job name does not match: "),
actual.getJobName(), is(expected.getJobName()));
+ }
+ }
+}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisPauseJobStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisPauseJobStatementAssert.java
new file mode 100644
index 00000000000..b4c0b6a7109
--- /dev/null
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisPauseJobStatementAssert.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.asserts.statement.ddl.dialect.doris;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisPauseJobStatement;
+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.DorisPauseJobStatementTestCase;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+
+/**
+ * Pause job statement assert for Doris.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DorisPauseJobStatementAssert {
+
+ /**
+ * Assert pause job statement is correct with expected parser result.
+ *
+ * @param assertContext assert context
+ * @param actual actual pause job statement
+ * @param expected expected pause job statement test case
+ */
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final DorisPauseJobStatement actual, final DorisPauseJobStatementTestCase
expected) {
+ if (null != expected.getJobName()) {
+ assertThat(assertContext.getText("Job name does not match: "),
actual.getJobName(), is(expected.getJobName()));
+ }
+ }
+}
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 b39fd97f721..88e13c5c753 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
@@ -30,6 +30,9 @@ 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.DorisAlterColocateGroupStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisAlterStoragePolicyStatementTestCase;
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.DorisAlterJobStatementTestCase;
+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;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisResumeJobStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisResumeSyncJobStatementTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisPauseSyncJobStatementTestCase;
@@ -555,6 +558,15 @@ public final class RootSQLParserTestCases {
@XmlElement(name = "resume-job")
private final List<DorisResumeJobStatementTestCase> resumeJobTestCases =
new LinkedList<>();
+ @XmlElement(name = "pause-job")
+ private final List<DorisPauseJobStatementTestCase> pauseJobTestCases = new
LinkedList<>();
+
+ @XmlElement(name = "drop-job")
+ private final List<DorisDropJobStatementTestCase> dropJobTestCases = new
LinkedList<>();
+
+ @XmlElement(name = "alter-job")
+ private final List<DorisAlterJobStatementTestCase> alterJobTestCases = new
LinkedList<>();
+
@XmlElement(name = "resume-sync-job")
private final List<DorisResumeSyncJobStatementTestCase>
resumeSyncJobTestCases = 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/DorisAlterJobStatementTestCase.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisAlterJobStatementTestCase.java
new file mode 100644
index 00000000000..565579cd0df
--- /dev/null
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisAlterJobStatementTestCase.java
@@ -0,0 +1,52 @@
+/*
+ * 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
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.job.ExpectedJobName;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedSimpleTable;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.PropertyTestCase;
+
+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;
+
+/**
+ * Alter job statement test case for Doris.
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@Getter
+@Setter
+public final class DorisAlterJobStatementTestCase extends SQLParserTestCase {
+
+ @XmlElement(name = "job-name")
+ private ExpectedJobName jobName;
+
+ @XmlElement(name = "property")
+ private final List<PropertyTestCase> properties = new LinkedList<>();
+
+ @XmlElement(name = "insert-table")
+ private ExpectedSimpleTable insertTable;
+
+ @XmlElement(name = "insert-select-table")
+ private ExpectedSimpleTable insertSelectTable;
+}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisDropJobStatementTestCase.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisDropJobStatementTestCase.java
new file mode 100644
index 00000000000..a4cf2a0a4fd
--- /dev/null
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisDropJobStatementTestCase.java
@@ -0,0 +1,38 @@
+/*
+ * 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;
+
+/**
+ * Drop job statement test case for Doris.
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@Getter
+@Setter
+public final class DorisDropJobStatementTestCase extends SQLParserTestCase {
+
+ @XmlElement(name = "job-name")
+ private String jobName;
+}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisPauseJobStatementTestCase.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisPauseJobStatementTestCase.java
new file mode 100644
index 00000000000..bdd96c392b5
--- /dev/null
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisPauseJobStatementTestCase.java
@@ -0,0 +1,38 @@
+/*
+ * 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;
+
+/**
+ * Pause job statement test case for Doris.
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@Getter
+@Setter
+public final class DorisPauseJobStatementTestCase extends SQLParserTestCase {
+
+ @XmlElement(name = "job-name")
+ private String jobName;
+}
diff --git a/test/it/parser/src/main/resources/case/ddl/alter-job.xml
b/test/it/parser/src/main/resources/case/ddl/alter-job.xml
new file mode 100644
index 00000000000..e85b170570c
--- /dev/null
+++ b/test/it/parser/src/main/resources/case/ddl/alter-job.xml
@@ -0,0 +1,45 @@
+<?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>
+ <alter-job sql-case-id="alter_job_with_properties">
+ <job-name name="my_job" start-index="10" stop-index="15" />
+ <property key="session.insert_max_filter_ratio" value="0.5"
start-index="28" stop-index="66" />
+ <insert-table name="tbl1" start-index="84" stop-index="91">
+ <owner name="db1" start-index="84" stop-index="86" />
+ </insert-table>
+ <insert-select-table name="tbl2" start-index="107" stop-index="114">
+ <owner name="db2" start-index="107" stop-index="109" />
+ </insert-select-table>
+ </alter-job>
+
+ <alter-job sql-case-id="alter_job_without_properties">
+ <job-name name="my_job" start-index="10" stop-index="15" />
+ <insert-table name="tbl1" start-index="32" stop-index="39">
+ <owner name="db1" start-index="32" stop-index="34" />
+ </insert-table>
+ <insert-select-table name="tbl2" start-index="55" stop-index="62">
+ <owner name="db2" start-index="55" stop-index="57" />
+ </insert-select-table>
+ </alter-job>
+
+ <alter-job sql-case-id="alter_job_properties_only">
+ <job-name name="my_job" start-index="10" stop-index="15" />
+ <property key="session.insert_max_filter_ratio" value="0.5"
start-index="28" stop-index="66" />
+ </alter-job>
+</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/drop-job.xml
b/test/it/parser/src/main/resources/case/ddl/drop-job.xml
new file mode 100644
index 00000000000..e5da8b152ed
--- /dev/null
+++ b/test/it/parser/src/main/resources/case/ddl/drop-job.xml
@@ -0,0 +1,27 @@
+<?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>
+ <drop-job sql-case-id="drop_job_with_job_name">
+ <job-name>example</job-name>
+ </drop-job>
+
+ <drop-job sql-case-id="drop_job_with_double_quotes">
+ <job-name>my_job</job-name>
+ </drop-job>
+</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/pause-job.xml
b/test/it/parser/src/main/resources/case/ddl/pause-job.xml
new file mode 100644
index 00000000000..3fa3cda06ae
--- /dev/null
+++ b/test/it/parser/src/main/resources/case/ddl/pause-job.xml
@@ -0,0 +1,27 @@
+<?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>
+ <pause-job sql-case-id="pause_job_with_job_name">
+ <job-name>example</job-name>
+ </pause-job>
+
+ <pause-job sql-case-id="pause_job_with_double_quotes">
+ <job-name>my_job</job-name>
+ </pause-job>
+</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/ddl/alter-job.xml
b/test/it/parser/src/main/resources/sql/supported/ddl/alter-job.xml
new file mode 100644
index 00000000000..ac14990d274
--- /dev/null
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/alter-job.xml
@@ -0,0 +1,23 @@
+<?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="alter_job_with_properties" value="ALTER JOB my_job
PROPERTIES("session.insert_max_filter_ratio"="0.5") DO
INSERT INTO db1.tbl1 SELECT * FROM db2.tbl2" db-types="Doris" />
+ <sql-case id="alter_job_without_properties" value="ALTER JOB my_job DO
INSERT INTO db1.tbl1 SELECT * FROM db2.tbl2" db-types="Doris" />
+ <sql-case id="alter_job_properties_only" value="ALTER JOB my_job
PROPERTIES("session.insert_max_filter_ratio"="0.5")"
db-types="Doris" />
+</sql-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/ddl/drop-job.xml
b/test/it/parser/src/main/resources/sql/supported/ddl/drop-job.xml
new file mode 100644
index 00000000000..2182e0d5a46
--- /dev/null
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/drop-job.xml
@@ -0,0 +1,22 @@
+<?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="drop_job_with_job_name" value="DROP JOB WHERE jobName =
'example'" db-types="Doris" />
+ <sql-case id="drop_job_with_double_quotes" value="DROP JOB WHERE jobName =
"my_job"" db-types="Doris" />
+</sql-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/ddl/pause-job.xml
b/test/it/parser/src/main/resources/sql/supported/ddl/pause-job.xml
new file mode 100644
index 00000000000..f48648393c7
--- /dev/null
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/pause-job.xml
@@ -0,0 +1,22 @@
+<?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="pause_job_with_job_name" value="PAUSE JOB WHERE jobName =
'example'" db-types="Doris" />
+ <sql-case id="pause_job_with_double_quotes" value="PAUSE JOB WHERE jobName
= "my_job"" db-types="Doris" />
+</sql-cases>