From: Tomas Vondra <tomas.vondra@postgresql.org>
Date: Sun, 23 Jan 2022 02:36:55 +0000 (+0100)
Subject: Correct type of front_pathkey to PathKey
X-Git-Tag: REL_10_20~18
X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=a3eb08b809a4b9e348efb0bae9c2834b71d53273;p=postgresql.git

Correct type of front_pathkey to PathKey

In sort_inner_and_outer we iterate a list of PathKey elements, but the
variable is declared as (List *). This mistake is benign, because we
only pass the pointer to lcons() and never dereference it.

This exists since ~2004, but it's confusing. So fix and backpatch to all
supported branches.

Backpatch-through: 10
Discussion: https://postgr.es/m/bf3a6ea1-a7d8-7211-0669-189d5c169374%40enterprisedb.com
---

diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c
index 2fb94ccdc51..cc91f566904 100644
--- a/src/backend/optimizer/path/joinpath.c
+++ b/src/backend/optimizer/path/joinpath.c
@@ -900,7 +900,7 @@ sort_inner_and_outer(PlannerInfo *root,
 
 	foreach(l, all_pathkeys)
 	{
-		List	   *front_pathkey = (List *) lfirst(l);
+		PathKey	   *front_pathkey = (PathKey *) lfirst(l);
 		List	   *cur_mergeclauses;
 		List	   *outerkeys;
 		List	   *innerkeys;