Jesus Camacho Rodriguez created CALCITE-1344: ------------------------------------------------
Summary: Incorrect inferred precision when BigDecimal value is less than 1 Key: CALCITE-1344 URL: https://issues.apache.org/jira/browse/CALCITE-1344 Project: Calcite Issue Type: Bug Affects Versions: 1.8.0 Reporter: Jesus Camacho Rodriguez Assignee: Jesus Camacho Rodriguez Method {{makeExactLiteral(BigDecimal)}} in RexBuilder infers the incorrect precision when decimal < 1 e.g. for 0.06 it infers the type to be Decimal(1,2) instead of Decimal(3,2). {code:java} /** * Creates a numeric literal. */ public RexLiteral makeExactLiteral(BigDecimal bd) { RelDataType relType; int scale = bd.scale(); long l = bd.unscaledValue().longValue(); assert scale >= 0; assert scale <= typeFactory.getTypeSystem().getMaxNumericScale() : scale; assert BigDecimal.valueOf(l, scale).equals(bd); if (scale == 0) { if ((l >= Integer.MIN_VALUE) && (l <= Integer.MAX_VALUE)) { relType = typeFactory.createSqlType(SqlTypeName.INTEGER); } else { relType = typeFactory.createSqlType(SqlTypeName.BIGINT); } } else { int precision = bd.unscaledValue().abs().toString().length(); relType = typeFactory.createSqlType(SqlTypeName.DECIMAL, precision, scale); } return makeExactLiteral(bd, relType); } {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)