[jOOQ/jOOQ#17019] Wrong cast being generated for H2's MySQL style enum types, when a EnumConverter is present

This commit is contained in:
Lukas Eder 2024-08-07 15:49:29 +02:00
parent d3b72dff19
commit ccbe04b1b5
3 changed files with 31 additions and 52 deletions

View File

@ -243,18 +243,12 @@ public class CUBRIDDatabase extends AbstractDatabase {
String columnType = record.get("Type", String.class);
String name = table + "_" + column;
ColumnDefinition columnDefinition = tableDefinition.getColumn(column);
// [#1137] Avoid generating enum classes for enum types that
// are explicitly forced to another type
if (getConfiguredForcedType(columnDefinition) == null) {
DefaultEnumDefinition definition = new DefaultEnumDefinition(getSchemata().get(0), name, "", true);
for (String string : columnType.replaceAll("ENUM\\(|\\)", "").split(",")) {
definition.addLiteral(string.trim().replaceAll("'", ""));
}
result.add(definition);
DefaultEnumDefinition definition = new DefaultEnumDefinition(getSchemata().get(0), name, "", true);
for (String string : columnType.replaceAll("ENUM\\(|\\)", "").split(",")) {
definition.addLiteral(string.trim().replaceAll("'", ""));
}
result.add(definition);
}
}

View File

@ -969,18 +969,13 @@ public class H2Database extends AbstractDatabase implements ResultQueryDatabase
ColumnDefinition columnDefinition = tableDefinition.getColumn(r.value3());
if (columnDefinition != null) {
String name = r.value2() + "_" + r.value3();
DefaultEnumDefinition definition = new DefaultEnumDefinition(schema, name, "", true);
// [#1137] Avoid generating enum classes for enum types that
// are explicitly forced to another type
if (getConfiguredForcedType(columnDefinition, columnDefinition.getType()) == null) {
String name = r.value2() + "_" + r.value3();
DefaultEnumDefinition definition = new DefaultEnumDefinition(schema, name, "", true);
for (String string : r.value4())
definition.addLiteral(string);
for (String string : r.value4())
definition.addLiteral(string);
result.add(definition);
}
result.add(definition);
}
}
});
@ -1019,25 +1014,20 @@ public class H2Database extends AbstractDatabase implements ResultQueryDatabase
ColumnDefinition columnDefinition = tableDefinition.getColumn(r.column);
if (columnDefinition != null) {
String name = r.table + "_" + r.column;
DefaultEnumDefinition definition = new DefaultEnumDefinition(schema, name, "", true);
// [#1137] Avoid generating enum classes for enum types that
// are explicitly forced to another type
if (getConfiguredForcedType(columnDefinition, columnDefinition.getType()) == null) {
String name = r.table + "_" + r.column;
DefaultEnumDefinition definition = new DefaultEnumDefinition(schema, name, "", true);
CSVReader reader = new CSVReader(
new StringReader(r.type.replaceAll("(^enum\\()|(\\)[^)]*$)", ""))
,',' // Separator
,'\'' // Quote character
,true // Strict quotes
);
CSVReader reader = new CSVReader(
new StringReader(r.type.replaceAll("(^enum\\()|(\\)[^)]*$)", ""))
,',' // Separator
,'\'' // Quote character
,true // Strict quotes
);
for (String string : reader.next())
definition.addLiteral(string);
for (String string : reader.next())
definition.addLiteral(string);
result.add(definition);
}
result.add(definition);
}
}
}

View File

@ -634,24 +634,19 @@ public class MySQLDatabase extends AbstractDatabase implements ResultQueryDataba
ColumnDefinition columnDefinition = tableDefinition.getColumn(r.column);
if (columnDefinition != null) {
DefaultEnumDefinition definition = new DefaultEnumDefinition(schema, name, r.comment, true);
// [#1137] Avoid generating enum classes for enum types that
// are explicitly forced to another type
if (getConfiguredForcedType(columnDefinition, columnDefinition.getType()) == null) {
DefaultEnumDefinition definition = new DefaultEnumDefinition(schema, name, r.comment, true);
CSVReader reader = new CSVReader(
new StringReader(r.type.replaceAll("(^enum\\()|(\\)$)", ""))
,',' // Separator
,'\'' // Quote character
,true // Strict quotes
);
CSVReader reader = new CSVReader(
new StringReader(r.type.replaceAll("(^enum\\()|(\\)$)", ""))
,',' // Separator
,'\'' // Quote character
,true // Strict quotes
);
for (String string : reader.next())
definition.addLiteral(string);
for (String string : reader.next())
definition.addLiteral(string);
result.add(definition);
}
result.add(definition);
}
}
}