Skip to content

Commit 518ec3d

Browse files
committed
Adjust TableColumnTypeValidationTest to run correctly on Oracle and SQL Server
1 parent 791d14f commit 518ec3d

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

modules/flowable-app-rest/src/test/java/org/flowable/test/persistence/TableColumnTypeValidationTest.java

+15-5
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,25 @@ public void validateColumnTypes(EntityHelperUtil.EntityMappingPackageInformation
8080
configuredColumnType = EntityParameterTypesOverview.PARAMETER_TYPE_VARCHAR;
8181
}
8282

83+
// Oracle returns INTEGER for both BIGINT, Boolean and Double
84+
if (databaseType.equals(AbstractEngineConfiguration.DATABASE_TYPE_ORACLE)
85+
&& columnTypeFromMetaData.equalsIgnoreCase(EntityParameterTypesOverview.PARAMETER_TYPE_INTEGER)) {
86+
87+
if (configuredColumnType.equalsIgnoreCase(EntityParameterTypesOverview.PARAMETER_TYPE_BIGINT)) {
88+
columnTypeFromMetaData = EntityParameterTypesOverview.PARAMETER_TYPE_BIGINT;
89+
} else if (configuredColumnType.equalsIgnoreCase(EntityParameterTypesOverview.PARAMETER_TYPE_BOOLEAN)) {
90+
columnTypeFromMetaData = EntityParameterTypesOverview.PARAMETER_TYPE_BOOLEAN;
91+
} else if (configuredColumnType.equalsIgnoreCase(EntityParameterTypesOverview.PARAMETER_TYPE_DOUBLE)) {
92+
columnTypeFromMetaData = EntityParameterTypesOverview.PARAMETER_TYPE_DOUBLE;
93+
}
94+
}
95+
8396
// Some databases report boolean for tinyint columns
8497
if (columnTypeFromMetaData.equalsIgnoreCase(EntityParameterTypesOverview.PARAMETER_TYPE_BOOLEAN)) {
8598
assertThat(configuredColumnType)
8699
.withFailMessage("Column type does not match. Expecting <" + configuredColumnType
87100
+ "> for column " + columnName + " of table " + tableName + ", but JDBC metadata returned <" + columnTypeFromMetaData + ">")
88-
.satisfiesAnyOf(
89-
param -> assertThat(param).isEqualTo(EntityParameterTypesOverview.PARAMETER_TYPE_BOOLEAN),
90-
param -> assertThat(param).isEqualTo(EntityParameterTypesOverview.PARAMETER_TYPE_INTEGER)
91-
);
101+
.isIn(EntityParameterTypesOverview.PARAMETER_TYPE_BOOLEAN, EntityParameterTypesOverview.PARAMETER_TYPE_INTEGER);
92102

93103
} else {
94104

@@ -235,6 +245,7 @@ protected Map<String, String> internalGetColumnMetaData(String tableName) {
235245
columnType = EntityParameterTypesOverview.PARAMETER_TYPE_TIMESTAMP;
236246

237247
} else if (columnType.equalsIgnoreCase("int")
248+
|| columnType.equalsIgnoreCase("NUMBER") // oracle
238249
|| columnType.equalsIgnoreCase("int2") // postgres
239250
|| columnType.equalsIgnoreCase("int4")) { // postgres
240251
columnType = EntityParameterTypesOverview.PARAMETER_TYPE_INTEGER;
@@ -248,7 +259,6 @@ protected Map<String, String> internalGetColumnMetaData(String tableName) {
248259
} else if (columnType.equalsIgnoreCase("bit")
249260
|| columnType.equalsIgnoreCase("SMALLINT")
250261
|| columnType.equalsIgnoreCase("TINYINT") // mariadb
251-
|| columnType.equalsIgnoreCase("NUMBER") // oracle
252262
|| columnType.equalsIgnoreCase("bool")) { // postgres
253263
columnType = EntityParameterTypesOverview.PARAMETER_TYPE_BOOLEAN;
254264

0 commit comments

Comments
 (0)