protected override BoundRelation RewriteUnionRelation(BoundUnionRelation node) { if (node.IsUnionAll) { var definedValues = RemoveUnusedSlots(node.DefinedValues, d => d.ValueSlot); node = node.Update(node.IsUnionAll, node.Inputs, definedValues, node.Comparers); } _recorder.Record(node.DefinedValues); return(base.RewriteUnionRelation(node)); }
protected override BoundRelation RewriteUnionRelation(BoundUnionRelation node) { var inputs = RewriteRelations(node.Inputs); var values = node.DefinedValues; var concatenation = new BoundConcatenationRelation(inputs, values); if (node.IsUnionAll) { return(concatenation); } var sortedValues = values.Zip(node.Comparers, (v, c) => new BoundComparedValue(v.ValueSlot, c)); return(new BoundSortRelation(true, concatenation, sortedValues)); }
private static CardinalityEstimate EstimateUnionRelation(BoundUnionRelation relation) { return(CardinalityEstimate.Unknown); }