| From: | Richard Guo <guofenglinux(at)gmail(dot)com> |
|---|---|
| To: | David Rowley <dgrowleyml(at)gmail(dot)com> |
| Cc: | Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: Improve UNION's output rowcount estimate |
| Date: | 2026-06-22 02:59:30 |
| Message-ID: | CAMbWs4_0BsN+QEzuRtBPuaMoRz=sE=s8JWwJgd+EU9H=OPW71w@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Mon, Jun 22, 2026 at 9:39 AM David Rowley <dgrowleyml(at)gmail(dot)com> wrote:
> I believe this should make the following code redundant, so shouldn't
> the patch remove it too?
>
> /*
> * Estimate the number of UNION output rows. In the case when only a
> * single UNION child remains, we can use estimate_num_groups() on
> * that child. We must be careful not to do this when that child is
> * the result of some other set operation as the targetlist will
> * contain Vars with varno==0, which estimate_num_groups() wouldn't
> * like.
> */
> if (list_length(cheapest.subpaths) == 1 &&
> first_path->parent->reloptkind != RELOPT_UPPER_REL)
> {
> dNumGroups = estimate_num_groups(root,
> first_path->pathtarget->exprs,
> first_path->rows,
> NULL,
> NULL);
> }
>
> Then you may as well pass dNumChildGroups directly to the path
> creation functions and get rid of your new "With multiple children,"
> comment.
>
> Aside from that, I don't see any issues.
Thanks for looking. You're right. build_setop_child_paths() already
computes each child's distinct estimate, so for a single surviving
child dNumChildGroups is exactly what that branch recomputed.
(And removing it can be a slight improvement, as the old branch ran
estimate_num_groups on the subquery-scan Vars, while
build_setop_child_paths uses the child's own rowcount when it has
GROUP BY/DISTINCT/aggs.)
Patch updated.
- Richard
| Attachment | Content-Type | Size |
|---|---|---|
| v2-0001-Improve-UNION-s-output-row-count-estimate.patch | application/octet-stream | 8.0 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Amit Kapila | 2026-06-22 03:10:56 | Re: Proposal: Conflict log history table for Logical Replication |
| Previous Message | Peter Smith | 2026-06-22 02:16:17 | Re: Support EXCEPT for TABLES IN SCHEMA publications |