public override ITable Evaluate(IRequest context)
{
// Evaluate the expression
var exp = Expression.Evaluate(context, null);
if (exp.ExpressionType != SqlExpressionType.Constant)
throw new InvalidOperationException();
var v = ((SqlConstantExpression) exp).Value;
// If it evaluates to NULL or FALSE then return an empty set
if (v.IsNull || v == false)
return Child.Evaluate(context).EmptySelect();
return Child.Evaluate(context);
}