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

Commit 0bf780d

Browse files
cppwfschrisjs
authored andcommitted
Changed the task-definition type to LONGVARCHAR
Originally the type was a CLOB but when saving over 4000 char Postgres would fail via exception because it does not support clob. It supports only LONGVARCHAR. I regression tested this change against: Oracle, SQLServer, DB2, H2, MYSql for cases of under 4000 and over 4000. They all work with the exception of Oracle which is a VARCHAR(4000) when testing over 4000 char. I'm trying to remember why we used VARCHAR(4000) instead of a CLOB, but there was a reason. So this is expected behavior in this case. resolves #2349
1 parent 5a49747 commit 0bf780d

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

spring-cloud-dataflow-server-core/src/main/java/org/springframework/cloud/dataflow/server/repository/RdbmsTaskDefinitionRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public <S extends TaskDefinition> S save(S definition) {
5353
definition.getName()));
5454
}
5555
Object[] insertParameters = new Object[] { definition.getName(), definition.getDslText() };
56-
jdbcTemplate.update(saveRow, insertParameters, new int[] { Types.VARCHAR, Types.CLOB });
56+
jdbcTemplate.update(saveRow, insertParameters, new int[] { Types.VARCHAR, Types.LONGVARCHAR });
5757
return definition;
5858
}
5959

spring-cloud-dataflow-server-core/src/test/java/org/springframework/cloud/dataflow/server/repository/RdbmsTaskDefinitionRepositoryTests.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,19 @@ public void findAllPageableDefinitionStringTestDESC() {
157157
findAllPageable(pageable, names);
158158
}
159159

160+
@Test
161+
public void initializeRepositoryLargeDefinition() {
162+
String name = "task2";
163+
String definition = new String(new char[4500]).replace("\0", "t");
164+
TaskDefinition defOne = new TaskDefinition(name, definition);
165+
this.repository.save(defOne);
166+
Iterable<TaskDefinition> items = this.repository.findAll();
167+
items.forEach(item -> {
168+
assertEquals(definition, item.getDslText());
169+
assertEquals(name, item.getName());
170+
});
171+
}
172+
160173
private void findAllPageable(Pageable pageable, String[] expectedOrder) {
161174

162175
assertFalse(repository.findAll().iterator().hasNext());

0 commit comments

Comments
 (0)