pgsql: Teach UNION planner to remove dummy inputs
От | David Rowley |
---|---|
Тема | pgsql: Teach UNION planner to remove dummy inputs |
Дата | |
Msg-id | E1v4r6m-001Lgx-1h@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Teach UNION planner to remove dummy inputs This adjusts UNION planning so that the planner produces more optimal plans when one or more of the UNION's subqueries have been proven to be empty (a dummy rel). If any of the inputs are empty, then that input can be removed from the Append / MergeAppend. Previously, a const-false "Result" node would appear to represent this. Removing empty inputs has a few extra benefits when only 1 union child remains as it means the Append or MergeAppend can be removed in setrefs.c, making the plan slightly faster to execute. Also, we can provide better n_distinct estimates by looking at the sole remaining input rel's statistics. Author: David Rowley <dgrowleyml@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/CAApHDvri53PPF76c3M94_QNWbJfXjyCnjXuj_2=LYM-0m8WZtw@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/03d40e4b523b2075c198aa89d9445ea8297f8eca Modified Files -------------- src/backend/optimizer/prep/prepunion.c | 56 ++++++++++++++++++++++++++++------ src/test/regress/expected/union.out | 51 +++++++++++++++++++++++++++++++ src/test/regress/sql/union.sql | 27 ++++++++++++++++ 3 files changed, 125 insertions(+), 9 deletions(-)
В списке pgsql-committers по дате отправления: