From b6a56eb83f7ee49b1644a9a2743150c698926009 Mon Sep 17 00:00:00 2001 From: labkey-nicka Date: Tue, 21 Apr 2026 15:31:43 -0700 Subject: [PATCH 1/2] PropertyColumn: do not cast float/decimal columns as varchar --- api/src/org/labkey/api/exp/PropertyColumn.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/org/labkey/api/exp/PropertyColumn.java b/api/src/org/labkey/api/exp/PropertyColumn.java index 12c8772143f..32fbffb4407 100644 --- a/api/src/org/labkey/api/exp/PropertyColumn.java +++ b/api/src/org/labkey/api/exp/PropertyColumn.java @@ -267,7 +267,7 @@ private String getPropertySqlCastType() if (isMvIndicatorColumn()) return null; PropertyType pt = _pd.getPropertyType(); - if (PropertyType.DOUBLE == pt || PropertyType.DATE_TIME == pt) + if (PropertyType.DOUBLE == pt || PropertyType.DATE_TIME == pt || PropertyType.DECIMAL == pt || PropertyType.FLOAT == pt) return null; else if (PropertyType.TIME == pt) return "TIME"; From c0a51e9610d28cd8943cb1bc2c143601bcfa3bc8 Mon Sep 17 00:00:00 2001 From: labkey-nicka Date: Wed, 22 Apr 2026 09:20:54 -0700 Subject: [PATCH 2/2] Use switch --- .../org/labkey/api/exp/PropertyColumn.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/api/src/org/labkey/api/exp/PropertyColumn.java b/api/src/org/labkey/api/exp/PropertyColumn.java index 32fbffb4407..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 || PropertyType.DECIMAL == pt || PropertyType.FLOAT == 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()