Correct type of front_pathkey to PathKey
authorTomas Vondra <[email protected]>
Sun, 23 Jan 2022 02:36:55 +0000 (03:36 +0100)
committerTomas Vondra <[email protected]>
Sun, 23 Jan 2022 02:54:13 +0000 (03:54 +0100)
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

src/backend/optimizer/path/joinpath.c

index 2fb94ccdc514faf14d0fdd83638f908f893281bc..cc91f56690478c649f2426e47813d5c200ace1bf 100644 (file)
@@ -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;