@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { if (!getElementExpr().evaluate(tuple, ptr)) { return false; } Object element = getElementExpr().getDataType().toObject(ptr, getElementExpr().getSortOrder(), getElementExpr().getMaxLength(), getElementExpr().getScale()); if (!getLengthExpr().evaluate(tuple, ptr) || ptr.getLength() == 0) { return false; } int length = (Integer) getLengthExpr().getDataType().toObject(ptr, getLengthExpr().getSortOrder(), getLengthExpr().getMaxLength(), getLengthExpr().getScale()); if (length <= 0) { throw new IllegalArgumentException("Array length should be greater than 0"); } Object[] elements = new Object[length]; Arrays.fill(elements, element); PhoenixArray array = PDataType.instantiatePhoenixArray(getElementExpr().getDataType(), elements); //When max length of a char array is not the max length of the element passed in if (getElementExpr().getDataType().isFixedWidth() && getMaxLength() != null && getMaxLength() != array.getMaxLength()) { array = new PhoenixArray(array, getMaxLength()); } ptr.set(((PArrayDataType) getDataType()).toBytes(array, getElementExpr().getDataType(), getElementExpr().getSortOrder())); return true; }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { if (!getElementExpr().evaluate(tuple, ptr)) { return false; } Object element = getElementExpr().getDataType().toObject(ptr, getElementExpr().getSortOrder(), getElementExpr().getMaxLength(), getElementExpr().getScale()); if (!getLengthExpr().evaluate(tuple, ptr) || ptr.getLength() == 0) { return false; } int length = (Integer) getLengthExpr().getDataType().toObject(ptr, getLengthExpr().getSortOrder(), getLengthExpr().getMaxLength(), getLengthExpr().getScale()); if (length <= 0) { throw new IllegalArgumentException("Array length should be greater than 0"); } Object[] elements = new Object[length]; Arrays.fill(elements, element); PhoenixArray array = PDataType.instantiatePhoenixArray(getElementExpr().getDataType(), elements); //When max length of a char array is not the max length of the element passed in if (getElementExpr().getDataType().isFixedWidth() && getMaxLength() != null && getMaxLength() != array.getMaxLength()) { array = new PhoenixArray(array, getMaxLength()); } ptr.set(((PArrayDataType) getDataType()).toBytes(array, getElementExpr().getDataType(), getElementExpr().getSortOrder())); return true; }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { if (!getElementExpr().evaluate(tuple, ptr)) { return false; } Object element = getElementExpr().getDataType().toObject(ptr, getElementExpr().getSortOrder(), getElementExpr().getMaxLength(), getElementExpr().getScale()); if (!getLengthExpr().evaluate(tuple, ptr) || ptr.getLength() == 0) { return false; } int length = (Integer) getLengthExpr().getDataType().toObject(ptr, getLengthExpr().getSortOrder(), getLengthExpr().getMaxLength(), getLengthExpr().getScale()); if (length <= 0) { throw new IllegalArgumentException("Array length should be greater than 0"); } Object[] elements = new Object[length]; Arrays.fill(elements, element); PhoenixArray array = PDataType.instantiatePhoenixArray(getElementExpr().getDataType(), elements); //When max length of a char array is not the max length of the element passed in if (getElementExpr().getDataType().isFixedWidth() && getMaxLength() != null && getMaxLength() != array.getMaxLength()) { array = new PhoenixArray(array, getMaxLength()); } ptr.set(((PArrayDataType) getDataType()).toBytes(array, getElementExpr().getDataType(), getElementExpr().getSortOrder())); return true; }