Is this possibly where the problem lies? from org.hibernate.dialect.Dialect.SizeStrategyImpl.resolveSize(…) So that the 17 are the DecimalDigits (Base10) and 53 the preicision is the BinaryDigits (Base2)?
static boolean hasMatchingLength(Column column, ColumnInformation columnInformation, Metadata metadata, Dialect dialect) {
final int actualSize = columnInformation.getColumnSize(); final int actualDecimalDigits = columnInformation.getDecimalDigits(); if (actualSize == 0 && actualDecimalDigits == 0) {
return true;
} else {
final Size size = column.getColumnSize(dialect, metadata);
final Long requiredLength = size.getLength();
final Integer requiredPrecision = size.getPrecision(); final Integer requiredDecimalDigits = size.getPrecision() != null ? (int) ceil(size.getPrecision() * log(2) / log(10)) : null; return requiredLength != null && requiredLength == actualSize
|| requiredPrecision != null && requiredPrecision == actualDecimalDigits
|| requiredPrecision != null && requiredPrecision == actualSize
|| requiredDecimalDigits != null && requiredDecimalDigits == actualDecimalDigits || requiredDecimalDigits != null && requiredDecimalDigits == actualSize || requiredPrecision == null && requiredLength == null;
}
}
Unfortunateley this isn’t working either. Since converting to Base10 leads to 16 digits. And the doc only talks about “at least 15”: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-FLOAT |