diff --git a/api/src/org/labkey/api/exp/PropertyColumn.java b/api/src/org/labkey/api/exp/PropertyColumn.java index 12c8772143f..820b55b409f 100644 --- a/api/src/org/labkey/api/exp/PropertyColumn.java +++ b/api/src/org/labkey/api/exp/PropertyColumn.java @@ -211,7 +211,6 @@ public void setParentIsObjectId(boolean id) @Override public SQLFragment getValueSql(String tableAlias) { - String cast = getPropertySqlCastType(); SQLFragment sql = new SQLFragment("(SELECT "); if (isMvIndicatorColumn()) { @@ -232,6 +231,8 @@ else if (_pd.getPropertyType() == PropertyType.BOOLEAN) else sql.append(getTableAlias(tableAlias)).append(".ObjectId"); sql.append(")"); + + String cast = getPropertySqlCastType(); if (null != cast) { sql.insert(0, "CAST("); @@ -262,23 +263,21 @@ static private String getPropertyCol(@NotNull PropertyDescriptor pd) }; } - private String getPropertySqlCastType() + private @Nullable String getPropertySqlCastType() { if (isMvIndicatorColumn()) return null; - PropertyType pt = _pd.getPropertyType(); - if (PropertyType.DOUBLE == pt || PropertyType.DATE_TIME == pt) - return null; - else if (PropertyType.TIME == pt) - return "TIME"; - else if (PropertyType.DATE == pt) - return "DATE"; - else if (PropertyType.INTEGER == pt) - return "INT"; - else if (PropertyType.BOOLEAN == pt) - return getParentTable().getSqlDialect().getBooleanDataType(); - else - return getParentTable().getSqlDialect().getSqlTypeName(JdbcType.VARCHAR) + "(" + PropertyStorageSpec.DEFAULT_SIZE + ")"; + + return switch (_pd.getPropertyType()) + { + case DOUBLE, DATE_TIME, DECIMAL, FLOAT -> null; + case TIME -> "TIME"; + case DATE -> "DATE"; + case INTEGER -> "INT"; + case BOOLEAN -> getParentTable().getSqlDialect().getBooleanDataType(); + case null, default -> getParentTable().getSqlDialect().getSqlTypeName(JdbcType.VARCHAR) + + "(" + PropertyStorageSpec.DEFAULT_SIZE + ")"; + }; } public PropertyDescriptor getPropertyDescriptor()