Skip to content
This repository was archived by the owner on May 14, 2025. It is now read-only.

Commit c802b68

Browse files
committed
Add Task3/Batch5 schema for MariaDB (#5234)
Fixes #5233
1 parent 3d2fd52 commit c802b68

File tree

4 files changed

+370
-0
lines changed

4 files changed

+370
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright 2023 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.springframework.cloud.dataflow.server.db.migration;
17+
18+
import java.util.ArrayList;
19+
import java.util.List;
20+
21+
import org.springframework.cloud.dataflow.common.flyway.AbstractMigration;
22+
import org.springframework.cloud.dataflow.common.flyway.SqlCommand;
23+
24+
/**
25+
* Base implementation for initial Boot 3 schema
26+
*
27+
* @author Chris Bono
28+
*/
29+
public abstract class AbstractBoot3InitialSetupMigration extends AbstractMigration {
30+
31+
public AbstractBoot3InitialSetupMigration() {
32+
super(null);
33+
}
34+
35+
@Override
36+
public List<SqlCommand> getCommands() {
37+
List<SqlCommand> commands = new ArrayList<>();
38+
commands.addAll(createTask3Tables());
39+
commands.addAll(createBatch5Tables());
40+
return commands;
41+
}
42+
43+
/**
44+
* Creates the spring-cloud-task V3 tables.
45+
*
46+
* @return the list of sql commands
47+
*/
48+
public abstract List<SqlCommand> createTask3Tables();
49+
50+
/**
51+
* Creates the spring-batch V5 tables.
52+
*
53+
* @return the list of sql commands
54+
*/
55+
public abstract List<SqlCommand> createBatch5Tables();
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
/*
2+
* Copyright 2023 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.springframework.cloud.dataflow.server.db.migration.mariadb;
17+
18+
import java.util.Arrays;
19+
import java.util.List;
20+
21+
import org.springframework.cloud.dataflow.common.flyway.SqlCommand;
22+
import org.springframework.cloud.dataflow.server.db.migration.AbstractBoot3InitialSetupMigration;
23+
24+
/**
25+
* Adds the <a href="https://github.com/spring-cloud/spring-cloud-task/blob/main/spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-mariadb.sql">spring-cloud-task V3</a>
26+
* and <a href="https://github.com/spring-projects/spring-batch/blob/main/spring-batch-core/src/main/resources/org/springframework/batch/core/schema-mariadb.sql">spring-batch V5</a>
27+
* schemas to support Boot3 compatability.
28+
* <p>Schemas have added table prefix of {@code "BOOT3_"}.
29+
*
30+
* @author Chris Bono
31+
*/
32+
public class V6__Boot3_Add_Task3_Batch5_Schema extends AbstractBoot3InitialSetupMigration {
33+
34+
public final static String CREATE_TASK_EXECUTION_TABLE =
35+
"CREATE TABLE BOOT3_TASK_EXECUTION (\n" +
36+
" TASK_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,\n" +
37+
" START_TIME DATETIME(6) DEFAULT NULL,\n" +
38+
" END_TIME DATETIME(6) DEFAULT NULL,\n" +
39+
" TASK_NAME VARCHAR(100),\n" +
40+
" EXIT_CODE INTEGER,\n" +
41+
" EXIT_MESSAGE VARCHAR(2500),\n" +
42+
" ERROR_MESSAGE VARCHAR(2500),\n" +
43+
" LAST_UPDATED TIMESTAMP,\n" +
44+
" EXTERNAL_EXECUTION_ID VARCHAR(255),\n" +
45+
" PARENT_EXECUTION_ID BIGINT\n" +
46+
")";
47+
48+
public final static String CREATE_TASK_EXECUTION_PARAMS_TABLE =
49+
"CREATE TABLE BOOT3_TASK_EXECUTION_PARAMS (\n" +
50+
" TASK_EXECUTION_ID BIGINT NOT NULL,\n" +
51+
" TASK_PARAM VARCHAR(2500),\n" +
52+
" constraint BOOT3_TASK_EXEC_PARAMS_FK foreign key (TASK_EXECUTION_ID)\n" +
53+
" references BOOT3_TASK_EXECUTION(TASK_EXECUTION_ID)\n" +
54+
")";
55+
56+
public final static String CREATE_TASK_TASK_BATCH =
57+
"CREATE TABLE BOOT3_TASK_TASK_BATCH (\n" +
58+
" TASK_EXECUTION_ID BIGINT NOT NULL,\n" +
59+
" JOB_EXECUTION_ID BIGINT NOT NULL,\n" +
60+
" constraint BOOT3_EXEC_BATCH_FK foreign key (TASK_EXECUTION_ID)\n" +
61+
" references BOOT3_TASK_EXECUTION(TASK_EXECUTION_ID)\n" +
62+
")";
63+
64+
public final static String CREATE_TASK_LOCK_TABLE =
65+
"CREATE TABLE BOOT3_TASK_LOCK (\n" +
66+
" LOCK_KEY CHAR(36) NOT NULL,\n" +
67+
" REGION VARCHAR(100) NOT NULL,\n" +
68+
" CLIENT_ID CHAR(36),\n" +
69+
" CREATED_DATE DATETIME(6) NOT NULL,\n" +
70+
" constraint BOOT3_LOCK_PK primary key (LOCK_KEY, REGION)\n" +
71+
")";
72+
73+
private final static String CREATE_TASK_SEQ_SEQUENCE =
74+
"CREATE SEQUENCE BOOT3_TASK_SEQ START WITH 1 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1 NOCACHE NOCYCLE";
75+
76+
public final static String CREATE_BATCH_JOB_INSTANCE_TABLE =
77+
"CREATE TABLE BOOT3_BATCH_JOB_INSTANCE (\n" +
78+
" JOB_INSTANCE_ID BIGINT NOT NULL PRIMARY KEY,\n" +
79+
" VERSION BIGINT,\n" +
80+
" JOB_NAME VARCHAR(100) NOT NULL,\n" +
81+
" JOB_KEY VARCHAR(32) NOT NULL,\n" +
82+
" constraint BOOT3_JOB_INST_UN unique (JOB_NAME, JOB_KEY)\n" +
83+
")";
84+
85+
public final static String CREATE_BATCH_JOB_EXECUTION_TABLE =
86+
"CREATE TABLE BOOT3_BATCH_JOB_EXECUTION (\n" +
87+
" JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,\n" +
88+
" VERSION BIGINT,\n" +
89+
" JOB_INSTANCE_ID BIGINT NOT NULL,\n" +
90+
" CREATE_TIME DATETIME(6) NOT NULL,\n" +
91+
" START_TIME DATETIME(6) DEFAULT NULL,\n" +
92+
" END_TIME DATETIME(6) DEFAULT NULL,\n" +
93+
" STATUS VARCHAR(10),\n" +
94+
" EXIT_CODE VARCHAR(2500),\n" +
95+
" EXIT_MESSAGE VARCHAR(2500),\n" +
96+
" LAST_UPDATED DATETIME(6),\n" +
97+
" JOB_CONFIGURATION_LOCATION VARCHAR(2500) NULL,\n" +
98+
" constraint BOOT3_JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID)\n" +
99+
" references BOOT3_BATCH_JOB_INSTANCE(JOB_INSTANCE_ID)\n" +
100+
")";
101+
102+
public final static String CREATE_BATCH_JOB_EXECUTION_PARAMS_TABLE =
103+
"CREATE TABLE BOOT3_BATCH_JOB_EXECUTION_PARAMS (\n" +
104+
" JOB_EXECUTION_ID BIGINT NOT NULL,\n" +
105+
" PARAMETER_NAME VARCHAR(100) NOT NULL,\n" +
106+
" PARAMETER_TYPE VARCHAR(100) NOT NULL,\n" +
107+
" PARAMETER_VALUE VARCHAR(2500),\n" +
108+
" IDENTIFYING CHAR(1) NOT NULL,\n" +
109+
" constraint BOOT3_JOB_EXEC_PARAMS_FK foreign key (JOB_EXECUTION_ID)\n" +
110+
" references BOOT3_BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)\n" +
111+
")";
112+
113+
public final static String CREATE_BATCH_STEP_EXECUTION_TABLE =
114+
"CREATE TABLE BOOT3_BATCH_STEP_EXECUTION (\n" +
115+
" STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,\n" +
116+
" VERSION BIGINT NOT NULL,\n" +
117+
" STEP_NAME VARCHAR(100) NOT NULL,\n" +
118+
" JOB_EXECUTION_ID BIGINT NOT NULL,\n" +
119+
" CREATE_TIME DATETIME(6) NOT NULL,\n" +
120+
" START_TIME DATETIME(6) NOT NULL,\n" +
121+
" END_TIME DATETIME(6) DEFAULT NULL,\n" +
122+
" STATUS VARCHAR(10),\n" +
123+
" COMMIT_COUNT BIGINT,\n" +
124+
" READ_COUNT BIGINT,\n" +
125+
" FILTER_COUNT BIGINT,\n" +
126+
" WRITE_COUNT BIGINT,\n" +
127+
" READ_SKIP_COUNT BIGINT,\n" +
128+
" WRITE_SKIP_COUNT BIGINT,\n" +
129+
" PROCESS_SKIP_COUNT BIGINT,\n" +
130+
" ROLLBACK_COUNT BIGINT,\n" +
131+
" EXIT_CODE VARCHAR(2500),\n" +
132+
" EXIT_MESSAGE VARCHAR(2500),\n" +
133+
" LAST_UPDATED DATETIME(6),\n" +
134+
" constraint BOOT3_JOB_EXEC_STEP_FK foreign key (JOB_EXECUTION_ID)\n" +
135+
" references BOOT3_BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)\n" +
136+
")";
137+
138+
public final static String CREATE_BATCH_STEP_EXECUTION_CONTEXT_TABLE =
139+
"CREATE TABLE BOOT3_BATCH_STEP_EXECUTION_CONTEXT (\n" +
140+
" STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,\n" +
141+
" SHORT_CONTEXT VARCHAR(2500) NOT NULL,\n" +
142+
" SERIALIZED_CONTEXT TEXT,\n" +
143+
" constraint BOOT3_STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID)\n" +
144+
" references BOOT3_BATCH_STEP_EXECUTION(STEP_EXECUTION_ID)\n" +
145+
")";
146+
147+
public final static String CREATE_BATCH_JOB_EXECUTION_CONTEXT_TABLE =
148+
"CREATE TABLE BOOT3_BATCH_JOB_EXECUTION_CONTEXT (\n" +
149+
" JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,\n" +
150+
" SHORT_CONTEXT VARCHAR(2500) NOT NULL,\n" +
151+
" SERIALIZED_CONTEXT TEXT,\n" +
152+
" constraint BOOT3_JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID)\n" +
153+
" references BOOT3_BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)\n" +
154+
")";
155+
156+
public final static String CREATE_BATCH_STEP_EXECUTION_SEQUENCE =
157+
"CREATE SEQUENCE BOOT3_BATCH_STEP_EXECUTION_SEQ START WITH 1 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1 NOCACHE NOCYCLE";
158+
159+
public final static String CREATE_BATCH_JOB_EXECUTION_SEQUENCE =
160+
"CREATE SEQUENCE BOOT3_BATCH_JOB_EXECUTION_SEQ START WITH 1 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1 NOCACHE NOCYCLE";
161+
162+
public final static String CREATE_BATCH_JOB_SEQUENCE =
163+
"CREATE SEQUENCE BOOT3_BATCH_JOB_SEQ START WITH 1 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1 NOCACHE NOCYCLE";
164+
165+
@Override
166+
public List<SqlCommand> createTask3Tables() {
167+
return Arrays.asList(
168+
SqlCommand.from(CREATE_TASK_EXECUTION_TABLE),
169+
SqlCommand.from(CREATE_TASK_EXECUTION_PARAMS_TABLE),
170+
SqlCommand.from(CREATE_TASK_TASK_BATCH),
171+
SqlCommand.from(CREATE_TASK_SEQ_SEQUENCE),
172+
SqlCommand.from(CREATE_TASK_LOCK_TABLE));
173+
}
174+
175+
@Override
176+
public List<SqlCommand> createBatch5Tables() {
177+
return Arrays.asList(
178+
SqlCommand.from(CREATE_BATCH_JOB_INSTANCE_TABLE),
179+
SqlCommand.from(CREATE_BATCH_JOB_EXECUTION_TABLE),
180+
SqlCommand.from(CREATE_BATCH_JOB_EXECUTION_PARAMS_TABLE),
181+
SqlCommand.from(CREATE_BATCH_STEP_EXECUTION_TABLE),
182+
SqlCommand.from(CREATE_BATCH_STEP_EXECUTION_CONTEXT_TABLE),
183+
SqlCommand.from(CREATE_BATCH_JOB_EXECUTION_CONTEXT_TABLE),
184+
SqlCommand.from(CREATE_BATCH_STEP_EXECUTION_SEQUENCE),
185+
SqlCommand.from(CREATE_BATCH_JOB_EXECUTION_SEQUENCE),
186+
SqlCommand.from(CREATE_BATCH_JOB_SEQUENCE));
187+
}
188+
}

spring-cloud-dataflow-server-core/src/main/resources/application-init-mariadb.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ spring:
1212
- classpath*:/schemas/mariadb/V3-dataflow.sql
1313
- classpath*:/schemas/mariadb/V4-dataflow.sql
1414
- classpath*:/schemas/mariadb/V5-dataflow.sql
15+
- classpath*:/schemas/mariadb/V6-dataflow.sql
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
2+
/*
3+
* spring-cloud-task v3 schema taken from
4+
* https://github.com/spring-cloud/spring-cloud-task/blob/main/spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-mariadb.sql
5+
* and prefixed w/ 'BOOT3_'
6+
*/
7+
8+
CREATE TABLE BOOT3_TASK_EXECUTION (
9+
TASK_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
10+
START_TIME DATETIME(6) DEFAULT NULL,
11+
END_TIME DATETIME(6) DEFAULT NULL,
12+
TASK_NAME VARCHAR(100),
13+
EXIT_CODE INTEGER,
14+
EXIT_MESSAGE VARCHAR(2500),
15+
ERROR_MESSAGE VARCHAR(2500),
16+
LAST_UPDATED TIMESTAMP,
17+
EXTERNAL_EXECUTION_ID VARCHAR(255),
18+
PARENT_EXECUTION_ID BIGINT
19+
);
20+
21+
CREATE TABLE BOOT3_TASK_EXECUTION_PARAMS (
22+
TASK_EXECUTION_ID BIGINT NOT NULL,
23+
TASK_PARAM VARCHAR(2500),
24+
constraint BOOT3_TASK_EXEC_PARAMS_FK foreign key (TASK_EXECUTION_ID)
25+
references BOOT3_TASK_EXECUTION(TASK_EXECUTION_ID)
26+
);
27+
28+
CREATE TABLE BOOT3_TASK_TASK_BATCH (
29+
TASK_EXECUTION_ID BIGINT NOT NULL,
30+
JOB_EXECUTION_ID BIGINT NOT NULL,
31+
constraint BOOT3_TASK_EXEC_BATCH_FK foreign key (TASK_EXECUTION_ID)
32+
references BOOT3_TASK_EXECUTION(TASK_EXECUTION_ID)
33+
);
34+
35+
CREATE TABLE BOOT3_TASK_LOCK (
36+
LOCK_KEY CHAR(36) NOT NULL,
37+
REGION VARCHAR(100) NOT NULL,
38+
CLIENT_ID CHAR(36),
39+
CREATED_DATE DATETIME(6) NOT NULL,
40+
constraint BOOT3_LOCK_PK primary key (LOCK_KEY, REGION)
41+
);
42+
43+
CREATE SEQUENCE BOOT3_TASK_SEQ START WITH 1 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1 NOCACHE NOCYCLE;
44+
45+
/*
46+
* spring-batch v5 schema taken from
47+
* https://github.com/spring-projects/spring-batch/blob/main/spring-batch-core/src/main/resources/org/springframework/batch/core/schema-mariadb.sql
48+
* and prefixed w/ 'BOOT3_'
49+
*/
50+
CREATE TABLE BOOT3_BATCH_JOB_INSTANCE (
51+
JOB_INSTANCE_ID BIGINT NOT NULL PRIMARY KEY,
52+
VERSION BIGINT,
53+
JOB_NAME VARCHAR(100) NOT NULL,
54+
JOB_KEY VARCHAR(32) NOT NULL,
55+
constraint BOOT3_JOB_INST_UN unique (JOB_NAME, JOB_KEY)
56+
);
57+
58+
CREATE TABLE BOOT3_BATCH_JOB_EXECUTION (
59+
JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
60+
VERSION BIGINT ,
61+
JOB_INSTANCE_ID BIGINT NOT NULL,
62+
CREATE_TIME DATETIME(6) NOT NULL,
63+
START_TIME DATETIME(6) DEFAULT NULL,
64+
END_TIME DATETIME(6) DEFAULT NULL,
65+
STATUS VARCHAR(10),
66+
EXIT_CODE VARCHAR(2500),
67+
EXIT_MESSAGE VARCHAR(2500),
68+
LAST_UPDATED DATETIME(6),
69+
constraint BOOT3_JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID)
70+
references BOOT3_BATCH_JOB_INSTANCE(JOB_INSTANCE_ID)
71+
);
72+
73+
CREATE TABLE BOOT3_BATCH_JOB_EXECUTION_PARAMS (
74+
JOB_EXECUTION_ID BIGINT NOT NULL,
75+
PARAMETER_NAME VARCHAR(100) NOT NULL,
76+
PARAMETER_TYPE VARCHAR(100) NOT NULL,
77+
PARAMETER_VALUE VARCHAR(2500),
78+
IDENTIFYING CHAR(1) NOT NULL,
79+
constraint BOOT3_JOB_EXEC_PARAMS_FK foreign key (JOB_EXECUTION_ID)
80+
references BOOT3_BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)
81+
);
82+
83+
CREATE TABLE BOOT3_BATCH_STEP_EXECUTION (
84+
STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
85+
VERSION BIGINT NOT NULL,
86+
STEP_NAME VARCHAR(100) NOT NULL,
87+
JOB_EXECUTION_ID BIGINT NOT NULL,
88+
CREATE_TIME DATETIME(6) NOT NULL,
89+
START_TIME DATETIME(6) DEFAULT NULL,
90+
END_TIME DATETIME(6) DEFAULT NULL,
91+
STATUS VARCHAR(10),
92+
COMMIT_COUNT BIGINT,
93+
READ_COUNT BIGINT,
94+
FILTER_COUNT BIGINT,
95+
WRITE_COUNT BIGINT,
96+
READ_SKIP_COUNT BIGINT,
97+
WRITE_SKIP_COUNT BIGINT,
98+
PROCESS_SKIP_COUNT BIGINT,
99+
ROLLBACK_COUNT BIGINT,
100+
EXIT_CODE VARCHAR(2500),
101+
EXIT_MESSAGE VARCHAR(2500),
102+
LAST_UPDATED DATETIME(6),
103+
constraint BOOT3_JOB_EXEC_STEP_FK foreign key (JOB_EXECUTION_ID)
104+
references BOOT3_BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)
105+
);
106+
107+
CREATE TABLE BOOT3_BATCH_STEP_EXECUTION_CONTEXT (
108+
STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
109+
SHORT_CONTEXT VARCHAR(2500) NOT NULL,
110+
SERIALIZED_CONTEXT TEXT,
111+
constraint BOOT3_STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID)
112+
references BOOT3_BATCH_STEP_EXECUTION(STEP_EXECUTION_ID)
113+
);
114+
115+
CREATE TABLE BOOT3_BATCH_JOB_EXECUTION_CONTEXT (
116+
JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
117+
SHORT_CONTEXT VARCHAR(2500) NOT NULL,
118+
SERIALIZED_CONTEXT TEXT,
119+
constraint BOOT3_JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID)
120+
references BOOT3_BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)
121+
);
122+
123+
CREATE SEQUENCE BOOT3_BATCH_STEP_EXECUTION_SEQ START WITH 1 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1 NOCACHE NOCYCLE;
124+
CREATE SEQUENCE BOOT3_BATCH_JOB_EXECUTION_SEQ START WITH 1 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1 NOCACHE NOCYCLE;
125+
CREATE SEQUENCE BOOT3_BATCH_JOB_SEQ START WITH 1 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1 NOCACHE NOCYCLE;

0 commit comments

Comments
 (0)