super(children);
}
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
Expression arrayKVExpression = children.get(0);
if (!arrayKVExpression.evaluate(tuple, ptr)) {
return false;
} else if (ptr.getLength() == 0) { return true; }
int length = PArrayDataType.getArrayLength(ptr,
PDataType.fromTypeId(children.get(0).getDataType().getSqlType() - PDataType.ARRAY_TYPE_BASE),
arrayKVExpression.getMaxLength());
boolean elementAvailable = false;
for (int i = 0; i < length; i++) {
Expression comparisonExpr = children.get(1);
Expression arrayElemRef = ((ComparisonExpression)comparisonExpr).getChildren().get(1);
((InlineArrayElemRefExpression)arrayElemRef).setIndex(i + 1);
comparisonExpr.evaluate(tuple, ptr);
if (expectedReturnResult(resultFound(ptr))) { return result(); }
elementAvailable = true;
}