@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { Expression delimiterExpr = children.get(1); if (!delimiterExpr.evaluate(tuple, ptr)) { return false; } else if (ptr.getLength() == 0) { return true; } String delimiter = (String) delimiterExpr.getDataType().toObject(ptr, delimiterExpr.getSortOrder(), delimiterExpr.getMaxLength(), delimiterExpr.getScale()); Expression arrayExpr = children.get(0); if (!arrayExpr.evaluate(tuple, ptr)) { return false; } else if (ptr.getLength() == 0) { return true; } PhoenixArray array = (PhoenixArray) arrayExpr.getDataType().toObject(ptr, arrayExpr.getSortOrder(), arrayExpr.getMaxLength(), arrayExpr.getScale()); Expression nullExpr = children.get(2); String nullString = null; if (nullExpr.evaluate(tuple, ptr) && ptr.getLength() != 0) { nullString = (String) nullExpr.getDataType().toObject(ptr, nullExpr.getSortOrder(), nullExpr.getMaxLength(), nullExpr.getScale()); } return PArrayDataType.arrayToString(ptr, array, delimiter, nullString, getSortOrder()); }
private static void testExpression(LiteralExpression array, LiteralExpression delimiter, LiteralExpression nullString, String expected) throws SQLException { List<Expression> expressions = Lists.newArrayList((Expression) array); expressions.add(delimiter); expressions.add(nullString); Expression arrayToStringFunction = new ArrayToStringFunction(expressions); ImmutableBytesWritable ptr = new ImmutableBytesWritable(); arrayToStringFunction.evaluate(null, ptr); String result = (String) arrayToStringFunction.getDataType().toObject(ptr, arrayToStringFunction.getSortOrder(), arrayToStringFunction.getMaxLength(), arrayToStringFunction.getScale()); assertEquals(expected, result); }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { Expression delimiterExpr = children.get(1); if (!delimiterExpr.evaluate(tuple, ptr)) { return false; } else if (ptr.getLength() == 0) { return true; } String delimiter = (String) delimiterExpr.getDataType().toObject(ptr, delimiterExpr.getSortOrder(), delimiterExpr.getMaxLength(), delimiterExpr.getScale()); Expression arrayExpr = children.get(0); if (!arrayExpr.evaluate(tuple, ptr)) { return false; } else if (ptr.getLength() == 0) { return true; } PhoenixArray array = (PhoenixArray) arrayExpr.getDataType().toObject(ptr, arrayExpr.getSortOrder(), arrayExpr.getMaxLength(), arrayExpr.getScale()); Expression nullExpr = children.get(2); String nullString = null; if (nullExpr.evaluate(tuple, ptr) && ptr.getLength() != 0) { nullString = (String) nullExpr.getDataType().toObject(ptr, nullExpr.getSortOrder(), nullExpr.getMaxLength(), nullExpr.getScale()); } return PArrayDataType.arrayToString(ptr, array, delimiter, nullString, getSortOrder()); }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { Expression delimiterExpr = children.get(1); if (!delimiterExpr.evaluate(tuple, ptr)) { return false; } else if (ptr.getLength() == 0) { return true; } String delimiter = (String) delimiterExpr.getDataType().toObject(ptr, delimiterExpr.getSortOrder(), delimiterExpr.getMaxLength(), delimiterExpr.getScale()); Expression arrayExpr = children.get(0); if (!arrayExpr.evaluate(tuple, ptr)) { return false; } else if (ptr.getLength() == 0) { return true; } PhoenixArray array = (PhoenixArray) arrayExpr.getDataType().toObject(ptr, arrayExpr.getSortOrder(), arrayExpr.getMaxLength(), arrayExpr.getScale()); Expression nullExpr = children.get(2); String nullString = null; if (nullExpr.evaluate(tuple, ptr) && ptr.getLength() != 0) { nullString = (String) nullExpr.getDataType().toObject(ptr, nullExpr.getSortOrder(), nullExpr.getMaxLength(), nullExpr.getScale()); } return PArrayDataType.arrayToString(ptr, array, delimiter, nullString, getSortOrder()); }