From 9711038cf3003cb04df26cf739ee7bb207d11d0a Mon Sep 17 00:00:00 2001
From: Richard Guo <guofenglinux@gmail.com>
Date: Thu, 22 Dec 2022 15:43:36 +0800
Subject: [PATCH v1] Fix translate_col_privs_multilevel

---
 src/backend/optimizer/util/inherit.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/src/backend/optimizer/util/inherit.c b/src/backend/optimizer/util/inherit.c
index f51ce45cd3..a3b1cb6d06 100644
--- a/src/backend/optimizer/util/inherit.c
+++ b/src/backend/optimizer/util/inherit.c
@@ -52,7 +52,7 @@ static Bitmapset *translate_col_privs(const Bitmapset *parent_privs,
 static Bitmapset *translate_col_privs_multilevel(PlannerInfo *root,
 												 RelOptInfo *rel,
 												 RelOptInfo *top_parent_rel,
-												 Bitmapset *top_parent_cols);
+												 Bitmapset *parent_cols);
 static void expand_appendrel_subquery(PlannerInfo *root, RelOptInfo *rel,
 									  RangeTblEntry *rte, Index rti);
 
@@ -924,27 +924,26 @@ apply_child_basequals(PlannerInfo *root, RelOptInfo *parentrel,
 /*
  * translate_col_privs_multilevel
  * 		Recursively translates the column numbers contained in
- * 		'top_parent_cols' to the columns numbers of a descendent relation
- * 		given by 'relid'
+ * 		'parent_cols' to the columns numbers of a descendent relation
+ * 		given by 'rel'
  */
 static Bitmapset *
 translate_col_privs_multilevel(PlannerInfo *root, RelOptInfo *rel,
 							   RelOptInfo *top_parent_rel,
-							   Bitmapset *top_parent_cols)
+							   Bitmapset *parent_cols)
 {
-	Bitmapset  *result;
 	AppendRelInfo *appinfo;
 
-	if (top_parent_cols == NULL)
+	if (parent_cols == NULL)
 		return NULL;
 
 	/* Recurse if immediate parent is not the top parent. */
 	if (rel->parent != top_parent_rel)
 	{
 		if (rel->parent)
-			result = translate_col_privs_multilevel(root, rel->parent,
-													top_parent_rel,
-													top_parent_cols);
+			parent_cols = translate_col_privs_multilevel(root, rel->parent,
+														 top_parent_rel,
+														 parent_cols);
 		else
 			elog(ERROR, "rel with relid %u is not a child rel", rel->relid);
 	}
@@ -953,7 +952,5 @@ translate_col_privs_multilevel(PlannerInfo *root, RelOptInfo *rel,
 	appinfo = root->append_rel_array[rel->relid];
 	Assert(appinfo != NULL);
 
-	result = translate_col_privs(top_parent_cols, appinfo->translated_vars);
-
-	return result;
+	return translate_col_privs(parent_cols, appinfo->translated_vars);
 }
-- 
2.31.0

