From 0afdd57a3afa2b07df5ee6b8a44bb98e70aee1ed Mon Sep 17 00:00:00 2001 From: quaso Date: Thu, 2 Feb 2023 10:23:41 +0100 Subject: [PATCH] fixes #354 MSSQL task_data datatype --- .../kagkarlsson/scheduler/jdbc/JdbcTaskRepository.java | 10 ++++------ db-scheduler/src/test/resources/mssql_tables.sql | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/db-scheduler/src/main/java/com/github/kagkarlsson/scheduler/jdbc/JdbcTaskRepository.java b/db-scheduler/src/main/java/com/github/kagkarlsson/scheduler/jdbc/JdbcTaskRepository.java index ae48b6d5..900cf17e 100644 --- a/db-scheduler/src/main/java/com/github/kagkarlsson/scheduler/jdbc/JdbcTaskRepository.java +++ b/db-scheduler/src/main/java/com/github/kagkarlsson/scheduler/jdbc/JdbcTaskRepository.java @@ -35,9 +35,7 @@ import org.slf4j.LoggerFactory; import javax.sql.DataSource; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; +import java.sql.*; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; @@ -103,7 +101,7 @@ public boolean createIfNotExists(SchedulableInstance instance) { (PreparedStatement p) -> { p.setString(1, taskInstance.getTaskName()); p.setString(2, taskInstance.getId()); - p.setObject(3, serializer.serialize(taskInstance.getData())); + p.setBytes(3, serializer.serialize(taskInstance.getData())); jdbcCustomization.setInstant(p, 4, instance.getNextExecutionTime(clock.now())); p.setBoolean(5, false); p.setLong(6, 1L); @@ -159,7 +157,7 @@ public Instant replace(Execution toBeReplaced, SchedulableInstance newInstance) ps.setInt(index++, 0); // consecutive_failures jdbcCustomization.setInstant(ps, index++, newExecutionTime); // execution_time // may cause datbase-specific problems, might have to use setNull instead - ps.setObject(index++, serializer.serialize(newData)); // task_data + ps.setBytes(index++, serializer.serialize(newData)); // task_data ps.setString(index++, toBeReplaced.taskInstance.getTaskName()); // task_name ps.setString(index++, toBeReplaced.taskInstance.getId()); // task_instance ps.setLong(index++, toBeReplaced.version); // version @@ -273,7 +271,7 @@ private boolean rescheduleInternal(Execution execution, Instant nextExecutionTim jdbcCustomization.setInstant(ps, index++, nextExecutionTime); if (newData != null) { // may cause datbase-specific problems, might have to use setNull instead - ps.setObject(index++, serializer.serialize(newData.data)); + ps.setBytes(index++, serializer.serialize(newData.data)); } ps.setString(index++, execution.taskInstance.getTaskName()); ps.setString(index++, execution.taskInstance.getId()); diff --git a/db-scheduler/src/test/resources/mssql_tables.sql b/db-scheduler/src/test/resources/mssql_tables.sql index 473ddf4d..baf9e158 100644 --- a/db-scheduler/src/test/resources/mssql_tables.sql +++ b/db-scheduler/src/test/resources/mssql_tables.sql @@ -1,7 +1,7 @@ create table scheduled_tasks ( task_name varchar(250) not null, task_instance varchar(250) not null, - task_data nvarchar(max), + task_data varbinary(max), execution_time datetimeoffset not null, picked bit, picked_by text,