@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { Expression childExpr = children.get(0); PDataType dataType = childExpr.getDataType(); if (childExpr.evaluate(tuple, ptr)) { byte[] bytes = ptr.get(); int offset = ptr.getOffset(), length = ptr.getLength(); ptr.set(new byte[getDataType().getByteSize()]); ((PNumericType) dataType).abs(bytes, offset, length, childExpr.getSortOrder(), ptr); return true; } return false; }
private static void testExpression(LiteralExpression literal, Number expected) throws SQLException { List<Expression> expressions = Lists.newArrayList((Expression) literal); Expression absFunction = new AbsFunction(expressions); ImmutableBytesWritable ptr = new ImmutableBytesWritable(); absFunction.evaluate(null, ptr); Number result = (Number) absFunction.getDataType().toObject(ptr, absFunction.getSortOrder()); assertTrue(result.getClass().equals(expected.getClass())); if (result instanceof BigDecimal) { assertTrue(((BigDecimal) result).compareTo((BigDecimal) expected) == 0); } else { assertTrue(result.equals(expected)); } }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { Expression childExpr = children.get(0); PDataType dataType = childExpr.getDataType(); if (childExpr.evaluate(tuple, ptr)) { byte[] bytes = ptr.get(); int offset = ptr.getOffset(), length = ptr.getLength(); ptr.set(new byte[getDataType().getByteSize()]); ((PNumericType) dataType).abs(bytes, offset, length, childExpr.getSortOrder(), ptr); return true; } return false; }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { Expression childExpr = children.get(0); PDataType dataType = childExpr.getDataType(); if (childExpr.evaluate(tuple, ptr)) { byte[] bytes = ptr.get(); int offset = ptr.getOffset(), length = ptr.getLength(); ptr.set(new byte[getDataType().getByteSize()]); ((PNumericType) dataType).abs(bytes, offset, length, childExpr.getSortOrder(), ptr); return true; } return false; }