diff --git a/powerjob-official-processors/pom.xml b/powerjob-official-processors/pom.xml
index 1a78d58c..16836abe 100644
--- a/powerjob-official-processors/pom.xml
+++ b/powerjob-official-processors/pom.xml
@@ -19,7 +19,7 @@
5.9.1
- 1.4.4
+ 1.2.9
4.2.0
5.2.9.RELEASE
2.1.214
diff --git a/powerjob-worker/pom.xml b/powerjob-worker/pom.xml
index 6afbda68..e95614fc 100644
--- a/powerjob-worker/pom.xml
+++ b/powerjob-worker/pom.xml
@@ -20,7 +20,7 @@
4.0.3
5.9.1
- 1.4.4
+ 1.2.9
diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/persistence/TaskDAOImpl.java b/powerjob-worker/src/main/java/tech/powerjob/worker/persistence/TaskDAOImpl.java
index e3d2759b..96c4ab89 100644
--- a/powerjob-worker/src/main/java/tech/powerjob/worker/persistence/TaskDAOImpl.java
+++ b/powerjob-worker/src/main/java/tech/powerjob/worker/persistence/TaskDAOImpl.java
@@ -28,7 +28,7 @@ public class TaskDAOImpl implements TaskDAO {
String delTableSQL = "drop table if exists task_info";
// 感谢 Gitee 用户 @Linfly 反馈的 BUG
// bigint(20) 与 Java Long 取值范围完全一致
- String createTableSQL = "create table task_info (task_id varchar(255), instance_id bigint, sub_instance_id bigint, task_name varchar(255), task_content blob, address varchar, status int, result text, failed_cnt int, created_time bigint, last_modified_time bigint, last_report_time bigint, constraint pkey unique (instance_id, task_id))";
+ String createTableSQL = "create table task_info (task_id varchar(255), instance_id bigint, sub_instance_id bigint, task_name varchar(255), task_content blob, address varchar(255), status int, result text, failed_cnt int, created_time bigint, last_modified_time bigint, last_report_time bigint, constraint pkey unique (instance_id, task_id))";
try (Connection conn = connectionFactory.getConnection(); Statement stat = conn.createStatement()) {
stat.execute(delTableSQL);
diff --git a/powerjob-worker/src/test/java/tech/powerjob/worker/persistence/TaskDAOTest.java b/powerjob-worker/src/test/java/tech/powerjob/worker/persistence/TaskDAOTest.java
new file mode 100644
index 00000000..102b9b60
--- /dev/null
+++ b/powerjob-worker/src/test/java/tech/powerjob/worker/persistence/TaskDAOTest.java
@@ -0,0 +1,115 @@
+package tech.powerjob.worker.persistence;
+
+import com.google.common.collect.Lists;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import tech.powerjob.worker.common.constants.StoreStrategy;
+import tech.powerjob.worker.common.constants.TaskStatus;
+import tech.powerjob.worker.core.processor.TaskResult;
+
+import java.nio.charset.StandardCharsets;
+import java.sql.SQLIntegrityConstraintViolationException;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * 任务持久化接口测试
+ *
+ * @author tjq
+ * @since 2022/10/23
+ */
+@Slf4j
+class TaskDAOTest {
+
+ private static TaskDAO taskDAO;
+
+ @BeforeAll
+ static void initDAO() throws Exception {
+
+ // 1. 创建对象
+ ConnectionFactory connectionFactory = new ConnectionFactory();
+ connectionFactory.initDatasource(StoreStrategy.DISK);
+ taskDAO = new TaskDAOImpl(connectionFactory);
+
+ // 2. 初始化表
+ taskDAO.initTable();
+ }
+
+ @Test
+ @SneakyThrows
+ void testUniqueKey() {
+
+ TaskDO taskDO = buildTaskDO("2", 2L, TaskStatus.WORKER_PROCESS_FAILED);
+ boolean firstSaveRet = taskDAO.save(taskDO);
+ assert firstSaveRet;
+ log.info("[testUniqueKey] first save result: {}", firstSaveRet);
+ assertThrows(SQLIntegrityConstraintViolationException.class, () -> {
+ taskDAO.save(taskDO);
+ });
+ }
+
+ @Test
+ @SneakyThrows
+ void testCRUD() {
+ TaskDO oneTask = buildTaskDO("1", 1L, TaskStatus.WAITING_DISPATCH);
+ TaskDO twoTask = buildTaskDO("2", 1L, TaskStatus.WAITING_DISPATCH);
+ TaskDO threeTask = buildTaskDO("99", 1L, TaskStatus.WAITING_DISPATCH);
+
+ boolean batchSave = taskDAO.batchSave(Lists.newArrayList(oneTask, twoTask, threeTask));
+ log.info("[testCRUD] batchSave result: {}", batchSave);
+ assert batchSave;
+
+ SimpleTaskQuery query = new SimpleTaskQuery();
+ query.setInstanceId(1L);
+ List simpleQueryRet = taskDAO.simpleQuery(query);
+ log.info("[testCRUD] simple query by instanceId's result: {}", simpleQueryRet);
+ assert simpleQueryRet.size() == 3;
+
+ SimpleTaskQuery deleteQuery = new SimpleTaskQuery();
+ deleteQuery.setTaskId("99");
+ deleteQuery.setInstanceId(1L);
+ boolean simpleDelete = taskDAO.simpleDelete(deleteQuery);
+ log.info("[testCRUD] simpleDelete result: {}", simpleDelete);
+ assert simpleDelete;
+
+ query.setQueryContent("status, result");
+ List