anchor.diff:              Name = name
               As =
                   match createTable.As with
  -                | CreateAsSelect select -> CreateAsSelect <| this.Select(select)
  +                | CreateAsSelect select -> CreateAsSelect <| this.Select(select, None)
                   | CreateAsDefinition def -> CreateAsDefinition <| this.CreateTableDefinition(name, def)
           }
       member this.CreateView(createView : CreateViewStmt) =
           {   Temporary = createView.Temporary
               ViewName = this.ObjectName(createView.ViewName, true)
               ColumnNames = createView.ColumnNames
  -            AsSelect = this.Select(createView.AsSelect)
  +            AsSelect = this.Select(createView.AsSelect, None) // TODO we do sort of know the shape
           }
       member this.QualifiedTableName(qualified : QualifiedTableName) =
           {   TableName = this.ObjectName(qualified.TableName)
  
positive.code:             Value = ScalarSubqueryExpr select
              Info = tbl.Columns.[0].Expr.Info
          }
      member this.Expr(expr : Expr) : InfExpr =
          let source = expr.Source
          match expr.Value with
  
negative.code:                 | Intersect (expr, term) -> Intersect <| nested expr term
                  | Except (expr, term) -> Except <| nested expr term
          }
      member this.Select(select : SelectStmt, knownShape : InferredQueryShape option) : InfSelectStmt =
          {   Source = select.Source
              Value =
                  let select = select.Value
  