From: David Rowley Date: Thu, 15 Feb 2024 00:13:31 +0000 (+1300) Subject: Clarify the 'rows' parameter in create_append_path X-Git-Tag: REL_17_BETA1~881 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=87027cb55bf7b33416880f7f5f5e67f4202d5881;p=postgresql.git Clarify the 'rows' parameter in create_append_path This is extracted from a larger patch to improve the UNION planner. While working on that, I found myself having to check what the 'rows' parameter is for. It's not obvious that passing a negative number is the way to have the rows estimate calculated and to find that out you need to read code in create_append_path() and in cost_append(). Discussion: https://postgr.es/m/CAApHDvpb_63XQodmxKUF8vb9M7CxyUyT4sWvEgqeQU-GB7QFoQ@mail.gmail.com --- diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index 2e1ec41a541..b3902b00329 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -1237,6 +1237,10 @@ create_tidrangescan_path(PlannerInfo *root, RelOptInfo *rel, * * Note that we must handle subpaths = NIL, representing a dummy access path. * Also, there are callers that pass root = NULL. + * + * 'rows', when passed as a non-negative number, will be used to overwrite the + * returned path's row estimate. Otherwise, the row estimate is calculated + * by totalling the row estimates from the 'subpaths' list. */ AppendPath * create_append_path(PlannerInfo *root,