ImmutableBytesWritable ptr = context.getTempPtr();
// Can't use child.isConstant(), because we have cases in which we don't know
// in advance if a function evaluates to null (namely when bind variables are used)
// TODO: use child.isStateless
if (child.isStateless()) {
if (!child.evaluate(null, ptr) || ptr.getLength() == 0) {
return LiteralExpression.newConstant(null, PDataType.BOOLEAN, child.isDeterministic());
}
return LiteralExpression.newConstant(!(Boolean)PDataType.BOOLEAN.toObject(ptr), PDataType.BOOLEAN, child.isDeterministic());
}
return new NotExpression(child);