@Override public byte[] toBytes(Object object) { if (object == null) { return ByteUtil.EMPTY_BYTE_ARRAY; } BigDecimal v = (BigDecimal) object; v = NumberUtil.normalize(v); int len = getLength(v); byte[] result = new byte[Math.min(len, MAX_BIG_DECIMAL_BYTES)]; PDataType.toBytes(v, result, 0, len); return result; }
result = NumberUtil.setDecimalWidthAndScale(result, maxLength, scale);
result = NumberUtil.setDecimalWidthAndScale(result, maxLength, scale);
@Override public int toBytes(Object object, byte[] bytes, int offset) { if (object == null) { return 0; } BigDecimal v = (BigDecimal) object; v = NumberUtil.normalize(v); int len = getLength(v); return PDataType.toBytes(v, bytes, offset, len); }
result = NumberUtil.setDecimalWidthAndScale(result, getMaxLength(), getScale());
private void helpTestToNumberFilterWithNoPattern(String stringValue) throws Exception { String toNumberClause = "to_number('" + stringValue + "')"; BigDecimal expectedDecimal = NumberUtil.normalize(new BigDecimal(stringValue)); helpTestToNumberFilter(toNumberClause, expectedDecimal); }
result = NumberUtil.setDecimalWidthAndScale(result, getMaxLength(), getScale());
@Test public void testToNumberFilterWithPatternParam() throws Exception { String toNumberClause = "to_number('$1.23333E2', '\u00A40.00000E0')"; BigDecimal expectedDecimal = NumberUtil.normalize(new BigDecimal("123.333")); helpTestToNumberFilter(toNumberClause, expectedDecimal); }
@Test(expected=AssertionError.class) // compileStatement() fails because zero rows are found by to_number() public void testToNumberFilterWithPatternParamNegativeTest() throws Exception { String toNumberClause = "to_number('$123.33', '000.00')"; // no currency sign in pattern param BigDecimal expectedDecimal = NumberUtil.normalize(new BigDecimal("123.33")); helpTestToNumberFilter(toNumberClause, expectedDecimal); }