A Var that is needed by a join but is not a GROUP BY expression becomes an extra grouping key for partial aggregation. The EquivalenceClass for sorting on it is created when the grouped paths are generated, which is after the children of appendrels and partitionwise joins have received their EC members, so it has no child members. Sort-based partial aggregation on a child relation then failed with "could not find pathkey item to sort", as with a partitionwise join whose join clause includes a non-equality condition. To fix, add the missing child members when the grouping pathkeys of a child relation are built. This is done by the new function add_child_rel_pathkey_equivalences(), which handles both child base relations and child joins, including keys that are nullable by an outer join within the child join. Reported-by: Robert Haas <robertmhaas@gmail.com> Author: Richard Guo <guofenglinux@gmail.com> Discussion: https://postgr.es/m/CA+Tgmob7iSM9YkRM44VjUDuaCchW-fY54MV5njpTZTL9uNyV4w@mail.gmail.com Backpatch-through: 19
PostgreSQL Database Management System
This directory contains the source code distribution of the PostgreSQL database management system.
PostgreSQL is an advanced object-relational database management system that supports an extended subset of the SQL standard, including transactions, foreign keys, subqueries, triggers, user-defined types and functions. This distribution also contains C language bindings.
Copyright and license information can be found in the file COPYRIGHT.
General documentation about this version of PostgreSQL can be found at https://www.postgresql.org/docs/devel/. In particular, information about building PostgreSQL from the source code can be found at https://www.postgresql.org/docs/devel/installation.html.
The latest version of this software, and related software, may be obtained at https://www.postgresql.org/download/. For more information look at our web site located at https://www.postgresql.org/.