Skip to content

Commit

Permalink
TEIID-5328 fix for regression
Browse files Browse the repository at this point in the history
  • Loading branch information
shawkins committed Apr 24, 2018
1 parent 038971b commit 1fea122
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 11 deletions.
33 changes: 22 additions & 11 deletions common-core/src/main/java/org/teiid/core/types/DataTypeManager.java
Expand Up @@ -980,18 +980,29 @@ public static final String getCanonicalString(String value) {
}

public static boolean isHashable(Class<?> type) {
if (type == DataTypeManager.DefaultDataClasses.STRING
|| type == DataTypeManager.DefaultDataClasses.CHAR) {
return COLLATION_LOCALE == null;
}
if (type == DataTypeManager.DefaultDataClasses.STRING) {
return !PAD_SPACE;
}
return !(type == DataTypeManager.DefaultDataClasses.BIG_DECIMAL
|| type == DataTypeManager.DefaultDataClasses.BLOB
|| type == DataTypeManager.DefaultDataClasses.CLOB
|| type == DataTypeManager.DefaultDataClasses.OBJECT);
return isHashable(type, PAD_SPACE, COLLATION_LOCALE);
}

static boolean isHashable(Class<?> type, boolean padSpace, String collationLocale) {
if (type == null) {
return true;
}
if ((type == DataTypeManager.DefaultDataClasses.STRING
|| type == DataTypeManager.DefaultDataClasses.CHAR) && collationLocale != null) {
return false;
}
if (type == DataTypeManager.DefaultDataClasses.STRING) {
return !padSpace;
}
if (type.isArray() ) {
return isHashable(type.getComponentType(), padSpace, collationLocale);
}
return !(type == DataTypeManager.DefaultDataClasses.BIG_DECIMAL
|| type == DataTypeManager.DefaultDataClasses.BLOB
|| type == DataTypeManager.DefaultDataClasses.CLOB
|| type == DataTypeManager.DefaultDataClasses.OBJECT);
}


public static Class<?> getArrayType(Class<?> classType) {
Class<?> result = arrayTypes.get(classType);
Expand Down
Expand Up @@ -237,5 +237,10 @@ public String toString() {
Object value = new Object[] {"a", "b"};
DataTypeManager.transformValue(value, value.getClass(), String[].class);
}

@Test public void isHashable() {
assertFalse(DataTypeManager.isHashable(DataTypeManager.DefaultDataClasses.STRING, true, null));
assertFalse(DataTypeManager.isHashable(String[].class, false, "Something"));
}

}

0 comments on commit 1fea122

Please sign in to comment.