mirror of
https://github.com/postgres/postgres.git
synced 2025-11-19 13:42:17 +03:00
Rename find_em_expr_usable_for_sorting_rel.
I didn't particularly like this function name, as it fails to express what's going on. Also, returning the sort expression alone isn't too helpful --- typically, a caller would also need some other fields of the EquivalenceMember. But the sole caller really only needs a bool result, so let's make it "bool relation_can_be_sorted_early()". Discussion: https://postgr.es/m/91f3ec99-85a4-fa55-ea74-33f85a5c651f@swarm64.com
This commit is contained in:
@@ -2697,20 +2697,19 @@ get_useful_pathkeys_for_relation(PlannerInfo *root, RelOptInfo *rel,
|
||||
EquivalenceClass *pathkey_ec = pathkey->pk_eclass;
|
||||
|
||||
/*
|
||||
* We can only build a sort for pathkeys which contain an EC
|
||||
* member in the current relation's target, so ignore any suffix
|
||||
* of the list as soon as we find a pathkey without an EC member
|
||||
* in the relation.
|
||||
* We can only build a sort for pathkeys that contain a
|
||||
* safe-to-compute-early EC member computable from the current
|
||||
* relation's reltarget, so ignore the remainder of the list as
|
||||
* soon as we find a pathkey without such a member.
|
||||
*
|
||||
* By still returning the prefix of the pathkeys list that does
|
||||
* meet criteria of EC membership in the current relation, we
|
||||
* enable not just an incremental sort on the entirety of
|
||||
* query_pathkeys but also incremental sort below a JOIN.
|
||||
* It's still worthwhile to return any prefix of the pathkeys list
|
||||
* that meets this requirement, as we may be able to do an
|
||||
* incremental sort.
|
||||
*
|
||||
* If requested, ensure the expression is parallel safe too.
|
||||
* If requested, ensure the sort expression is parallel-safe too.
|
||||
*/
|
||||
if (!find_em_expr_usable_for_sorting_rel(root, pathkey_ec, rel,
|
||||
require_parallel_safe))
|
||||
if (!relation_can_be_sorted_early(root, rel, pathkey_ec,
|
||||
require_parallel_safe))
|
||||
break;
|
||||
|
||||
npathkeys++;
|
||||
|
||||
Reference in New Issue
Block a user