private SelectStatement VisitInputExpressionEnsureSelect(DbExpression e, string name, TypeUsage type)
{
InputFragment fragment = VisitInputExpression(e, name, type);
if (fragment is SelectStatement) return (fragment as SelectStatement);
SelectStatement s = new SelectStatement();
// if the fragment is a union then it needs to be wrapped
if (fragment is UnionFragment)
(fragment as UnionFragment).Wrap(scope);
s.From = fragment;
return s;
}