@Override protected Object visitDecimalLiteral(DecimalLiteral node, ConnectorSession context) { return Decimals.parse(node.getValue()).getObject(); }
value = encodeUnscaledValue(new BigInteger(unscaledValue)); return new DecimalParseResult(value, createDecimalType(precision, scale));
@Override protected Type visitDecimalLiteral(DecimalLiteral node, StackableAstVisitorContext<Context> context) { DecimalParseResult parseResult = Decimals.parse(node.getValue()); return setExpressionType(node, parseResult.getType()); }
@Override protected Object visitDecimalLiteral(DecimalLiteral node, ConnectorSession context) { return Decimals.parse(node.getValue()).getObject(); }
private void assertParseResult(String value, Object expectedObject, int expectedPrecision, int expectedScale) { assertEquals(Decimals.parse(value), new DecimalParseResult( expectedObject, createDecimalType(expectedPrecision, expectedScale))); }
@Override protected Type visitDecimalLiteral(DecimalLiteral node, StackableAstVisitorContext<Context> context) { DecimalParseResult parseResult = Decimals.parse(node.getValue()); return setExpressionType(node, parseResult.getType()); }
@Override public Slice getSlice(int field) { checkState(row != null, "No current row"); Column column = columns.get(field); if (column.getType().getBase() == ColumnType.Base.DECIMAL) { return (Slice) Decimals.parse(row.get(column.getPosition())).getObject(); } Slice characters = Slices.utf8Slice(row.get(columns.get(field).getPosition())); if (column.getType().getBase() == ColumnType.Base.CHAR) { characters = trimTrailingSpaces(characters); } return characters; }
private void assertParseResultIncludeLeadingZerosInPrecision(String value, Object expectedObject, int expectedPrecision, int expectedScale) { assertEquals(Decimals.parseIncludeLeadingZerosInPrecision(value), new DecimalParseResult( expectedObject, createDecimalType(expectedPrecision, expectedScale))); }
protected static SqlDecimal decimal(String decimalString) { DecimalParseResult parseResult = Decimals.parseIncludeLeadingZerosInPrecision(decimalString); BigInteger unscaledValue; if (parseResult.getType().isShort()) { unscaledValue = BigInteger.valueOf((Long) parseResult.getObject()); } else { unscaledValue = Decimals.decodeUnscaledValue((Slice) parseResult.getObject()); } return new SqlDecimal(unscaledValue, parseResult.getType().getPrecision(), parseResult.getType().getScale()); }
@Override public Slice getSlice(int field) { checkState(row != null, "No current row"); Column column = columns.get(field); if (column.getType().getBase() == ColumnType.Base.DECIMAL) { return (Slice) Decimals.parse(row.get(column.getPosition())).getObject(); } Slice characters = Slices.utf8Slice(row.get(columns.get(field).getPosition())); if (column.getType().getBase() == ColumnType.Base.CHAR) { characters = trimTrailingSpaces(characters); } return characters; }
private void assertParseResult(String value, Object expectedObject, int expectedPrecision, int expectedScale) { assertEquals(Decimals.parse(value), new DecimalParseResult( expectedObject, createDecimalType(expectedPrecision, expectedScale))); }
protected static SqlDecimal decimal(String decimalString) { DecimalParseResult parseResult = Decimals.parseIncludeLeadingZerosInPrecision(decimalString); BigInteger unscaledValue; if (parseResult.getType().isShort()) { unscaledValue = BigInteger.valueOf((Long) parseResult.getObject()); } else { unscaledValue = Decimals.decodeUnscaledValue((Slice) parseResult.getObject()); } return new SqlDecimal(unscaledValue, parseResult.getType().getPrecision(), parseResult.getType().getScale()); }
private void assertParseResultIncludeLeadingZerosInPrecision(String value, Object expectedObject, int expectedPrecision, int expectedScale) { assertEquals(Decimals.parseIncludeLeadingZerosInPrecision(value), new DecimalParseResult( expectedObject, createDecimalType(expectedPrecision, expectedScale))); }
@Override public long getLong(int field) { checkState(row != null, "No current row"); Column column = columns.get(field); if (column.getType().getBase() == ColumnType.Base.DATE) { return Days.daysBetween(new LocalDate(0), LocalDate.parse(row.get(column.getPosition()))).getDays(); } if (column.getType().getBase() == ColumnType.Base.TIME) { return LocalTime.parse(row.get(column.getPosition())).getMillisOfDay(); } if (column.getType().getBase() == ColumnType.Base.INTEGER) { return parseInt(row.get(column.getPosition())); } if (column.getType().getBase() == ColumnType.Base.DECIMAL) { DecimalParseResult decimalParseResult = Decimals.parse(row.get(column.getPosition())); return rescale((Long) decimalParseResult.getObject(), decimalParseResult.getType().getScale(), ((DecimalType) columnTypes.get(field)).getScale()); } return parseLong(row.get(column.getPosition())); }
@Override public long getLong(int field) { checkState(row != null, "No current row"); Column column = columns.get(field); if (column.getType().getBase() == ColumnType.Base.DATE) { return Days.daysBetween(new LocalDate(0), LocalDate.parse(row.get(column.getPosition()))).getDays(); } if (column.getType().getBase() == ColumnType.Base.TIME) { return LocalTime.parse(row.get(column.getPosition())).getMillisOfDay(); } if (column.getType().getBase() == ColumnType.Base.INTEGER) { return parseInt(row.get(column.getPosition())); } if (column.getType().getBase() == ColumnType.Base.DECIMAL) { DecimalParseResult decimalParseResult = Decimals.parse(row.get(column.getPosition())); return rescale((Long) decimalParseResult.getObject(), decimalParseResult.getType().getScale(), ((DecimalType) columnTypes.get(field)).getScale()); } return parseLong(row.get(column.getPosition())); }