agora inbox for [email protected]  
help / color / mirror / Atom feed
Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
973+ messages / 5 participants
[nested] [flat]

* Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
@ 2015-04-17 01:13 Kouhei Kaigai <[email protected]>
  2015-04-17 04:43 ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
  0 siblings, 1 reply; 973+ messages in thread

From: Kouhei Kaigai @ 2015-04-17 01:13 UTC (permalink / raw)
  To: Shigeru HANADA <[email protected]>; +Cc: Ashutosh Bapat <[email protected]>; Robert Haas <[email protected]>; Tom Lane <[email protected]>; Thom Brown <[email protected]>; pgsql-hackers

Hanada-san,

> I merged explain patch into foreign_join patch.
> 
> Now v12 is the latest patch.
>
It contains many garbage lines... Please ensure the
patch is correctly based on the latest master +
custom_join patch.

Thanks,
--
NEC Business Creation Division / PG-Strom Project
KaiGai Kohei <[email protected]>


> -----Original Message-----
> From: Shigeru HANADA [mailto:[email protected]]
> Sent: Thursday, April 16, 2015 5:06 PM
> To: Kaigai Kouhei(海外 浩平)
> Cc: Ashutosh Bapat; Robert Haas; Tom Lane; Thom Brown;
> [email protected]
> Subject: ##freemail## Re: Custom/Foreign-Join-APIs (Re: [HACKERS] [v9.5] Custom
> Plan API)
> 
> Kaigai-san,
> 
> 2015/04/15 22:33、Kouhei Kaigai <[email protected]> のメール:
> >> Oops, that’s right.  Attached is the revised version.  I chose fully qualified
> >> name, schema.relname [alias] for the output.  It would waste some cycles during
> >> planning if that is not for EXPLAIN, but it seems difficult to get a list of
> name
> >> of relations in ExplainForeignScan() phase, because planning information has
> gone
> >> away at that time.
> >>
> > I understand. Private data structure of the postgres_fdw is not designed
> > to keep tree structure data (like relations join tree), so it seems to me
> > a straightforward way to implement the feature.
> >
> > I have a small suggestion. This patch makes deparseSelectSql initialize
> > the StringInfoData if supplied, however, it usually shall be a task of
> > function caller, not callee.
> > In this case, I like to initStringInfo(&relations) next to the line of
> > initStingInfo(&sql) on the postgresGetForeignPlan. In my sense, it is
> > a bit strange to pass uninitialized StringInfoData, to get a text form.
> >
> > @@ -803,7 +806,7 @@ postgresGetForeignPlan(PlannerInfo *root,
> >     */
> >    initStringInfo(&sql);
> >    deparseSelectSql(&sql, root, baserel, fpinfo->attrs_used, remote_conds,
> > -                    &params_list, &fdw_ps_tlist, &retrieved_attrs);
> > +                    &params_list, &fdw_ps_tlist, &retrieved_attrs,
> &relations);
> >
> >    /*
> >     * Build the fdw_private list that will be available in the executor.
> >
> 
> Agreed.  If caller passes a buffer, it should be initialized by caller.  In
> addition to your idea, I added a check that the RelOptInfo is a JOINREL, coz BASEREL
> doesn’t need relations for its EXPLAIN output.
> 
> > Also, could you merge the EXPLAIN output feature on the main patch?
> > I think here is no reason why to split this feature.
> 
> I merged explain patch into foreign_join patch.
> 
> Now v12 is the latest patch.
> 
> --
> Shigeru HANADA
> [email protected]
> 
> 
> 
> 


-- 
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
  2015-04-17 01:13 Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Kouhei Kaigai <[email protected]>
@ 2015-04-17 04:43 ` Shigeru HANADA <[email protected]>
  2015-04-22 10:28   ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Ashutosh Bapat <[email protected]>
  0 siblings, 1 reply; 973+ messages in thread

From: Shigeru HANADA @ 2015-04-17 04:43 UTC (permalink / raw)
  To: Kouhei Kaigai <[email protected]>; +Cc: Ashutosh Bapat <[email protected]>; Robert Haas <[email protected]>; Tom Lane <[email protected]>; Thom Brown <[email protected]>; pgsql-hackers

Kaigai-san,

2015/04/17 10:13、Kouhei Kaigai <[email protected]> のメール:

> Hanada-san,
> 
>> I merged explain patch into foreign_join patch.
>> 
>> Now v12 is the latest patch.
>> 
> It contains many garbage lines... Please ensure the
> patch is correctly based on tOhe latest master +
> custom_join patch.

Oops, sorry.  I’ve re-created the patch as v13, based on Custom/Foreign join v11 patch and latest master.

It contains EXPLAIN enhancement that new subitem “Relations” shows relations and joins, including order and type, processed by the foreign scan.

--
Shigeru HANADA
[email protected]







-- 
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Attachments:

  [application/octet-stream] foreign_join_v13.patch (166.9K, ../../[email protected]/2-foreign_join_v13.patch)
  download | inline diff:
diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c
index 94fab18..5ec3d89 100644
--- a/contrib/postgres_fdw/deparse.c
+++ b/contrib/postgres_fdw/deparse.c
@@ -44,8 +44,11 @@
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
 #include "commands/defrem.h"
+#include "nodes/makefuncs.h"
 #include "nodes/nodeFuncs.h"
+#include "nodes/plannodes.h"
 #include "optimizer/clauses.h"
+#include "optimizer/prep.h"
 #include "optimizer/var.h"
 #include "parser/parsetree.h"
 #include "utils/builtins.h"
@@ -89,6 +92,8 @@ typedef struct deparse_expr_cxt
 	RelOptInfo *foreignrel;		/* the foreign relation we are planning for */
 	StringInfo	buf;			/* output buffer to append to */
 	List	  **params_list;	/* exprs that will become remote Params */
+	List	   *outertlist;		/* outer child's target list */
+	List	   *innertlist;		/* inner child's target list */
 } deparse_expr_cxt;
 
 /*
@@ -136,6 +141,13 @@ static void printRemoteParam(int paramindex, Oid paramtype, int32 paramtypmod,
 				 deparse_expr_cxt *context);
 static void printRemotePlaceholder(Oid paramtype, int32 paramtypmod,
 					   deparse_expr_cxt *context);
+static const char *get_jointype_name(JoinType jointype);
+
+/*
+ * convert absolute attnum to relative one.  This would be handy for handling
+ * attnum for attrs_used and column aliases.
+ */
+#define TO_RELATIVE(x)	((x) - FirstLowInvalidHeapAttributeNumber)
 
 
 /*
@@ -143,6 +155,7 @@ static void printRemotePlaceholder(Oid paramtype, int32 paramtypmod,
  * which are returned as two lists:
  *	- remote_conds contains expressions that can be evaluated remotely
  *	- local_conds contains expressions that can't be evaluated remotely
+ * Note that each element is Expr, which was stripped from RestrictInfo, 
  */
 void
 classifyConditions(PlannerInfo *root,
@@ -161,9 +174,9 @@ classifyConditions(PlannerInfo *root,
 		RestrictInfo *ri = (RestrictInfo *) lfirst(lc);
 
 		if (is_foreign_expr(root, baserel, ri->clause))
-			*remote_conds = lappend(*remote_conds, ri);
+			*remote_conds = lappend(*remote_conds, ri->clause);
 		else
-			*local_conds = lappend(*local_conds, ri);
+			*local_conds = lappend(*local_conds, ri->clause);
 	}
 }
 
@@ -250,7 +263,7 @@ foreign_expr_walker(Node *node,
 				 * Param's collation, ie it's not safe for it to have a
 				 * non-default collation.
 				 */
-				if (var->varno == glob_cxt->foreignrel->relid &&
+				if (bms_is_member(var->varno, glob_cxt->foreignrel->relids) &&
 					var->varlevelsup == 0)
 				{
 					/* Var belongs to foreign table */
@@ -675,18 +688,83 @@ is_builtin(Oid oid)
  *
  * We also create an integer List of the columns being retrieved, which is
  * returned to *retrieved_attrs.
+ *
+ * The relations is a string buffer for "Relations" portion of EXPLAIN output,
+ * or NULL if caller doesn't need it.  Note that it should have been
+ * initialized by caller.
  */
 void
 deparseSelectSql(StringInfo buf,
 				 PlannerInfo *root,
 				 RelOptInfo *baserel,
 				 Bitmapset *attrs_used,
-				 List **retrieved_attrs)
+				 List *remote_conds,
+				 List **params_list,
+				 List **fdw_ps_tlist,
+				 List **retrieved_attrs,
+				 StringInfo relations)
 {
+	PgFdwRelationInfo  *fpinfo = (PgFdwRelationInfo *) baserel->fdw_private;
 	RangeTblEntry *rte = planner_rt_fetch(baserel->relid, root);
 	Relation	rel;
 
 	/*
+	 * If given relation was a join relation, recursively construct statement
+	 * by putting each outer and inner relations in FROM clause as a subquery
+	 * with aliasing.
+	 */
+	if (baserel->reloptkind == RELOPT_JOINREL)
+	{
+		RelOptInfo		   *rel_o = fpinfo->outerrel;
+		RelOptInfo		   *rel_i = fpinfo->innerrel;
+		PgFdwRelationInfo  *fpinfo_o = (PgFdwRelationInfo *) rel_o->fdw_private;
+		PgFdwRelationInfo  *fpinfo_i = (PgFdwRelationInfo *) rel_i->fdw_private;
+		StringInfoData		sql_o;
+		StringInfoData		sql_i;
+		List			   *ret_attrs_tmp;	/* not used */
+		StringInfoData		relations_o;
+		StringInfoData		relations_i;
+		const char		   *jointype_str;
+
+		/*
+		 * Deparse query for outer and inner relation, and combine them into
+		 * a query.
+		 *
+		 * Here we don't pass fdw_ps_tlist because targets of underlying
+		 * relations are already put in joinrel->reltargetlist, and
+		 * deparseJoinRel() takes all care about it.
+		 */
+		initStringInfo(&sql_o);
+		initStringInfo(&relations_o);
+		deparseSelectSql(&sql_o, root, rel_o, fpinfo_o->attrs_used,
+						 fpinfo_o->remote_conds, params_list,
+						 NULL, &ret_attrs_tmp, &relations_o);
+		initStringInfo(&sql_i);
+		initStringInfo(&relations_i);
+		deparseSelectSql(&sql_i, root, rel_i, fpinfo_i->attrs_used,
+						 fpinfo_i->remote_conds, params_list,
+						 NULL, &ret_attrs_tmp, &relations_i);
+
+		/* For EXPLAIN output */
+		jointype_str = get_jointype_name(fpinfo->jointype);
+		if (relations)
+			appendStringInfo(relations, "(%s) %s JOIN (%s)",
+							 relations_o.data, jointype_str, relations_i.data);
+
+		deparseJoinSql(buf, root, baserel,
+					   fpinfo->outerrel,
+					   fpinfo->innerrel,
+					   sql_o.data,
+					   sql_i.data,
+					   fpinfo->jointype,
+					   fpinfo->joinclauses,
+					   fpinfo->otherclauses,
+					   fdw_ps_tlist,
+					   retrieved_attrs);
+		return;
+	}
+
+	/*
 	 * Core code already has some lock on each rel being planned, so we can
 	 * use NoLock here.
 	 */
@@ -705,6 +783,87 @@ deparseSelectSql(StringInfo buf,
 	appendStringInfoString(buf, " FROM ");
 	deparseRelation(buf, rel);
 
+	/*
+	 * Return local relation name for EXPLAIN output.
+	 * We can't know VERBOSE option is specified or not, so always add shcema
+	 * name.
+	 */
+	if (relations)
+	{
+		const char	   *namespace;
+		const char	   *relname;
+		const char	   *refname;
+
+		namespace = get_namespace_name(get_rel_namespace(rte->relid));
+		relname = get_rel_name(rte->relid);
+		refname = rte->eref->aliasname;
+		appendStringInfo(relations, "%s.%s",
+						 quote_identifier(namespace),
+						 quote_identifier(relname));
+		if (*refname && strcmp(refname, relname) != 0)
+			appendStringInfo(relations, " %s",
+							 quote_identifier(rte->eref->aliasname));
+	}
+
+	/*
+	 * Construct WHERE clause
+	 */
+	if (remote_conds)
+		appendConditions(buf, root, baserel, NULL, NULL, remote_conds,
+						 " WHERE ", params_list);
+
+	/*
+	 * Add FOR UPDATE/SHARE if appropriate.  We apply locking during the
+	 * initial row fetch, rather than later on as is done for local tables.
+	 * The extra roundtrips involved in trying to duplicate the local
+	 * semantics exactly don't seem worthwhile (see also comments for
+	 * RowMarkType).
+	 *
+	 * Note: because we actually run the query as a cursor, this assumes
+	 * that DECLARE CURSOR ... FOR UPDATE is supported, which it isn't
+	 * before 8.3.
+	 */
+	if (baserel->relid == root->parse->resultRelation &&
+		(root->parse->commandType == CMD_UPDATE ||
+		 root->parse->commandType == CMD_DELETE))
+	{
+		/* Relation is UPDATE/DELETE target, so use FOR UPDATE */
+		appendStringInfoString(buf, " FOR UPDATE");
+	}
+	else
+	{
+		PlanRowMark *rc = get_plan_rowmark(root->rowMarks, baserel->relid);
+
+		if (rc)
+		{
+			/*
+			 * Relation is specified as a FOR UPDATE/SHARE target, so handle
+			 * that.  (But we could also see LCS_NONE, meaning this isn't a
+			 * target relation after all.)
+			 *
+			 * For now, just ignore any [NO] KEY specification, since (a)
+			 * it's not clear what that means for a remote table that we
+			 * don't have complete information about, and (b) it wouldn't
+			 * work anyway on older remote servers.  Likewise, we don't
+			 * worry about NOWAIT.
+			 */
+			switch (rc->strength)
+			{
+				case LCS_NONE:
+					/* No locking needed */
+					break;
+				case LCS_FORKEYSHARE:
+				case LCS_FORSHARE:
+					appendStringInfoString(buf, " FOR SHARE");
+					break;
+				case LCS_FORNOKEYUPDATE:
+				case LCS_FORUPDATE:
+					appendStringInfoString(buf, " FOR UPDATE");
+					break;
+			}
+		}
+	}
+
 	heap_close(rel, NoLock);
 }
 
@@ -731,8 +890,7 @@ deparseTargetList(StringInfo buf,
 	*retrieved_attrs = NIL;
 
 	/* If there's a whole-row reference, we'll need all the columns. */
-	have_wholerow = bms_is_member(0 - FirstLowInvalidHeapAttributeNumber,
-								  attrs_used);
+	have_wholerow = bms_is_member(TO_RELATIVE(0), attrs_used);
 
 	first = true;
 	for (i = 1; i <= tupdesc->natts; i++)
@@ -743,15 +901,14 @@ deparseTargetList(StringInfo buf,
 		if (attr->attisdropped)
 			continue;
 
-		if (have_wholerow ||
-			bms_is_member(i - FirstLowInvalidHeapAttributeNumber,
-						  attrs_used))
+		if (have_wholerow || bms_is_member(TO_RELATIVE(i), attrs_used))
 		{
 			if (!first)
 				appendStringInfoString(buf, ", ");
 			first = false;
 
 			deparseColumnRef(buf, rtindex, i, root);
+			appendStringInfo(buf, " a%d", TO_RELATIVE(i));
 
 			*retrieved_attrs = lappend_int(*retrieved_attrs, i);
 		}
@@ -761,17 +918,17 @@ deparseTargetList(StringInfo buf,
 	 * Add ctid if needed.  We currently don't support retrieving any other
 	 * system columns.
 	 */
-	if (bms_is_member(SelfItemPointerAttributeNumber - FirstLowInvalidHeapAttributeNumber,
-					  attrs_used))
+	if (bms_is_member(TO_RELATIVE(SelfItemPointerAttributeNumber), attrs_used))
 	{
 		if (!first)
 			appendStringInfoString(buf, ", ");
 		first = false;
 
-		appendStringInfoString(buf, "ctid");
+		appendStringInfo(buf, "ctid a%d",
+						 TO_RELATIVE(SelfItemPointerAttributeNumber));
 
 		*retrieved_attrs = lappend_int(*retrieved_attrs,
-									   SelfItemPointerAttributeNumber);
+										   SelfItemPointerAttributeNumber);
 	}
 
 	/* Don't generate bad syntax if no undropped columns */
@@ -780,7 +937,8 @@ deparseTargetList(StringInfo buf,
 }
 
 /*
- * Deparse WHERE clauses in given list of RestrictInfos and append them to buf.
+ * Deparse conditions, such as WHERE clause and ON clause of JOIN, in given
+ * list of Expr and append them to buf.
  *
  * baserel is the foreign table we're planning for.
  *
@@ -794,12 +952,14 @@ deparseTargetList(StringInfo buf,
  * so Params and other-relation Vars should be replaced by dummy values.
  */
 void
-appendWhereClause(StringInfo buf,
-				  PlannerInfo *root,
-				  RelOptInfo *baserel,
-				  List *exprs,
-				  bool is_first,
-				  List **params)
+appendConditions(StringInfo buf,
+				 PlannerInfo *root,
+				 RelOptInfo *baserel,
+				 List *outertlist,
+				 List *innertlist,
+				 List *exprs,
+				 const char *prefix,
+				 List **params)
 {
 	deparse_expr_cxt context;
 	int			nestlevel;
@@ -813,31 +973,315 @@ appendWhereClause(StringInfo buf,
 	context.foreignrel = baserel;
 	context.buf = buf;
 	context.params_list = params;
+	context.outertlist = outertlist;
+	context.innertlist = innertlist;
 
 	/* Make sure any constants in the exprs are printed portably */
 	nestlevel = set_transmission_modes();
 
 	foreach(lc, exprs)
 	{
-		RestrictInfo *ri = (RestrictInfo *) lfirst(lc);
+		Expr	   *expr = (Expr *) lfirst(lc);
 
 		/* Connect expressions with "AND" and parenthesize each condition. */
-		if (is_first)
-			appendStringInfoString(buf, " WHERE ");
-		else
-			appendStringInfoString(buf, " AND ");
+		if (prefix)
+			appendStringInfo(buf, "%s", prefix);
 
 		appendStringInfoChar(buf, '(');
-		deparseExpr(ri->clause, &context);
+		deparseExpr(expr, &context);
 		appendStringInfoChar(buf, ')');
 
-		is_first = false;
+		prefix= " AND ";
 	}
 
 	reset_transmission_modes(nestlevel);
 }
 
 /*
+ * Returns position index (start with 1) of given var in given target list, or
+ * 0 when not found.
+ */
+static int
+find_var_pos(Var *node, List *tlist)
+{
+	int		pos = 1;
+	ListCell *lc;
+
+	foreach(lc, tlist)
+	{
+		Var *var = (Var *) lfirst(lc);
+
+		if (equal(var, node))
+		{
+			return pos;
+		}
+		pos++;
+	}
+
+	return 0;
+}
+
+/*
+ * Deparse given Var into buf.
+ */
+static void
+deparseJoinVar(Var *node, deparse_expr_cxt *context)
+{
+	char		side;
+	int			pos;
+
+	pos = find_var_pos(node, context->outertlist);
+	if (pos > 0)
+		side = 'l';
+	else
+	{
+		side = 'r';
+		pos = find_var_pos(node, context->innertlist);
+	}
+	Assert(pos > 0);
+	Assert(side == 'l' || side == 'r');
+
+	/*
+	 * We treat whole-row reference same as ordinary attribute references,
+	 * because such transformation should be done in lower level.
+	 */
+	appendStringInfo(context->buf, "%c.a%d", side, pos);
+}
+
+/*
+ * Deparse column alias list for a subquery in FROM clause.
+ */
+static void
+deparseColumnAliases(StringInfo buf, List *tlist)
+{
+	int			pos;
+	ListCell   *lc;
+
+	pos = 1;
+	foreach(lc, tlist)
+	{
+		/* Deparse column alias for the subquery */
+		if (pos > 1)
+			appendStringInfoString(buf, ", ");
+		appendStringInfo(buf, "a%d", pos);
+		pos++;
+	}
+}
+
+/*
+ * Deparse "wrapper" SQL for a query which projects target lists in proper
+ * order and contents.  Note that this treatment is necessary only for queries
+ * used in FROM clause of a join query.
+ *
+ * Even if the SQL is enough simple (no ctid, no whole-row reference), the order
+ * of output column might different from underlying scan, so we always need to
+ * wrap the queries for join sources.
+ *
+ */
+static const char *
+deparseProjectionSql(PlannerInfo *root,
+					 RelOptInfo *baserel,
+					 const char *sql,
+					 char side)
+{
+	StringInfoData wholerow;
+	StringInfoData buf;
+	ListCell   *lc;
+	bool		first;
+	bool		have_wholerow = false;
+
+	/*
+	 * We have nothing to do if the targetlist contains no special reference,
+	 * such as whole-row and ctid.
+	 */
+	foreach(lc, baserel->reltargetlist)
+	{
+		Var		   *var = (Var *) lfirst(lc);
+		if (var->varattno == 0)
+		{
+			have_wholerow = true;
+			break;
+		}
+	}
+
+	/*
+	 * Construct whole-row reference with ROW() syntax
+	 */
+	if (have_wholerow)
+	{
+		RangeTblEntry *rte;
+		Relation		rel;
+		TupleDesc		tupdesc;
+		int				i;
+
+		/* Obtain TupleDesc for deparsing all valid columns */
+		rte = planner_rt_fetch(baserel->relid, root);
+		rel = heap_open(rte->relid, NoLock);
+		tupdesc = rel->rd_att;
+
+		/* Print all valid columns in ROW() to generate whole-row value */
+		initStringInfo(&wholerow);
+		appendStringInfoString(&wholerow, "ROW(");
+		first = true;
+		for (i = 1; i <= tupdesc->natts; i++)
+		{
+			Form_pg_attribute attr = tupdesc->attrs[i - 1];
+
+			/* Ignore dropped columns. */
+			if (attr->attisdropped)
+				continue;
+
+			if (!first)
+				appendStringInfoString(&wholerow, ", ");
+			first = false;
+
+			appendStringInfo(&wholerow, "%c.a%d", side, TO_RELATIVE(i));
+		}
+		appendStringInfoString(&wholerow, ")");
+
+		heap_close(rel, NoLock);
+	}
+
+	/*
+	 * Construct a SELECT statement which has the original query in its FROM
+	 * clause, and have target list entries in its SELECT clause.  The number
+	 * used in column aliases are attnum - FirstLowInvalidHeapAttributeNumber in
+	 * order to make all numbers positive even for system columns which have
+	 * minus value as attnum.
+	 */
+	initStringInfo(&buf);
+	appendStringInfoString(&buf, "SELECT ");
+	first = true;
+	foreach(lc, baserel->reltargetlist)
+	{
+		Var *var = (Var *) lfirst(lc);
+
+		if (!first)
+			appendStringInfoString(&buf, ", ");
+	
+		if (var->varattno == 0)
+			appendStringInfo(&buf, "%s", wholerow.data);
+		else
+			appendStringInfo(&buf, "%c.a%d", side, TO_RELATIVE(var->varattno));
+
+		first = false;
+	}
+	appendStringInfo(&buf, " FROM (%s) %c", sql, side);
+
+	return buf.data;
+}
+
+static const char *
+get_jointype_name(JoinType jointype)
+{
+	return jointype == JOIN_INNER ? "INNER" :
+		   jointype == JOIN_LEFT ? "LEFT" :
+		   jointype == JOIN_RIGHT ? "RIGHT" :
+		   jointype == JOIN_FULL ? "FULL" : "";
+}
+
+/*
+ * Construct a SELECT statement which contains join clause.
+ *
+ * We also create an TargetEntry List of the columns being retrieved, which is
+ * returned to *fdw_ps_tlist.
+ *
+ * path_o, tl_o, sql_o are respectively path, targetlist, and remote query
+ * statement of the outer child relation.  postfix _i means those for the inner
+ * child relation.  jointype and joinclauses are information of join method.
+ * fdw_ps_tlist is output parameter to pass target list of the pseudo scan to
+ * caller.
+ */
+void
+deparseJoinSql(StringInfo buf,
+			   PlannerInfo *root,
+			   RelOptInfo *baserel,
+			   RelOptInfo *outerrel,
+			   RelOptInfo *innerrel,
+			   const char *sql_o,
+			   const char *sql_i,
+			   JoinType jointype,
+			   List *joinclauses,
+			   List *otherclauses,
+			   List **fdw_ps_tlist,
+			   List **retrieved_attrs)
+{
+	StringInfoData selbuf;		/* buffer for SELECT clause */
+	StringInfoData abuf_o;		/* buffer for column alias list of outer */
+	StringInfoData abuf_i;		/* buffer for column alias list of inner */
+	int			i;
+	ListCell   *lc;
+	const char *jointype_str;
+	deparse_expr_cxt context;
+
+	context.root = root;
+	context.foreignrel = baserel;
+	context.buf = &selbuf;
+	context.params_list = NULL;
+	context.outertlist = outerrel->reltargetlist;
+	context.innertlist = innerrel->reltargetlist;
+
+	jointype_str = get_jointype_name(jointype);
+	*retrieved_attrs = NIL;
+
+	/* print SELECT clause of the join scan */
+	initStringInfo(&selbuf);
+	i = 0;
+	foreach(lc, baserel->reltargetlist)
+	{
+		Var		   *var = (Var *) lfirst(lc);
+		TargetEntry *tle;
+
+		if (i > 0)
+			appendStringInfoString(&selbuf, ", ");
+		deparseJoinVar(var, &context);
+
+		tle = makeTargetEntry((Expr *) var, i + 1, NULL, false);
+		if (fdw_ps_tlist)
+			*fdw_ps_tlist = lappend(*fdw_ps_tlist, tle);
+
+		*retrieved_attrs = lappend_int(*retrieved_attrs, i + 1);
+
+		i++;
+	}
+	if (i == 0)
+		appendStringInfoString(&selbuf, "NULL");
+
+	/*
+	 * Do pseudo-projection for an underlying scan on a foreign table, if a) the
+	 * relation is a base relation, and b) its targetlist contains whole-row
+	 * reference.
+	 */
+	if (outerrel->reloptkind == RELOPT_BASEREL)
+		sql_o = deparseProjectionSql(root, outerrel, sql_o, 'l');
+	if (innerrel->reloptkind == RELOPT_BASEREL)
+		sql_i = deparseProjectionSql(root, innerrel, sql_i, 'r');
+
+	/* Deparse column alias portion of subquery in FROM clause. */
+	initStringInfo(&abuf_o);
+	deparseColumnAliases(&abuf_o, outerrel->reltargetlist);
+	initStringInfo(&abuf_i);
+	deparseColumnAliases(&abuf_i, innerrel->reltargetlist);
+
+	/* Construct SELECT statement */
+	appendStringInfo(buf, "SELECT %s FROM", selbuf.data);
+	appendStringInfo(buf, " (%s) l (%s) %s JOIN (%s) r (%s)",
+					 sql_o, abuf_o.data, jointype_str, sql_i, abuf_i.data);
+	/* Append ON clause */
+	if (joinclauses)
+		appendConditions(buf, root, baserel,
+						 outerrel->reltargetlist, innerrel->reltargetlist,
+						 joinclauses,
+						 " ON ", NULL);
+	/* Append WHERE clause */
+	if (otherclauses)
+		appendConditions(buf, root, baserel,
+						 outerrel->reltargetlist, innerrel->reltargetlist,
+						 otherclauses,
+						 " WHERE ", NULL);
+}
+
+/*
  * deparse remote INSERT statement
  *
  * The statement text is appended to buf, and we also create an integer List
@@ -976,8 +1420,7 @@ deparseReturningList(StringInfo buf, PlannerInfo *root,
 	if (trig_after_row)
 	{
 		/* whole-row reference acquires all non-system columns */
-		attrs_used =
-			bms_make_singleton(0 - FirstLowInvalidHeapAttributeNumber);
+		attrs_used = bms_make_singleton(TO_RELATIVE(0));
 	}
 
 	if (returningList != NIL)
@@ -1261,6 +1704,8 @@ deparseExpr(Expr *node, deparse_expr_cxt *context)
 /*
  * Deparse given Var node into context->buf.
  *
+ * If context has valid innerrel, this is invoked for a join conditions.
+ *
  * If the Var belongs to the foreign relation, just print its remote name.
  * Otherwise, it's effectively a Param (and will in fact be a Param at
  * run time).  Handle it the same way we handle plain Params --- see
@@ -1271,39 +1716,46 @@ deparseVar(Var *node, deparse_expr_cxt *context)
 {
 	StringInfo	buf = context->buf;
 
-	if (node->varno == context->foreignrel->relid &&
-		node->varlevelsup == 0)
+	if (context->foreignrel->reloptkind == RELOPT_JOINREL)
 	{
-		/* Var belongs to foreign table */
-		deparseColumnRef(buf, node->varno, node->varattno, context->root);
+		deparseJoinVar(node, context);
 	}
 	else
 	{
-		/* Treat like a Param */
-		if (context->params_list)
+		if (node->varno == context->foreignrel->relid &&
+			node->varlevelsup == 0)
 		{
-			int			pindex = 0;
-			ListCell   *lc;
-
-			/* find its index in params_list */
-			foreach(lc, *context->params_list)
+			/* Var belongs to foreign table */
+			deparseColumnRef(buf, node->varno, node->varattno, context->root);
+		}
+		else
+		{
+			/* Treat like a Param */
+			if (context->params_list)
 			{
-				pindex++;
-				if (equal(node, (Node *) lfirst(lc)))
-					break;
+				int			pindex = 0;
+				ListCell   *lc;
+
+				/* find its index in params_list */
+				foreach(lc, *context->params_list)
+				{
+					pindex++;
+					if (equal(node, (Node *) lfirst(lc)))
+						break;
+				}
+				if (lc == NULL)
+				{
+					/* not in list, so add it */
+					pindex++;
+					*context->params_list = lappend(*context->params_list, node);
+				}
+
+				printRemoteParam(pindex, node->vartype, node->vartypmod, context);
 			}
-			if (lc == NULL)
+			else
 			{
-				/* not in list, so add it */
-				pindex++;
-				*context->params_list = lappend(*context->params_list, node);
+				printRemotePlaceholder(node->vartype, node->vartypmod, context);
 			}
-
-			printRemoteParam(pindex, node->vartype, node->vartypmod, context);
-		}
-		else
-		{
-			printRemotePlaceholder(node->vartype, node->vartypmod, context);
 		}
 	}
 }
diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out
index 783cb41..58f24c0 100644
--- a/contrib/postgres_fdw/expected/postgres_fdw.out
+++ b/contrib/postgres_fdw/expected/postgres_fdw.out
@@ -9,11 +9,16 @@ DO $d$
             OPTIONS (dbname '$$||current_database()||$$',
                      port '$$||current_setting('port')||$$'
             )$$;
+        EXECUTE $$CREATE SERVER loopback2 FOREIGN DATA WRAPPER postgres_fdw
+            OPTIONS (dbname '$$||current_database()||$$',
+                     port '$$||current_setting('port')||$$'
+            )$$;
     END;
 $d$;
 CREATE USER MAPPING FOR public SERVER testserver1
 	OPTIONS (user 'value', password 'value');
 CREATE USER MAPPING FOR CURRENT_USER SERVER loopback;
+CREATE USER MAPPING FOR CURRENT_USER SERVER loopback2;
 -- ===================================================================
 -- create objects used through FDW loopback server
 -- ===================================================================
@@ -35,6 +40,18 @@ CREATE TABLE "S 1"."T 2" (
 	c2 text,
 	CONSTRAINT t2_pkey PRIMARY KEY (c1)
 );
+CREATE TABLE "S 1"."T 3" (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c3 text,
+	CONSTRAINT t3_pkey PRIMARY KEY (c1)
+);
+CREATE TABLE "S 1"."T 4" (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c4 text,
+	CONSTRAINT t4_pkey PRIMARY KEY (c1)
+);
 INSERT INTO "S 1"."T 1"
 	SELECT id,
 	       id % 10,
@@ -49,8 +66,22 @@ INSERT INTO "S 1"."T 2"
 	SELECT id,
 	       'AAA' || to_char(id, 'FM000')
 	FROM generate_series(1, 100) id;
+INSERT INTO "S 1"."T 3"
+	SELECT id,
+	       id + 1,
+	       'AAA' || to_char(id, 'FM000')
+	FROM generate_series(1, 100) id;
+DELETE FROM "S 1"."T 3" WHERE c1 % 2 != 0;	-- delete for outer join tests
+INSERT INTO "S 1"."T 4"
+	SELECT id,
+	       id + 1,
+	       'AAA' || to_char(id, 'FM000')
+	FROM generate_series(1, 100) id;
+DELETE FROM "S 1"."T 4" WHERE c1 % 3 != 0;	-- delete for outer join tests
 ANALYZE "S 1"."T 1";
 ANALYZE "S 1"."T 2";
+ANALYZE "S 1"."T 3";
+ANALYZE "S 1"."T 4";
 -- ===================================================================
 -- create foreign tables
 -- ===================================================================
@@ -78,6 +109,26 @@ CREATE FOREIGN TABLE ft2 (
 	c8 user_enum
 ) SERVER loopback;
 ALTER FOREIGN TABLE ft2 DROP COLUMN cx;
+CREATE FOREIGN TABLE ft4 (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c3 text
+) SERVER loopback OPTIONS (schema_name 'S 1', table_name 'T 3');
+CREATE FOREIGN TABLE ft5 (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c3 text
+) SERVER loopback OPTIONS (schema_name 'S 1', table_name 'T 4');
+CREATE FOREIGN TABLE ft6 (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c3 text
+) SERVER loopback2 OPTIONS (schema_name 'S 1', table_name 'T 4');
+CREATE USER view_owner;
+GRANT ALL ON ft5 TO view_owner;
+CREATE VIEW v_ft5 AS SELECT * FROM ft5;
+ALTER VIEW v_ft5 OWNER TO view_owner;
+CREATE USER MAPPING FOR view_owner SERVER loopback;
 -- ===================================================================
 -- tests for validator
 -- ===================================================================
@@ -119,12 +170,15 @@ ALTER FOREIGN TABLE ft2 OPTIONS (schema_name 'S 1', table_name 'T 1');
 ALTER FOREIGN TABLE ft1 ALTER COLUMN c1 OPTIONS (column_name 'C 1');
 ALTER FOREIGN TABLE ft2 ALTER COLUMN c1 OPTIONS (column_name 'C 1');
 \det+
-                             List of foreign tables
- Schema | Table |  Server  |              FDW Options              | Description 
---------+-------+----------+---------------------------------------+-------------
- public | ft1   | loopback | (schema_name 'S 1', table_name 'T 1') | 
- public | ft2   | loopback | (schema_name 'S 1', table_name 'T 1') | 
-(2 rows)
+                              List of foreign tables
+ Schema | Table |  Server   |              FDW Options              | Description 
+--------+-------+-----------+---------------------------------------+-------------
+ public | ft1   | loopback  | (schema_name 'S 1', table_name 'T 1') | 
+ public | ft2   | loopback  | (schema_name 'S 1', table_name 'T 1') | 
+ public | ft4   | loopback  | (schema_name 'S 1', table_name 'T 3') | 
+ public | ft5   | loopback  | (schema_name 'S 1', table_name 'T 4') | 
+ public | ft6   | loopback2 | (schema_name 'S 1', table_name 'T 4') | 
+(5 rows)
 
 -- Now we should be able to run ANALYZE.
 -- To exercise multiple code paths, we use local stats on ft1
@@ -160,8 +214,8 @@ SELECT * FROM ft1 ORDER BY c3, c1 OFFSET 100 LIMIT 10;
 (10 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
-                                     QUERY PLAN                                      
--------------------------------------------------------------------------------------
+                                                     QUERY PLAN                                                      
+---------------------------------------------------------------------------------------------------------------------
  Limit
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    ->  Sort
@@ -169,7 +223,7 @@ EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 ORDER BY t1.c3, t1.c1 OFFSET
          Sort Key: t1.c3, t1.c1
          ->  Foreign Scan on public.ft1 t1
                Output: c1, c2, c3, c4, c5, c6, c7, c8
-               Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
+               Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1"
 (8 rows)
 
 SELECT * FROM ft1 t1 ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
@@ -189,8 +243,8 @@ SELECT * FROM ft1 t1 ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
 
 -- whole-row reference
 EXPLAIN (VERBOSE, COSTS false) SELECT t1 FROM ft1 t1 ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
-                                     QUERY PLAN                                      
--------------------------------------------------------------------------------------
+                                                     QUERY PLAN                                                      
+---------------------------------------------------------------------------------------------------------------------
  Limit
    Output: t1.*, c3, c1
    ->  Sort
@@ -198,7 +252,7 @@ EXPLAIN (VERBOSE, COSTS false) SELECT t1 FROM ft1 t1 ORDER BY t1.c3, t1.c1 OFFSE
          Sort Key: t1.c3, t1.c1
          ->  Foreign Scan on public.ft1 t1
                Output: t1.*, c3, c1
-               Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
+               Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1"
 (8 rows)
 
 SELECT t1 FROM ft1 t1 ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
@@ -224,11 +278,11 @@ SELECT * FROM ft1 WHERE false;
 
 -- with WHERE clause
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE t1.c1 = 101 AND t1.c6 = '1' AND t1.c7 >= '1';
-                                                                   QUERY PLAN                                                                   
-------------------------------------------------------------------------------------------------------------------------------------------------
+                                                                                   QUERY PLAN                                                                                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((c7 >= '1'::bpchar)) AND (("C 1" = 101)) AND ((c6 = '1'::text))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE ((c7 >= '1'::bpchar)) AND (("C 1" = 101)) AND ((c6 = '1'::text))
 (3 rows)
 
 SELECT * FROM ft1 t1 WHERE t1.c1 = 101 AND t1.c6 = '1' AND t1.c7 >= '1';
@@ -239,13 +293,13 @@ SELECT * FROM ft1 t1 WHERE t1.c1 = 101 AND t1.c6 = '1' AND t1.c7 >= '1';
 
 -- with FOR UPDATE/SHARE
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = 101 FOR UPDATE;
-                                                   QUERY PLAN                                                   
-----------------------------------------------------------------------------------------------------------------
+                                                                   QUERY PLAN                                                                   
+------------------------------------------------------------------------------------------------------------------------------------------------
  LockRows
    Output: c1, c2, c3, c4, c5, c6, c7, c8, t1.*
    ->  Foreign Scan on public.ft1 t1
          Output: c1, c2, c3, c4, c5, c6, c7, c8, t1.*
-         Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 101)) FOR UPDATE
+         Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 101)) FOR UPDATE
 (5 rows)
 
 SELECT * FROM ft1 t1 WHERE c1 = 101 FOR UPDATE;
@@ -255,13 +309,13 @@ SELECT * FROM ft1 t1 WHERE c1 = 101 FOR UPDATE;
 (1 row)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = 102 FOR SHARE;
-                                                  QUERY PLAN                                                   
----------------------------------------------------------------------------------------------------------------
+                                                                  QUERY PLAN                                                                   
+-----------------------------------------------------------------------------------------------------------------------------------------------
  LockRows
    Output: c1, c2, c3, c4, c5, c6, c7, c8, t1.*
    ->  Foreign Scan on public.ft1 t1
          Output: c1, c2, c3, c4, c5, c6, c7, c8, t1.*
-         Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 102)) FOR SHARE
+         Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 102)) FOR SHARE
 (5 rows)
 
 SELECT * FROM ft1 t1 WHERE c1 = 102 FOR SHARE;
@@ -277,22 +331,6 @@ SELECT COUNT(*) FROM ft1 t1;
   1000
 (1 row)
 
--- join two tables
-SELECT t1.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
- c1  
------
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
-(10 rows)
-
 -- subquery
 SELECT * FROM ft1 t1 WHERE t1.c3 IN (SELECT c3 FROM ft2 t2 WHERE c1 <= 10) ORDER BY c1;
  c1 | c2 |  c3   |              c4              |            c5            | c6 |     c7     | c8  
@@ -353,153 +391,149 @@ CREATE OPERATOR === (
     NEGATOR = !==
 );
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE t1.c1 = postgres_fdw_abs(t1.c2);
-                               QUERY PLAN                                
--------------------------------------------------------------------------
+                                               QUERY PLAN                                                
+---------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    Filter: (t1.c1 = postgres_fdw_abs(t1.c2))
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1"
 (4 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE t1.c1 === t1.c2;
-                               QUERY PLAN                                
--------------------------------------------------------------------------
+                                               QUERY PLAN                                                
+---------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    Filter: (t1.c1 === t1.c2)
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1"
 (4 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE t1.c1 = abs(t1.c2);
-                                            QUERY PLAN                                             
----------------------------------------------------------------------------------------------------
+                                                            QUERY PLAN                                                             
+-----------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = abs(c2)))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = abs(c2)))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE t1.c1 = t1.c2;
-                                          QUERY PLAN                                          
-----------------------------------------------------------------------------------------------
+                                                          QUERY PLAN                                                          
+------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = c2))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = c2))
 (3 rows)
 
 -- ===================================================================
 -- WHERE with remotely-executable conditions
 -- ===================================================================
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE t1.c1 = 1;         -- Var, OpExpr(b), Const
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE t1.c1 = 100 AND t1.c2 = 0; -- BoolExpr
-                                                  QUERY PLAN                                                  
---------------------------------------------------------------------------------------------------------------
+                                                                  QUERY PLAN                                                                  
+----------------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 100)) AND ((c2 = 0))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 100)) AND ((c2 = 0))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 IS NULL;        -- NullTest
-                                           QUERY PLAN                                            
--------------------------------------------------------------------------------------------------
+                                                           QUERY PLAN                                                            
+---------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" IS NULL))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" IS NULL))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 IS NOT NULL;    -- NullTest
-                                             QUERY PLAN                                              
------------------------------------------------------------------------------------------------------
+                                                             QUERY PLAN                                                              
+-------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" IS NOT NULL))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" IS NOT NULL))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE round(abs(c1), 0) = 1; -- FuncExpr
-                                                     QUERY PLAN                                                      
----------------------------------------------------------------------------------------------------------------------
+                                                                     QUERY PLAN                                                                      
+-----------------------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((round(abs("C 1"), 0) = 1::numeric))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE ((round(abs("C 1"), 0) = 1::numeric))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = -c1;          -- OpExpr(l)
-                                             QUERY PLAN                                              
------------------------------------------------------------------------------------------------------
+                                                             QUERY PLAN                                                              
+-------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = (- "C 1")))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = (- "C 1")))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE 1 = c1!;           -- OpExpr(r)
-                                                QUERY PLAN                                                
-----------------------------------------------------------------------------------------------------------
+                                                                QUERY PLAN                                                                
+------------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((1::numeric = ("C 1" !)))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE ((1::numeric = ("C 1" !)))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE (c1 IS NOT NULL) IS DISTINCT FROM (c1 IS NOT NULL); -- DistinctExpr
-                                                                 QUERY PLAN                                                                 
---------------------------------------------------------------------------------------------------------------------------------------------
+                                                                                 QUERY PLAN                                                                                 
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((("C 1" IS NOT NULL) IS DISTINCT FROM ("C 1" IS NOT NULL)))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE ((("C 1" IS NOT NULL) IS DISTINCT FROM ("C 1" IS NOT NULL)))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = ANY(ARRAY[c2, 1, c1 + 0]); -- ScalarArrayOpExpr
-                                                        QUERY PLAN                                                         
----------------------------------------------------------------------------------------------------------------------------
+                                                                        QUERY PLAN                                                                         
+-----------------------------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = ANY (ARRAY[c2, 1, ("C 1" + 0)])))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = ANY (ARRAY[c2, 1, ("C 1" + 0)])))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = (ARRAY[c1,c2,3])[1]; -- ArrayRef
-                                                      QUERY PLAN                                                      
-----------------------------------------------------------------------------------------------------------------------
+                                                                      QUERY PLAN                                                                      
+------------------------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = ((ARRAY["C 1", c2, 3])[1])))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = ((ARRAY["C 1", c2, 3])[1])))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c6 = E'foo''s\\bar';  -- check special chars
-                                                 QUERY PLAN                                                  
--------------------------------------------------------------------------------------------------------------
+                                                                 QUERY PLAN                                                                  
+---------------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((c6 = E'foo''s\\bar'::text))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE ((c6 = E'foo''s\\bar'::text))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c8 = 'foo';  -- can't be sent to remote
-                               QUERY PLAN                                
--------------------------------------------------------------------------
+                                               QUERY PLAN                                                
+---------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    Filter: (t1.c8 = 'foo'::user_enum)
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1"
 (4 rows)
 
 -- parameterized remote path
 EXPLAIN (VERBOSE, COSTS false)
   SELECT * FROM ft2 a, ft2 b WHERE a.c1 = 47 AND b.c1 = a.c2;
-                                                 QUERY PLAN                                                  
--------------------------------------------------------------------------------------------------------------
- Nested Loop
+                                                                                                                                                                                                                                                                                     QUERY PLAN                                                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Foreign Scan
    Output: a.c1, a.c2, a.c3, a.c4, a.c5, a.c6, a.c7, a.c8, b.c1, b.c2, b.c3, b.c4, b.c5, b.c6, b.c7, b.c8
-   ->  Foreign Scan on public.ft2 a
-         Output: a.c1, a.c2, a.c3, a.c4, a.c5, a.c6, a.c7, a.c8
-         Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 47))
-   ->  Foreign Scan on public.ft2 b
-         Output: b.c1, b.c2, b.c3, b.c4, b.c5, b.c6, b.c7, b.c8
-         Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (($1::integer = "C 1"))
-(8 rows)
+   Relations: (public.ft2 a) INNER JOIN (public.ft2 b)
+   Remote SQL: SELECT l.a1, l.a2, l.a3, l.a4, l.a5, l.a6, l.a7, l.a8, r.a1, r.a2, r.a3, r.a4, r.a5, r.a6, r.a7, r.a8 FROM (SELECT l.a9, l.a10, l.a12, l.a13, l.a14, l.a15, l.a16, l.a17 FROM (SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 47))) l) l (a1, a2, a3, a4, a5, a6, a7, a8) INNER JOIN (SELECT r.a9, r.a10, r.a12, r.a13, r.a14, r.a15, r.a16, r.a17 FROM (SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1") r) r (a1, a2, a3, a4, a5, a6, a7, a8) ON ((l.a2 = r.a1))
+(4 rows)
 
 SELECT * FROM ft2 a, ft2 b WHERE a.c1 = 47 AND b.c1 = a.c2;
  c1 | c2 |  c3   |              c4              |            c5            | c6 |     c7     | c8  | c1 | c2 |  c3   |              c4              |            c5            | c6 |     c7     | c8  
@@ -511,18 +545,18 @@ SELECT * FROM ft2 a, ft2 b WHERE a.c1 = 47 AND b.c1 = a.c2;
 EXPLAIN (VERBOSE, COSTS false)
   SELECT * FROM ft2 a, ft2 b
   WHERE a.c2 = 6 AND b.c1 = a.c1 AND a.c8 = 'foo' AND b.c7 = upper(a.c7);
-                                                 QUERY PLAN                                                  
--------------------------------------------------------------------------------------------------------------
+                                                                 QUERY PLAN                                                                 
+--------------------------------------------------------------------------------------------------------------------------------------------
  Nested Loop
    Output: a.c1, a.c2, a.c3, a.c4, a.c5, a.c6, a.c7, a.c8, b.c1, b.c2, b.c3, b.c4, b.c5, b.c6, b.c7, b.c8
    ->  Foreign Scan on public.ft2 a
          Output: a.c1, a.c2, a.c3, a.c4, a.c5, a.c6, a.c7, a.c8
          Filter: (a.c8 = 'foo'::user_enum)
-         Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((c2 = 6))
+         Remote SQL: SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE ((c2 = 6))
    ->  Foreign Scan on public.ft2 b
          Output: b.c1, b.c2, b.c3, b.c4, b.c5, b.c6, b.c7, b.c8
          Filter: (upper((a.c7)::text) = (b.c7)::text)
-         Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (($1::integer = "C 1"))
+         Remote SQL: SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (($1::integer = "C 1"))
 (10 rows)
 
 SELECT * FROM ft2 a, ft2 b
@@ -651,21 +685,597 @@ SELECT * FROM ft2 WHERE c1 = ANY (ARRAY(SELECT c1 FROM ft1 WHERE c1 < 5));
 (4 rows)
 
 -- ===================================================================
+-- JOIN queries
+-- ===================================================================
+-- join two tables
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+                                                                                                               QUERY PLAN                                                                                                                
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1, t1.c3
+   ->  Sort
+         Output: t1.c1, t2.c1, t1.c3
+         Sort Key: t1.c3, t1.c1
+         ->  Foreign Scan
+               Output: t1.c1, t2.c1, t1.c3
+               Relations: (public.ft1 t1) INNER JOIN (public.ft2 t2)
+               Remote SQL: SELECT l.a1, l.a2, r.a1 FROM (SELECT l.a10, l.a12 FROM (SELECT "C 1" a10, c3 a12 FROM "S 1"."T 1") l) l (a1, a2) INNER JOIN (SELECT r.a9 FROM (SELECT "C 1" a9 FROM "S 1"."T 1") r) r (a1) ON ((l.a1 = r.a1))
+(9 rows)
+
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+ c1  | c1  
+-----+-----
+ 101 | 101
+ 102 | 102
+ 103 | 103
+ 104 | 104
+ 105 | 105
+ 106 | 106
+ 107 | 107
+ 108 | 108
+ 109 | 109
+ 110 | 110
+(10 rows)
+
+-- join three tables
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c2, t3.c3 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) JOIN ft4 t3 ON (t3.c1 = t1.c1) ORDER BY t1.c3, t1.c1 OFFSET 10 LIMIT 10;
+                                                                                                                                                                                                              QUERY PLAN                                                                                                                                                                                                               
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c2, t3.c3, t1.c3
+   ->  Sort
+         Output: t1.c1, t2.c2, t3.c3, t1.c3
+         Sort Key: t1.c3, t1.c1
+         ->  Foreign Scan
+               Output: t1.c1, t2.c2, t3.c3, t1.c3
+               Relations: ((public.ft1 t1) INNER JOIN (public.ft2 t2)) INNER JOIN (public.ft4 t3)
+               Remote SQL: SELECT l.a1, l.a2, l.a3, r.a1 FROM (SELECT l.a1, l.a2, r.a1, r.a2 FROM (SELECT l.a10, l.a12 FROM (SELECT "C 1" a10, c3 a12 FROM "S 1"."T 1") l) l (a1, a2) INNER JOIN (SELECT r.a10, r.a9 FROM (SELECT "C 1" a9, c2 a10 FROM "S 1"."T 1") r) r (a1, a2) ON ((l.a1 = r.a2))) l (a1, a2, a3, a4) INNER JOIN (SELECT r.a11, r.a9 FROM (SELECT c1 a9, c3 a11 FROM "S 1"."T 3") r) r (a1, a2) ON ((l.a1 = r.a2))
+(9 rows)
+
+SELECT t1.c1, t2.c2, t3.c3 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) JOIN ft4 t3 ON (t3.c1 = t1.c1) ORDER BY t1.c3, t1.c1 OFFSET 10 LIMIT 10;
+ c1 | c2 |   c3   
+----+----+--------
+ 22 |  2 | AAA022
+ 24 |  4 | AAA024
+ 26 |  6 | AAA026
+ 28 |  8 | AAA028
+ 30 |  0 | AAA030
+ 32 |  2 | AAA032
+ 34 |  4 | AAA034
+ 36 |  6 | AAA036
+ 38 |  8 | AAA038
+ 40 |  0 | AAA040
+(10 rows)
+
+-- left outer join
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 LEFT JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+                                                                                              QUERY PLAN                                                                                               
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1
+   ->  Sort
+         Output: t1.c1, t2.c1
+         Sort Key: t1.c1, t2.c1
+         ->  Foreign Scan
+               Output: t1.c1, t2.c1
+               Relations: (public.ft4 t1) LEFT JOIN (public.ft5 t2)
+               Remote SQL: SELECT l.a1, r.a1 FROM (SELECT l.a9 FROM (SELECT c1 a9 FROM "S 1"."T 3") l) l (a1) LEFT JOIN (SELECT r.a9 FROM (SELECT c1 a9 FROM "S 1"."T 4") r) r (a1) ON ((l.a1 = r.a1))
+(9 rows)
+
+SELECT t1.c1, t2.c1 FROM ft4 t1 LEFT JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+ c1 | c1 
+----+----
+ 22 |   
+ 24 | 24
+ 26 |   
+ 28 |   
+ 30 | 30
+ 32 |   
+ 34 |   
+ 36 | 36
+ 38 |   
+ 40 |   
+(10 rows)
+
+-- right outer join
+SET enable_mergejoin = off; -- planner choose MergeJoin even it has higher costs, so disable it for testing.
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 RIGHT JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t2.c1, t2.c1 OFFSET 10 LIMIT 10;
+                                                                                              QUERY PLAN                                                                                               
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1
+   ->  Sort
+         Output: t1.c1, t2.c1
+         Sort Key: t2.c1
+         ->  Foreign Scan
+               Output: t1.c1, t2.c1
+               Relations: (public.ft5 t2) LEFT JOIN (public.ft4 t1)
+               Remote SQL: SELECT l.a1, r.a1 FROM (SELECT l.a9 FROM (SELECT c1 a9 FROM "S 1"."T 4") l) l (a1) LEFT JOIN (SELECT r.a9 FROM (SELECT c1 a9 FROM "S 1"."T 3") r) r (a1) ON ((r.a1 = l.a1))
+(9 rows)
+
+SELECT t1.c1, t2.c1 FROM ft4 t1 RIGHT JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t2.c1, t2.c1 OFFSET 10 LIMIT 10;
+ c1 | c1 
+----+----
+    | 33
+ 36 | 36
+    | 39
+ 42 | 42
+    | 45
+ 48 | 48
+    | 51
+ 54 | 54
+    | 57
+ 60 | 60
+(10 rows)
+
+SET enable_mergejoin = on;
+-- full outer join
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 45 LIMIT 10;
+                                                                                              QUERY PLAN                                                                                               
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1
+   ->  Sort
+         Output: t1.c1, t2.c1
+         Sort Key: t1.c1, t2.c1
+         ->  Foreign Scan
+               Output: t1.c1, t2.c1
+               Relations: (public.ft4 t1) FULL JOIN (public.ft5 t2)
+               Remote SQL: SELECT l.a1, r.a1 FROM (SELECT l.a9 FROM (SELECT c1 a9 FROM "S 1"."T 3") l) l (a1) FULL JOIN (SELECT r.a9 FROM (SELECT c1 a9 FROM "S 1"."T 4") r) r (a1) ON ((l.a1 = r.a1))
+(9 rows)
+
+SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 45 LIMIT 10;
+ c1  | c1 
+-----+----
+  92 |   
+  94 |   
+  96 | 96
+  98 |   
+ 100 |   
+     |  3
+     |  9
+     | 15
+     | 21
+     | 27
+(10 rows)
+
+-- full outer join + WHERE clause, only matched rows
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) WHERE (t1.c1 = t2.c1 OR t1.c1 IS NULL) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+                                                                                                                   QUERY PLAN                                                                                                                    
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1
+   ->  Sort
+         Output: t1.c1, t2.c1
+         Sort Key: t1.c1, t2.c1
+         ->  Foreign Scan
+               Output: t1.c1, t2.c1
+               Relations: (public.ft4 t1) FULL JOIN (public.ft5 t2)
+               Remote SQL: SELECT l.a1, r.a1 FROM (SELECT l.a9 FROM (SELECT c1 a9 FROM "S 1"."T 3") l) l (a1) FULL JOIN (SELECT r.a9 FROM (SELECT c1 a9 FROM "S 1"."T 4") r) r (a1) ON ((l.a1 = r.a1)) WHERE (((l.a1 = r.a1) OR (l.a1 IS NULL)))
+(9 rows)
+
+SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) WHERE (t1.c1 = t2.c1 OR t1.c1 IS NULL) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+ c1 | c1 
+----+----
+ 66 | 66
+ 72 | 72
+ 78 | 78
+ 84 | 84
+ 90 | 90
+ 96 | 96
+    |  3
+    |  9
+    | 15
+    | 21
+(10 rows)
+
+-- join at WHERE clause 
+SET enable_mergejoin = off; -- planner choose MergeJoin even it has higher costs, so disable it for testing.
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 LEFT JOIN ft5 t2 ON true WHERE (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+                                                                                               QUERY PLAN                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1
+   ->  Sort
+         Output: t1.c1, t2.c1
+         Sort Key: t1.c1
+         ->  Foreign Scan
+               Output: t1.c1, t2.c1
+               Relations: (public.ft4 t1) INNER JOIN (public.ft5 t2)
+               Remote SQL: SELECT l.a1, r.a1 FROM (SELECT l.a9 FROM (SELECT c1 a9 FROM "S 1"."T 3") l) l (a1) INNER JOIN (SELECT r.a9 FROM (SELECT c1 a9 FROM "S 1"."T 4") r) r (a1) ON ((l.a1 = r.a1))
+(9 rows)
+
+SELECT t1.c1, t2.c1 FROM ft4 t1 LEFT JOIN ft5 t2 ON true WHERE (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+ c1 | c1 
+----+----
+ 66 | 66
+ 72 | 72
+ 78 | 78
+ 84 | 84
+ 90 | 90
+ 96 | 96
+(6 rows)
+
+SET enable_mergejoin = on;
+-- join in CTE
+EXPLAIN (COSTS false, VERBOSE)
+WITH t (c1_1, c1_3, c2_1) AS (SELECT t1.c1, t1.c3, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1)) SELECT c1_1, c2_1 FROM t ORDER BY c1_3, c1_1 OFFSET 100 LIMIT 10;
+                                                                                                             QUERY PLAN                                                                                                              
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t.c1_1, t.c2_1, t.c1_3
+   CTE t
+     ->  Foreign Scan
+           Output: t1.c1, t1.c3, t2.c1
+           Relations: (public.ft1 t1) INNER JOIN (public.ft2 t2)
+           Remote SQL: SELECT l.a1, l.a2, r.a1 FROM (SELECT l.a10, l.a12 FROM (SELECT "C 1" a10, c3 a12 FROM "S 1"."T 1") l) l (a1, a2) INNER JOIN (SELECT r.a9 FROM (SELECT "C 1" a9 FROM "S 1"."T 1") r) r (a1) ON ((l.a1 = r.a1))
+   ->  Sort
+         Output: t.c1_1, t.c2_1, t.c1_3
+         Sort Key: t.c1_3, t.c1_1
+         ->  CTE Scan on t
+               Output: t.c1_1, t.c2_1, t.c1_3
+(12 rows)
+
+WITH t (c1_1, c1_3, c2_1) AS (SELECT t1.c1, t1.c3, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1)) SELECT c1_1, c2_1 FROM t ORDER BY c1_3, c1_1 OFFSET 100 LIMIT 10;
+ c1_1 | c2_1 
+------+------
+  101 |  101
+  102 |  102
+  103 |  103
+  104 |  104
+  105 |  105
+  106 |  106
+  107 |  107
+  108 |  108
+  109 |  109
+  110 |  110
+(10 rows)
+
+-- ctid with whole-row reference
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.ctid, t1, t2, t1.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+                                                                                                                                                                                                                                                   QUERY PLAN                                                                                                                                                                                                                                                    
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t1.ctid, t1.*, t2.*, t1.c1, t1.c3
+   ->  Sort
+         Output: t1.ctid, t1.*, t2.*, t1.c1, t1.c3
+         Sort Key: t1.c3, t1.c1
+         ->  Foreign Scan
+               Output: t1.ctid, t1.*, t2.*, t1.c1, t1.c3
+               Relations: (public.ft1 t1) INNER JOIN (public.ft2 t2)
+               Remote SQL: SELECT l.a1, l.a2, l.a3, l.a4, r.a1 FROM (SELECT l.a7, ROW(l.a10, l.a11, l.a12, l.a13, l.a14, l.a15, l.a16, l.a17), l.a10, l.a12 FROM (SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17, ctid a7 FROM "S 1"."T 1") l) l (a1, a2, a3, a4) INNER JOIN (SELECT ROW(r.a9, r.a10, r.a12, r.a13, r.a14, r.a15, r.a16, r.a17), r.a9 FROM (SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1") r) r (a1, a2) ON ((l.a3 = r.a2))
+(9 rows)
+
+SELECT t1.ctid, t1, t2, t1.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+  ctid  |                                             t1                                             |                                             t2                                             | c1  
+--------+--------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+-----
+ (1,4)  | (101,1,00101,"Fri Jan 02 00:00:00 1970 PST","Fri Jan 02 00:00:00 1970",1,"1         ",foo) | (101,1,00101,"Fri Jan 02 00:00:00 1970 PST","Fri Jan 02 00:00:00 1970",1,"1         ",foo) | 101
+ (1,5)  | (102,2,00102,"Sat Jan 03 00:00:00 1970 PST","Sat Jan 03 00:00:00 1970",2,"2         ",foo) | (102,2,00102,"Sat Jan 03 00:00:00 1970 PST","Sat Jan 03 00:00:00 1970",2,"2         ",foo) | 102
+ (1,6)  | (103,3,00103,"Sun Jan 04 00:00:00 1970 PST","Sun Jan 04 00:00:00 1970",3,"3         ",foo) | (103,3,00103,"Sun Jan 04 00:00:00 1970 PST","Sun Jan 04 00:00:00 1970",3,"3         ",foo) | 103
+ (1,7)  | (104,4,00104,"Mon Jan 05 00:00:00 1970 PST","Mon Jan 05 00:00:00 1970",4,"4         ",foo) | (104,4,00104,"Mon Jan 05 00:00:00 1970 PST","Mon Jan 05 00:00:00 1970",4,"4         ",foo) | 104
+ (1,8)  | (105,5,00105,"Tue Jan 06 00:00:00 1970 PST","Tue Jan 06 00:00:00 1970",5,"5         ",foo) | (105,5,00105,"Tue Jan 06 00:00:00 1970 PST","Tue Jan 06 00:00:00 1970",5,"5         ",foo) | 105
+ (1,9)  | (106,6,00106,"Wed Jan 07 00:00:00 1970 PST","Wed Jan 07 00:00:00 1970",6,"6         ",foo) | (106,6,00106,"Wed Jan 07 00:00:00 1970 PST","Wed Jan 07 00:00:00 1970",6,"6         ",foo) | 106
+ (1,10) | (107,7,00107,"Thu Jan 08 00:00:00 1970 PST","Thu Jan 08 00:00:00 1970",7,"7         ",foo) | (107,7,00107,"Thu Jan 08 00:00:00 1970 PST","Thu Jan 08 00:00:00 1970",7,"7         ",foo) | 107
+ (1,11) | (108,8,00108,"Fri Jan 09 00:00:00 1970 PST","Fri Jan 09 00:00:00 1970",8,"8         ",foo) | (108,8,00108,"Fri Jan 09 00:00:00 1970 PST","Fri Jan 09 00:00:00 1970",8,"8         ",foo) | 108
+ (1,12) | (109,9,00109,"Sat Jan 10 00:00:00 1970 PST","Sat Jan 10 00:00:00 1970",9,"9         ",foo) | (109,9,00109,"Sat Jan 10 00:00:00 1970 PST","Sat Jan 10 00:00:00 1970",9,"9         ",foo) | 109
+ (1,13) | (110,0,00110,"Sun Jan 11 00:00:00 1970 PST","Sun Jan 11 00:00:00 1970",0,"0         ",foo) | (110,0,00110,"Sun Jan 11 00:00:00 1970 PST","Sun Jan 11 00:00:00 1970",0,"0         ",foo) | 110
+(10 rows)
+
+-- partially unsafe to push down, not pushed down
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1 FROM ft1 t1 JOIN ft2 t2 ON t2.c1 = t2.c1 JOIN ft4 t3 ON t2.c1 = t3.c1 ORDER BY t1.c1 OFFSET 10 LIMIT 10;
+                                                                                                               QUERY PLAN                                                                                                                
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1
+   ->  Sort
+         Output: t1.c1
+         Sort Key: t1.c1
+         ->  Nested Loop
+               Output: t1.c1
+               ->  Foreign Scan on public.ft1 t1
+                     Output: t1.c1
+                     Remote SQL: SELECT "C 1" a10 FROM "S 1"."T 1"
+               ->  Materialize
+                     ->  Foreign Scan
+                           Relations: (public.ft2 t2) INNER JOIN (public.ft4 t3)
+                           Remote SQL: SELECT NULL FROM (SELECT l.a9 FROM (SELECT "C 1" a9 FROM "S 1"."T 1" WHERE (("C 1" = "C 1"))) l) l (a1) INNER JOIN (SELECT r.a9 FROM (SELECT c1 a9 FROM "S 1"."T 3") r) r (a1) ON ((l.a1 = r.a1))
+(14 rows)
+
+SELECT t1.c1 FROM ft1 t1 JOIN ft2 t2 ON t2.c1 = t2.c1 JOIN ft4 t3 ON t2.c1 = t3.c1 ORDER BY t1.c1 OFFSET 10 LIMIT 10;
+ c1 
+----
+  1
+  1
+  1
+  1
+  1
+  1
+  1
+  1
+  1
+  1
+(10 rows)
+
+-- SEMI JOIN, not pushed down
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1 FROM ft1 t1 WHERE EXISTS (SELECT 1 FROM ft2 t2 WHERE t1.c1 = t2.c1) ORDER BY t1.c1 OFFSET 100 LIMIT 10;
+                                  QUERY PLAN                                  
+------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1
+   ->  Sort
+         Output: t1.c1
+         Sort Key: t1.c1
+         ->  Hash Join
+               Output: t1.c1
+               Hash Cond: (t1.c1 = t2.c1)
+               ->  Foreign Scan on public.ft1 t1
+                     Output: t1.c1
+                     Remote SQL: SELECT "C 1" a10 FROM "S 1"."T 1"
+               ->  Hash
+                     Output: t2.c1
+                     ->  HashAggregate
+                           Output: t2.c1
+                           Group Key: t2.c1
+                           ->  Foreign Scan on public.ft2 t2
+                                 Output: t2.c1
+                                 Remote SQL: SELECT "C 1" a9 FROM "S 1"."T 1"
+(19 rows)
+
+SELECT t1.c1 FROM ft1 t1 WHERE EXISTS (SELECT 1 FROM ft2 t2 WHERE t1.c1 = t2.c1) ORDER BY t1.c1 OFFSET 100 LIMIT 10;
+ c1  
+-----
+ 101
+ 102
+ 103
+ 104
+ 105
+ 106
+ 107
+ 108
+ 109
+ 110
+(10 rows)
+
+-- ANTI JOIN, not pushed down
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1 FROM ft1 t1 WHERE NOT EXISTS (SELECT 1 FROM ft2 t2 WHERE t1.c1 = t2.c2) ORDER BY t1.c1 OFFSET 100 LIMIT 10;
+                              QUERY PLAN                              
+----------------------------------------------------------------------
+ Limit
+   Output: t1.c1
+   ->  Sort
+         Output: t1.c1
+         Sort Key: t1.c1
+         ->  Hash Anti Join
+               Output: t1.c1
+               Hash Cond: (t1.c1 = t2.c2)
+               ->  Foreign Scan on public.ft1 t1
+                     Output: t1.c1
+                     Remote SQL: SELECT "C 1" a10 FROM "S 1"."T 1"
+               ->  Hash
+                     Output: t2.c2
+                     ->  Foreign Scan on public.ft2 t2
+                           Output: t2.c2
+                           Remote SQL: SELECT c2 a10 FROM "S 1"."T 1"
+(16 rows)
+
+SELECT t1.c1 FROM ft1 t1 WHERE NOT EXISTS (SELECT 1 FROM ft2 t2 WHERE t1.c1 = t2.c2) ORDER BY t1.c1 OFFSET 100 LIMIT 10;
+ c1  
+-----
+ 110
+ 111
+ 112
+ 113
+ 114
+ 115
+ 116
+ 117
+ 118
+ 119
+(10 rows)
+
+-- CROSS JOIN, not pushed down
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft1 t1 CROSS JOIN ft2 t2 ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+                               QUERY PLAN                               
+------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1
+   ->  Sort
+         Output: t1.c1, t2.c1
+         Sort Key: t1.c1, t2.c1
+         ->  Nested Loop
+               Output: t1.c1, t2.c1
+               ->  Foreign Scan on public.ft1 t1
+                     Output: t1.c1
+                     Remote SQL: SELECT "C 1" a10 FROM "S 1"."T 1"
+               ->  Materialize
+                     Output: t2.c1
+                     ->  Foreign Scan on public.ft2 t2
+                           Output: t2.c1
+                           Remote SQL: SELECT "C 1" a9 FROM "S 1"."T 1"
+(15 rows)
+
+SELECT t1.c1, t2.c1 FROM ft1 t1 CROSS JOIN ft2 t2 ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+ c1 | c1  
+----+-----
+  1 | 101
+  1 | 102
+  1 | 103
+  1 | 104
+  1 | 105
+  1 | 106
+  1 | 107
+  1 | 108
+  1 | 109
+  1 | 110
+(10 rows)
+
+-- different server
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft5 t1 JOIN ft6 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1
+   ->  Merge Join
+         Output: t1.c1, t2.c1
+         Merge Cond: (t1.c1 = t2.c1)
+         ->  Sort
+               Output: t1.c1
+               Sort Key: t1.c1
+               ->  Foreign Scan on public.ft5 t1
+                     Output: t1.c1
+                     Remote SQL: SELECT c1 a9 FROM "S 1"."T 4"
+         ->  Sort
+               Output: t2.c1
+               Sort Key: t2.c1
+               ->  Foreign Scan on public.ft6 t2
+                     Output: t2.c1
+                     Remote SQL: SELECT c1 a9 FROM "S 1"."T 4"
+(17 rows)
+
+SELECT t1.c1, t2.c1 FROM ft5 t1 JOIN ft6 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+ c1 | c1 
+----+----
+(0 rows)
+
+-- different effective user for permission check
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft5 t1 JOIN v_ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Limit
+   Output: t1.c1, ft5.c1
+   ->  Merge Join
+         Output: t1.c1, ft5.c1
+         Merge Cond: (t1.c1 = ft5.c1)
+         ->  Sort
+               Output: t1.c1
+               Sort Key: t1.c1
+               ->  Foreign Scan on public.ft5 t1
+                     Output: t1.c1
+                     Remote SQL: SELECT c1 a9 FROM "S 1"."T 4"
+         ->  Sort
+               Output: ft5.c1
+               Sort Key: ft5.c1
+               ->  Foreign Scan on public.ft5
+                     Output: ft5.c1
+                     Remote SQL: SELECT c1 a9 FROM "S 1"."T 4"
+(17 rows)
+
+SELECT t1.c1, t2.c1 FROM ft5 t1 JOIN v_ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+ c1 | c1 
+----+----
+(0 rows)
+
+-- unsafe join conditions
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c8 = t2.c8) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+                                       QUERY PLAN                                        
+-----------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1, t1.c3
+   ->  Sort
+         Output: t1.c1, t2.c1, t1.c3
+         Sort Key: t1.c3, t1.c1
+         ->  Merge Join
+               Output: t1.c1, t2.c1, t1.c3
+               Merge Cond: (t1.c8 = t2.c8)
+               ->  Sort
+                     Output: t1.c1, t1.c3, t1.c8
+                     Sort Key: t1.c8
+                     ->  Foreign Scan on public.ft1 t1
+                           Output: t1.c1, t1.c3, t1.c8
+                           Remote SQL: SELECT "C 1" a10, c3 a12, c8 a17 FROM "S 1"."T 1"
+               ->  Sort
+                     Output: t2.c1, t2.c8
+                     Sort Key: t2.c8
+                     ->  Foreign Scan on public.ft2 t2
+                           Output: t2.c1, t2.c8
+                           Remote SQL: SELECT "C 1" a9, c8 a17 FROM "S 1"."T 1"
+(20 rows)
+
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c8 = t2.c8) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+ c1 | c1  
+----+-----
+  1 | 102
+  1 | 103
+  1 | 104
+  1 | 105
+  1 | 106
+  1 | 107
+  1 | 108
+  1 | 109
+  1 | 110
+  1 |   1
+(10 rows)
+
+-- local filter (unsafe conditions on one side)
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) WHERE t1.c8 = 'foo' ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+                                       QUERY PLAN                                        
+-----------------------------------------------------------------------------------------
+ Limit
+   Output: t1.c1, t2.c1, t1.c3
+   ->  Sort
+         Output: t1.c1, t2.c1, t1.c3
+         Sort Key: t1.c3, t1.c1
+         ->  Hash Join
+               Output: t1.c1, t2.c1, t1.c3
+               Hash Cond: (t2.c1 = t1.c1)
+               ->  Foreign Scan on public.ft2 t2
+                     Output: t2.c1
+                     Remote SQL: SELECT "C 1" a9 FROM "S 1"."T 1"
+               ->  Hash
+                     Output: t1.c1, t1.c3
+                     ->  Foreign Scan on public.ft1 t1
+                           Output: t1.c1, t1.c3
+                           Filter: (t1.c8 = 'foo'::user_enum)
+                           Remote SQL: SELECT "C 1" a10, c3 a12, c8 a17 FROM "S 1"."T 1"
+(17 rows)
+
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) WHERE t1.c8 = 'foo' ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+ c1  | c1  
+-----+-----
+ 101 | 101
+ 102 | 102
+ 103 | 103
+ 104 | 104
+ 105 | 105
+ 106 | 106
+ 107 | 107
+ 108 | 108
+ 109 | 109
+ 110 | 110
+(10 rows)
+
+-- ===================================================================
 -- parameterized queries
 -- ===================================================================
 -- simple join
 PREPARE st1(int, int) AS SELECT t1.c3, t2.c3 FROM ft1 t1, ft2 t2 WHERE t1.c1 = $1 AND t2.c1 = $2;
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st1(1, 2);
-                             QUERY PLAN                             
---------------------------------------------------------------------
+                               QUERY PLAN                               
+------------------------------------------------------------------------
  Nested Loop
    Output: t1.c3, t2.c3
    ->  Foreign Scan on public.ft1 t1
          Output: t1.c3
-         Remote SQL: SELECT c3 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+         Remote SQL: SELECT c3 a12 FROM "S 1"."T 1" WHERE (("C 1" = 1))
    ->  Foreign Scan on public.ft2 t2
          Output: t2.c3
-         Remote SQL: SELECT c3 FROM "S 1"."T 1" WHERE (("C 1" = 2))
+         Remote SQL: SELECT c3 a12 FROM "S 1"."T 1" WHERE (("C 1" = 2))
 (8 rows)
 
 EXECUTE st1(1, 1);
@@ -683,8 +1293,8 @@ EXECUTE st1(101, 101);
 -- subquery using stable function (can't be sent to remote)
 PREPARE st2(int) AS SELECT * FROM ft1 t1 WHERE t1.c1 < $2 AND t1.c3 IN (SELECT c3 FROM ft2 t2 WHERE c1 > $1 AND date(c4) = '1970-01-17'::date) ORDER BY c1;
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st2(10, 20);
-                                                QUERY PLAN                                                
-----------------------------------------------------------------------------------------------------------
+                                                                QUERY PLAN                                                                
+------------------------------------------------------------------------------------------------------------------------------------------
  Sort
    Output: t1.c1, t1.c2, t1.c3, t1.c4, t1.c5, t1.c6, t1.c7, t1.c8
    Sort Key: t1.c1
@@ -693,13 +1303,13 @@ EXPLAIN (VERBOSE, COSTS false) EXECUTE st2(10, 20);
          Join Filter: (t1.c3 = t2.c3)
          ->  Foreign Scan on public.ft1 t1
                Output: t1.c1, t1.c2, t1.c3, t1.c4, t1.c5, t1.c6, t1.c7, t1.c8
-               Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" < 20))
+               Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" < 20))
          ->  Materialize
                Output: t2.c3
                ->  Foreign Scan on public.ft2 t2
                      Output: t2.c3
                      Filter: (date(t2.c4) = '01-17-1970'::date)
-                     Remote SQL: SELECT c3, c4 FROM "S 1"."T 1" WHERE (("C 1" > 10))
+                     Remote SQL: SELECT c3 a12, c4 a13 FROM "S 1"."T 1" WHERE (("C 1" > 10))
 (15 rows)
 
 EXECUTE st2(10, 20);
@@ -717,8 +1327,8 @@ EXECUTE st2(101, 121);
 -- subquery using immutable function (can be sent to remote)
 PREPARE st3(int) AS SELECT * FROM ft1 t1 WHERE t1.c1 < $2 AND t1.c3 IN (SELECT c3 FROM ft2 t2 WHERE c1 > $1 AND date(c5) = '1970-01-17'::date) ORDER BY c1;
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st3(10, 20);
-                                                      QUERY PLAN                                                       
------------------------------------------------------------------------------------------------------------------------
+                                                                QUERY PLAN                                                                
+------------------------------------------------------------------------------------------------------------------------------------------
  Sort
    Output: t1.c1, t1.c2, t1.c3, t1.c4, t1.c5, t1.c6, t1.c7, t1.c8
    Sort Key: t1.c1
@@ -727,12 +1337,12 @@ EXPLAIN (VERBOSE, COSTS false) EXECUTE st3(10, 20);
          Join Filter: (t1.c3 = t2.c3)
          ->  Foreign Scan on public.ft1 t1
                Output: t1.c1, t1.c2, t1.c3, t1.c4, t1.c5, t1.c6, t1.c7, t1.c8
-               Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" < 20))
+               Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" < 20))
          ->  Materialize
                Output: t2.c3
                ->  Foreign Scan on public.ft2 t2
                      Output: t2.c3
-                     Remote SQL: SELECT c3 FROM "S 1"."T 1" WHERE (("C 1" > 10)) AND ((date(c5) = '1970-01-17'::date))
+                     Remote SQL: SELECT c3 a12 FROM "S 1"."T 1" WHERE (("C 1" > 10)) AND ((date(c5) = '1970-01-17'::date))
 (14 rows)
 
 EXECUTE st3(10, 20);
@@ -749,108 +1359,108 @@ EXECUTE st3(20, 30);
 -- custom plan should be chosen initially
 PREPARE st4(int) AS SELECT * FROM ft1 t1 WHERE t1.c1 = $1;
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st4(1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st4(1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st4(1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st4(1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (3 rows)
 
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st4(1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (3 rows)
 
 -- once we try it enough times, should switch to generic plan
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st4(1);
-                                              QUERY PLAN                                               
--------------------------------------------------------------------------------------------------------
+                                                              QUERY PLAN                                                               
+---------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = $1::integer))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = $1::integer))
 (3 rows)
 
 -- value of $1 should not be sent to remote
 PREPARE st5(user_enum,int) AS SELECT * FROM ft1 t1 WHERE c8 = $1 and c1 = $2;
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st5('foo', 1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    Filter: (t1.c8 = 'foo'::user_enum)
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (4 rows)
 
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st5('foo', 1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    Filter: (t1.c8 = 'foo'::user_enum)
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (4 rows)
 
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st5('foo', 1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    Filter: (t1.c8 = 'foo'::user_enum)
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (4 rows)
 
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st5('foo', 1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    Filter: (t1.c8 = 'foo'::user_enum)
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (4 rows)
 
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st5('foo', 1);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
+                                                         QUERY PLAN                                                          
+-----------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    Filter: (t1.c8 = 'foo'::user_enum)
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 1))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = 1))
 (4 rows)
 
 EXPLAIN (VERBOSE, COSTS false) EXECUTE st5('foo', 1);
-                                              QUERY PLAN                                               
--------------------------------------------------------------------------------------------------------
+                                                              QUERY PLAN                                                               
+---------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    Filter: (t1.c8 = $1)
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = $1::integer))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (("C 1" = $1::integer))
 (4 rows)
 
 EXECUTE st5('foo', 1);
@@ -868,14 +1478,14 @@ DEALLOCATE st5;
 -- System columns, except ctid, should not be sent to remote
 EXPLAIN (VERBOSE, COSTS false)
 SELECT * FROM ft1 t1 WHERE t1.tableoid = 'pg_class'::regclass LIMIT 1;
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+                                                  QUERY PLAN                                                   
+---------------------------------------------------------------------------------------------------------------
  Limit
    Output: c1, c2, c3, c4, c5, c6, c7, c8
    ->  Foreign Scan on public.ft1 t1
          Output: c1, c2, c3, c4, c5, c6, c7, c8
          Filter: (t1.tableoid = '1259'::oid)
-         Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
+         Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1"
 (6 rows)
 
 SELECT * FROM ft1 t1 WHERE t1.tableoid = 'ft1'::regclass LIMIT 1;
@@ -886,13 +1496,13 @@ SELECT * FROM ft1 t1 WHERE t1.tableoid = 'ft1'::regclass LIMIT 1;
 
 EXPLAIN (VERBOSE, COSTS false)
 SELECT tableoid::regclass, * FROM ft1 t1 LIMIT 1;
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+                                                  QUERY PLAN                                                   
+---------------------------------------------------------------------------------------------------------------
  Limit
    Output: ((tableoid)::regclass), c1, c2, c3, c4, c5, c6, c7, c8
    ->  Foreign Scan on public.ft1 t1
          Output: (tableoid)::regclass, c1, c2, c3, c4, c5, c6, c7, c8
-         Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
+         Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1"
 (5 rows)
 
 SELECT tableoid::regclass, * FROM ft1 t1 LIMIT 1;
@@ -903,11 +1513,11 @@ SELECT tableoid::regclass, * FROM ft1 t1 LIMIT 1;
 
 EXPLAIN (VERBOSE, COSTS false)
 SELECT * FROM ft1 t1 WHERE t1.ctid = '(0,2)';
-                                              QUERY PLAN                                               
--------------------------------------------------------------------------------------------------------
+                                                              QUERY PLAN                                                               
+---------------------------------------------------------------------------------------------------------------------------------------
  Foreign Scan on public.ft1 t1
    Output: c1, c2, c3, c4, c5, c6, c7, c8
-   Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((ctid = '(0,2)'::tid))
+   Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE ((ctid = '(0,2)'::tid))
 (3 rows)
 
 SELECT * FROM ft1 t1 WHERE t1.ctid = '(0,2)';
@@ -918,13 +1528,13 @@ SELECT * FROM ft1 t1 WHERE t1.ctid = '(0,2)';
 
 EXPLAIN (VERBOSE, COSTS false)
 SELECT ctid, * FROM ft1 t1 LIMIT 1;
-                                     QUERY PLAN                                      
--------------------------------------------------------------------------------------
+                                                       QUERY PLAN                                                       
+------------------------------------------------------------------------------------------------------------------------
  Limit
    Output: ctid, c1, c2, c3, c4, c5, c6, c7, c8
    ->  Foreign Scan on public.ft1 t1
          Output: ctid, c1, c2, c3, c4, c5, c6, c7, c8
-         Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8, ctid FROM "S 1"."T 1"
+         Remote SQL: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17, ctid a7 FROM "S 1"."T 1"
 (5 rows)
 
 SELECT ctid, * FROM ft1 t1 LIMIT 1;
@@ -987,7 +1597,7 @@ FETCH c;
 SAVEPOINT s;
 SELECT * FROM ft1 WHERE 1 / (c1 - 1) > 0;  -- ERROR
 ERROR:  division by zero
-CONTEXT:  Remote SQL command: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (((1 / ("C 1" - 1)) > 0))
+CONTEXT:  Remote SQL command: SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE (((1 / ("C 1" - 1)) > 0))
 ROLLBACK TO s;
 FETCH c;
  c1 | c2 |  c3   |              c4              |            c5            | c6 |     c7     | c8  
@@ -1010,64 +1620,64 @@ create foreign table ft3 (f1 text collate "C", f2 text)
   server loopback options (table_name 'loct3');
 -- can be sent to remote
 explain (verbose, costs off) select * from ft3 where f1 = 'foo';
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+                                   QUERY PLAN                                    
+---------------------------------------------------------------------------------
  Foreign Scan on public.ft3
    Output: f1, f2
-   Remote SQL: SELECT f1, f2 FROM public.loct3 WHERE ((f1 = 'foo'::text))
+   Remote SQL: SELECT f1 a9, f2 a10 FROM public.loct3 WHERE ((f1 = 'foo'::text))
 (3 rows)
 
 explain (verbose, costs off) select * from ft3 where f1 COLLATE "C" = 'foo';
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+                                   QUERY PLAN                                    
+---------------------------------------------------------------------------------
  Foreign Scan on public.ft3
    Output: f1, f2
-   Remote SQL: SELECT f1, f2 FROM public.loct3 WHERE ((f1 = 'foo'::text))
+   Remote SQL: SELECT f1 a9, f2 a10 FROM public.loct3 WHERE ((f1 = 'foo'::text))
 (3 rows)
 
 explain (verbose, costs off) select * from ft3 where f2 = 'foo';
-                                QUERY PLAN                                
---------------------------------------------------------------------------
+                                   QUERY PLAN                                    
+---------------------------------------------------------------------------------
  Foreign Scan on public.ft3
    Output: f1, f2
-   Remote SQL: SELECT f1, f2 FROM public.loct3 WHERE ((f2 = 'foo'::text))
+   Remote SQL: SELECT f1 a9, f2 a10 FROM public.loct3 WHERE ((f2 = 'foo'::text))
 (3 rows)
 
 -- can't be sent to remote
 explain (verbose, costs off) select * from ft3 where f1 COLLATE "POSIX" = 'foo';
-                  QUERY PLAN                   
------------------------------------------------
+                      QUERY PLAN                      
+------------------------------------------------------
  Foreign Scan on public.ft3
    Output: f1, f2
    Filter: ((ft3.f1)::text = 'foo'::text)
-   Remote SQL: SELECT f1, f2 FROM public.loct3
+   Remote SQL: SELECT f1 a9, f2 a10 FROM public.loct3
 (4 rows)
 
 explain (verbose, costs off) select * from ft3 where f1 = 'foo' COLLATE "C";
-                  QUERY PLAN                   
------------------------------------------------
+                      QUERY PLAN                      
+------------------------------------------------------
  Foreign Scan on public.ft3
    Output: f1, f2
    Filter: (ft3.f1 = 'foo'::text COLLATE "C")
-   Remote SQL: SELECT f1, f2 FROM public.loct3
+   Remote SQL: SELECT f1 a9, f2 a10 FROM public.loct3
 (4 rows)
 
 explain (verbose, costs off) select * from ft3 where f2 COLLATE "C" = 'foo';
-                  QUERY PLAN                   
------------------------------------------------
+                      QUERY PLAN                      
+------------------------------------------------------
  Foreign Scan on public.ft3
    Output: f1, f2
    Filter: ((ft3.f2)::text = 'foo'::text)
-   Remote SQL: SELECT f1, f2 FROM public.loct3
+   Remote SQL: SELECT f1 a9, f2 a10 FROM public.loct3
 (4 rows)
 
 explain (verbose, costs off) select * from ft3 where f2 = 'foo' COLLATE "C";
-                  QUERY PLAN                   
------------------------------------------------
+                      QUERY PLAN                      
+------------------------------------------------------
  Foreign Scan on public.ft3
    Output: f1, f2
    Filter: (ft3.f2 = 'foo'::text COLLATE "C")
-   Remote SQL: SELECT f1, f2 FROM public.loct3
+   Remote SQL: SELECT f1 a9, f2 a10 FROM public.loct3
 (4 rows)
 
 -- ===================================================================
@@ -1085,7 +1695,7 @@ INSERT INTO ft2 (c1,c2,c3) SELECT c1+1000,c2+100, c3 || c3 FROM ft2 LIMIT 20;
                Output: ((ft2_1.c1 + 1000)), ((ft2_1.c2 + 100)), ((ft2_1.c3 || ft2_1.c3))
                ->  Foreign Scan on public.ft2 ft2_1
                      Output: (ft2_1.c1 + 1000), (ft2_1.c2 + 100), (ft2_1.c3 || ft2_1.c3)
-                     Remote SQL: SELECT "C 1", c2, c3 FROM "S 1"."T 1"
+                     Remote SQL: SELECT "C 1" a9, c2 a10, c3 a12 FROM "S 1"."T 1"
 (9 rows)
 
 INSERT INTO ft2 (c1,c2,c3) SELECT c1+1000,c2+100, c3 || c3 FROM ft2 LIMIT 20;
@@ -1210,35 +1820,28 @@ UPDATE ft2 SET c2 = c2 + 400, c3 = c3 || '_update7' WHERE c1 % 10 = 7 RETURNING
 EXPLAIN (verbose, costs off)
 UPDATE ft2 SET c2 = ft2.c2 + 500, c3 = ft2.c3 || '_update9', c7 = DEFAULT
   FROM ft1 WHERE ft1.c1 = ft2.c2 AND ft1.c1 % 10 = 9;
-                                                                            QUERY PLAN                                                                             
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+                                                                                                                                                                                                                                                                       QUERY PLAN                                                                                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  Update on public.ft2
    Remote SQL: UPDATE "S 1"."T 1" SET c2 = $2, c3 = $3, c7 = $4 WHERE ctid = $1
-   ->  Hash Join
+   ->  Foreign Scan
          Output: ft2.c1, (ft2.c2 + 500), NULL::integer, (ft2.c3 || '_update9'::text), ft2.c4, ft2.c5, ft2.c6, 'ft2       '::character(10), ft2.c8, ft2.ctid, ft1.*
-         Hash Cond: (ft2.c2 = ft1.c1)
-         ->  Foreign Scan on public.ft2
-               Output: ft2.c1, ft2.c2, ft2.c3, ft2.c4, ft2.c5, ft2.c6, ft2.c8, ft2.ctid
-               Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c8, ctid FROM "S 1"."T 1" FOR UPDATE
-         ->  Hash
-               Output: ft1.*, ft1.c1
-               ->  Foreign Scan on public.ft1
-                     Output: ft1.*, ft1.c1
-                     Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((("C 1" % 10) = 9))
-(13 rows)
+         Relations: (public.ft2) INNER JOIN (public.ft1)
+         Remote SQL: SELECT l.a1, l.a2, l.a3, l.a4, l.a5, l.a6, l.a7, l.a8, r.a1 FROM (SELECT l.a9, l.a10, l.a12, l.a13, l.a14, l.a15, l.a17, l.a7 FROM (SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14, c6 a15, c8 a17, ctid a7 FROM "S 1"."T 1" FOR UPDATE) l) l (a1, a2, a3, a4, a5, a6, a7, a8) INNER JOIN (SELECT ROW(r.a10, r.a11, r.a12, r.a13, r.a14, r.a15, r.a16, r.a17), r.a10 FROM (SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE ((("C 1" % 10) = 9))) r) r (a1, a2) ON ((l.a2 = r.a2))
+(6 rows)
 
 UPDATE ft2 SET c2 = ft2.c2 + 500, c3 = ft2.c3 || '_update9', c7 = DEFAULT
   FROM ft1 WHERE ft1.c1 = ft2.c2 AND ft1.c1 % 10 = 9;
 EXPLAIN (verbose, costs off)
   DELETE FROM ft2 WHERE c1 % 10 = 5 RETURNING c1, c4;
-                                       QUERY PLAN                                       
-----------------------------------------------------------------------------------------
+                                        QUERY PLAN                                         
+-------------------------------------------------------------------------------------------
  Delete on public.ft2
    Output: c1, c4
-   Remote SQL: DELETE FROM "S 1"."T 1" WHERE ctid = $1 RETURNING "C 1", c4
+   Remote SQL: DELETE FROM "S 1"."T 1" WHERE ctid = $1 RETURNING "C 1" a9, c4 a13
    ->  Foreign Scan on public.ft2
          Output: ctid
-         Remote SQL: SELECT ctid FROM "S 1"."T 1" WHERE ((("C 1" % 10) = 5)) FOR UPDATE
+         Remote SQL: SELECT ctid a7 FROM "S 1"."T 1" WHERE ((("C 1" % 10) = 5)) FOR UPDATE
 (6 rows)
 
 DELETE FROM ft2 WHERE c1 % 10 = 5 RETURNING c1, c4;
@@ -1351,22 +1954,15 @@ DELETE FROM ft2 WHERE c1 % 10 = 5 RETURNING c1, c4;
 
 EXPLAIN (verbose, costs off)
 DELETE FROM ft2 USING ft1 WHERE ft1.c1 = ft2.c2 AND ft1.c1 % 10 = 2;
-                                                      QUERY PLAN                                                      
-----------------------------------------------------------------------------------------------------------------------
+                                                                                                                                                                                        QUERY PLAN                                                                                                                                                                                         
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  Delete on public.ft2
    Remote SQL: DELETE FROM "S 1"."T 1" WHERE ctid = $1
-   ->  Hash Join
+   ->  Foreign Scan
          Output: ft2.ctid, ft1.*
-         Hash Cond: (ft2.c2 = ft1.c1)
-         ->  Foreign Scan on public.ft2
-               Output: ft2.ctid, ft2.c2
-               Remote SQL: SELECT c2, ctid FROM "S 1"."T 1" FOR UPDATE
-         ->  Hash
-               Output: ft1.*, ft1.c1
-               ->  Foreign Scan on public.ft1
-                     Output: ft1.*, ft1.c1
-                     Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((("C 1" % 10) = 2))
-(13 rows)
+         Relations: (public.ft2) INNER JOIN (public.ft1)
+         Remote SQL: SELECT l.a1, r.a1 FROM (SELECT l.a7, l.a10 FROM (SELECT c2 a10, ctid a7 FROM "S 1"."T 1" FOR UPDATE) l) l (a1, a2) INNER JOIN (SELECT ROW(r.a10, r.a11, r.a12, r.a13, r.a14, r.a15, r.a16, r.a17), r.a10 FROM (SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" WHERE ((("C 1" % 10) = 2))) r) r (a1, a2) ON ((l.a2 = r.a2))
+(6 rows)
 
 DELETE FROM ft2 USING ft1 WHERE ft1.c1 = ft2.c2 AND ft1.c1 % 10 = 2;
 SELECT c1,c2,c3,c4 FROM ft2 ORDER BY c1;
@@ -3027,386 +3623,6 @@ NOTICE:  NEW: (13,"test triggered !")
 (1 row)
 
 -- ===================================================================
--- test inheritance features
--- ===================================================================
-CREATE TABLE a (aa TEXT);
-CREATE TABLE loct (aa TEXT, bb TEXT);
-CREATE FOREIGN TABLE b (bb TEXT) INHERITS (a)
-  SERVER loopback OPTIONS (table_name 'loct');
-INSERT INTO a(aa) VALUES('aaa');
-INSERT INTO a(aa) VALUES('aaaa');
-INSERT INTO a(aa) VALUES('aaaaa');
-INSERT INTO b(aa) VALUES('bbb');
-INSERT INTO b(aa) VALUES('bbbb');
-INSERT INTO b(aa) VALUES('bbbbb');
-SELECT tableoid::regclass, * FROM a;
- tableoid |  aa   
-----------+-------
- a        | aaa
- a        | aaaa
- a        | aaaaa
- b        | bbb
- b        | bbbb
- b        | bbbbb
-(6 rows)
-
-SELECT tableoid::regclass, * FROM b;
- tableoid |  aa   | bb 
-----------+-------+----
- b        | bbb   | 
- b        | bbbb  | 
- b        | bbbbb | 
-(3 rows)
-
-SELECT tableoid::regclass, * FROM ONLY a;
- tableoid |  aa   
-----------+-------
- a        | aaa
- a        | aaaa
- a        | aaaaa
-(3 rows)
-
-UPDATE a SET aa = 'zzzzzz' WHERE aa LIKE 'aaaa%';
-SELECT tableoid::regclass, * FROM a;
- tableoid |   aa   
-----------+--------
- a        | aaa
- a        | zzzzzz
- a        | zzzzzz
- b        | bbb
- b        | bbbb
- b        | bbbbb
-(6 rows)
-
-SELECT tableoid::regclass, * FROM b;
- tableoid |  aa   | bb 
-----------+-------+----
- b        | bbb   | 
- b        | bbbb  | 
- b        | bbbbb | 
-(3 rows)
-
-SELECT tableoid::regclass, * FROM ONLY a;
- tableoid |   aa   
-----------+--------
- a        | aaa
- a        | zzzzzz
- a        | zzzzzz
-(3 rows)
-
-UPDATE b SET aa = 'new';
-SELECT tableoid::regclass, * FROM a;
- tableoid |   aa   
-----------+--------
- a        | aaa
- a        | zzzzzz
- a        | zzzzzz
- b        | new
- b        | new
- b        | new
-(6 rows)
-
-SELECT tableoid::regclass, * FROM b;
- tableoid | aa  | bb 
-----------+-----+----
- b        | new | 
- b        | new | 
- b        | new | 
-(3 rows)
-
-SELECT tableoid::regclass, * FROM ONLY a;
- tableoid |   aa   
-----------+--------
- a        | aaa
- a        | zzzzzz
- a        | zzzzzz
-(3 rows)
-
-UPDATE a SET aa = 'newtoo';
-SELECT tableoid::regclass, * FROM a;
- tableoid |   aa   
-----------+--------
- a        | newtoo
- a        | newtoo
- a        | newtoo
- b        | newtoo
- b        | newtoo
- b        | newtoo
-(6 rows)
-
-SELECT tableoid::regclass, * FROM b;
- tableoid |   aa   | bb 
-----------+--------+----
- b        | newtoo | 
- b        | newtoo | 
- b        | newtoo | 
-(3 rows)
-
-SELECT tableoid::regclass, * FROM ONLY a;
- tableoid |   aa   
-----------+--------
- a        | newtoo
- a        | newtoo
- a        | newtoo
-(3 rows)
-
-DELETE FROM a;
-SELECT tableoid::regclass, * FROM a;
- tableoid | aa 
-----------+----
-(0 rows)
-
-SELECT tableoid::regclass, * FROM b;
- tableoid | aa | bb 
-----------+----+----
-(0 rows)
-
-SELECT tableoid::regclass, * FROM ONLY a;
- tableoid | aa 
-----------+----
-(0 rows)
-
-DROP TABLE a CASCADE;
-NOTICE:  drop cascades to foreign table b
-DROP TABLE loct;
--- Check SELECT FOR UPDATE/SHARE with an inherited source table
-create table loct1 (f1 int, f2 int, f3 int);
-create table loct2 (f1 int, f2 int, f3 int);
-create table foo (f1 int, f2 int);
-create foreign table foo2 (f3 int) inherits (foo)
-  server loopback options (table_name 'loct1');
-create table bar (f1 int, f2 int);
-create foreign table bar2 (f3 int) inherits (bar)
-  server loopback options (table_name 'loct2');
-insert into foo values(1,1);
-insert into foo values(3,3);
-insert into foo2 values(2,2,2);
-insert into foo2 values(4,4,4);
-insert into bar values(1,11);
-insert into bar values(2,22);
-insert into bar values(6,66);
-insert into bar2 values(3,33,33);
-insert into bar2 values(4,44,44);
-insert into bar2 values(7,77,77);
-explain (verbose, costs off)
-select * from bar where f1 in (select f1 from foo) for update;
-                                          QUERY PLAN                                          
-----------------------------------------------------------------------------------------------
- LockRows
-   Output: bar.f1, bar.f2, bar.ctid, bar.tableoid, bar.*, foo.ctid, foo.tableoid, foo.*
-   ->  Hash Join
-         Output: bar.f1, bar.f2, bar.ctid, bar.tableoid, bar.*, foo.ctid, foo.tableoid, foo.*
-         Hash Cond: (bar.f1 = foo.f1)
-         ->  Append
-               ->  Seq Scan on public.bar
-                     Output: bar.f1, bar.f2, bar.ctid, bar.tableoid, bar.*
-               ->  Foreign Scan on public.bar2
-                     Output: bar2.f1, bar2.f2, bar2.ctid, bar2.tableoid, bar2.*
-                     Remote SQL: SELECT f1, f2, f3, ctid FROM public.loct2 FOR UPDATE
-         ->  Hash
-               Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-               ->  HashAggregate
-                     Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-                     Group Key: foo.f1
-                     ->  Append
-                           ->  Seq Scan on public.foo
-                                 Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-                           ->  Foreign Scan on public.foo2
-                                 Output: foo2.ctid, foo2.tableoid, foo2.*, foo2.f1
-                                 Remote SQL: SELECT f1, f2, f3, ctid FROM public.loct1
-(22 rows)
-
-select * from bar where f1 in (select f1 from foo) for update;
- f1 | f2 
-----+----
-  1 | 11
-  2 | 22
-  3 | 33
-  4 | 44
-(4 rows)
-
-explain (verbose, costs off)
-select * from bar where f1 in (select f1 from foo) for share;
-                                          QUERY PLAN                                          
-----------------------------------------------------------------------------------------------
- LockRows
-   Output: bar.f1, bar.f2, bar.ctid, bar.tableoid, bar.*, foo.ctid, foo.tableoid, foo.*
-   ->  Hash Join
-         Output: bar.f1, bar.f2, bar.ctid, bar.tableoid, bar.*, foo.ctid, foo.tableoid, foo.*
-         Hash Cond: (bar.f1 = foo.f1)
-         ->  Append
-               ->  Seq Scan on public.bar
-                     Output: bar.f1, bar.f2, bar.ctid, bar.tableoid, bar.*
-               ->  Foreign Scan on public.bar2
-                     Output: bar2.f1, bar2.f2, bar2.ctid, bar2.tableoid, bar2.*
-                     Remote SQL: SELECT f1, f2, f3, ctid FROM public.loct2 FOR SHARE
-         ->  Hash
-               Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-               ->  HashAggregate
-                     Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-                     Group Key: foo.f1
-                     ->  Append
-                           ->  Seq Scan on public.foo
-                                 Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-                           ->  Foreign Scan on public.foo2
-                                 Output: foo2.ctid, foo2.tableoid, foo2.*, foo2.f1
-                                 Remote SQL: SELECT f1, f2, f3, ctid FROM public.loct1
-(22 rows)
-
-select * from bar where f1 in (select f1 from foo) for share;
- f1 | f2 
-----+----
-  1 | 11
-  2 | 22
-  3 | 33
-  4 | 44
-(4 rows)
-
--- Check UPDATE with inherited target and an inherited source table
-explain (verbose, costs off)
-update bar set f2 = f2 + 100 where f1 in (select f1 from foo);
-                                         QUERY PLAN                                          
----------------------------------------------------------------------------------------------
- Update on public.bar
-   Update on public.bar
-   Foreign Update on public.bar2
-     Remote SQL: UPDATE public.loct2 SET f2 = $2 WHERE ctid = $1
-   ->  Hash Join
-         Output: bar.f1, (bar.f2 + 100), bar.ctid, foo.ctid, foo.tableoid, foo.*
-         Hash Cond: (bar.f1 = foo.f1)
-         ->  Seq Scan on public.bar
-               Output: bar.f1, bar.f2, bar.ctid
-         ->  Hash
-               Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-               ->  HashAggregate
-                     Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-                     Group Key: foo.f1
-                     ->  Append
-                           ->  Seq Scan on public.foo
-                                 Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-                           ->  Foreign Scan on public.foo2
-                                 Output: foo2.ctid, foo2.tableoid, foo2.*, foo2.f1
-                                 Remote SQL: SELECT f1, f2, f3, ctid FROM public.loct1
-   ->  Hash Join
-         Output: bar2.f1, (bar2.f2 + 100), bar2.f3, bar2.ctid, foo.ctid, foo.tableoid, foo.*
-         Hash Cond: (bar2.f1 = foo.f1)
-         ->  Foreign Scan on public.bar2
-               Output: bar2.f1, bar2.f2, bar2.f3, bar2.ctid
-               Remote SQL: SELECT f1, f2, f3, ctid FROM public.loct2 FOR UPDATE
-         ->  Hash
-               Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-               ->  HashAggregate
-                     Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-                     Group Key: foo.f1
-                     ->  Append
-                           ->  Seq Scan on public.foo
-                                 Output: foo.ctid, foo.tableoid, foo.*, foo.f1
-                           ->  Foreign Scan on public.foo2
-                                 Output: foo2.ctid, foo2.tableoid, foo2.*, foo2.f1
-                                 Remote SQL: SELECT f1, f2, f3, ctid FROM public.loct1
-(37 rows)
-
-update bar set f2 = f2 + 100 where f1 in (select f1 from foo);
-select tableoid::regclass, * from bar order by 1,2;
- tableoid | f1 | f2  
-----------+----+-----
- bar      |  1 | 111
- bar      |  2 | 122
- bar      |  6 |  66
- bar2     |  3 | 133
- bar2     |  4 | 144
- bar2     |  7 |  77
-(6 rows)
-
--- Check UPDATE with inherited target and an appendrel subquery
-explain (verbose, costs off)
-update bar set f2 = f2 + 100
-from
-  ( select f1 from foo union all select f1+3 from foo ) ss
-where bar.f1 = ss.f1;
-                                      QUERY PLAN                                      
---------------------------------------------------------------------------------------
- Update on public.bar
-   Update on public.bar
-   Foreign Update on public.bar2
-     Remote SQL: UPDATE public.loct2 SET f2 = $2 WHERE ctid = $1
-   ->  Hash Join
-         Output: bar.f1, (bar.f2 + 100), bar.ctid, (ROW(foo.f1))
-         Hash Cond: (foo.f1 = bar.f1)
-         ->  Append
-               ->  Seq Scan on public.foo
-                     Output: ROW(foo.f1), foo.f1
-               ->  Foreign Scan on public.foo2
-                     Output: ROW(foo2.f1), foo2.f1
-                     Remote SQL: SELECT f1 FROM public.loct1
-               ->  Seq Scan on public.foo foo_1
-                     Output: ROW((foo_1.f1 + 3)), (foo_1.f1 + 3)
-               ->  Foreign Scan on public.foo2 foo2_1
-                     Output: ROW((foo2_1.f1 + 3)), (foo2_1.f1 + 3)
-                     Remote SQL: SELECT f1 FROM public.loct1
-         ->  Hash
-               Output: bar.f1, bar.f2, bar.ctid
-               ->  Seq Scan on public.bar
-                     Output: bar.f1, bar.f2, bar.ctid
-   ->  Merge Join
-         Output: bar2.f1, (bar2.f2 + 100), bar2.f3, bar2.ctid, (ROW(foo.f1))
-         Merge Cond: (bar2.f1 = foo.f1)
-         ->  Sort
-               Output: bar2.f1, bar2.f2, bar2.f3, bar2.ctid
-               Sort Key: bar2.f1
-               ->  Foreign Scan on public.bar2
-                     Output: bar2.f1, bar2.f2, bar2.f3, bar2.ctid
-                     Remote SQL: SELECT f1, f2, f3, ctid FROM public.loct2 FOR UPDATE
-         ->  Sort
-               Output: (ROW(foo.f1)), foo.f1
-               Sort Key: foo.f1
-               ->  Append
-                     ->  Seq Scan on public.foo
-                           Output: ROW(foo.f1), foo.f1
-                     ->  Foreign Scan on public.foo2
-                           Output: ROW(foo2.f1), foo2.f1
-                           Remote SQL: SELECT f1 FROM public.loct1
-                     ->  Seq Scan on public.foo foo_1
-                           Output: ROW((foo_1.f1 + 3)), (foo_1.f1 + 3)
-                     ->  Foreign Scan on public.foo2 foo2_1
-                           Output: ROW((foo2_1.f1 + 3)), (foo2_1.f1 + 3)
-                           Remote SQL: SELECT f1 FROM public.loct1
-(45 rows)
-
-update bar set f2 = f2 + 100
-from
-  ( select f1 from foo union all select f1+3 from foo ) ss
-where bar.f1 = ss.f1;
-select tableoid::regclass, * from bar order by 1,2;
- tableoid | f1 | f2  
-----------+----+-----
- bar      |  1 | 211
- bar      |  2 | 222
- bar      |  6 | 166
- bar2     |  3 | 233
- bar2     |  4 | 244
- bar2     |  7 | 177
-(6 rows)
-
--- Test that WHERE CURRENT OF is not supported
-begin;
-declare c cursor for select * from bar where f1 = 7;
-fetch from c;
- f1 | f2  
-----+-----
-  7 | 177
-(1 row)
-
-update bar set f2 = null where current of c;
-ERROR:  WHERE CURRENT OF is not supported for this table type
-rollback;
-drop table foo cascade;
-NOTICE:  drop cascades to foreign table foo2
-drop table bar cascade;
-NOTICE:  drop cascades to foreign table bar2
-drop table loct1;
-drop table loct2;
--- ===================================================================
 -- test IMPORT FOREIGN SCHEMA
 -- ===================================================================
 CREATE SCHEMA import_source;
@@ -3636,3 +3852,6 @@ QUERY:  CREATE FOREIGN TABLE t5 (
 OPTIONS (schema_name 'import_source', table_name 't5');
 CONTEXT:  importing foreign table "t5"
 ROLLBACK;
+-- Cleanup
+DROP OWNED BY view_owner;
+DROP USER view_owner;
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c
index 478e124..de64627 100644
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -28,7 +28,6 @@
 #include "optimizer/pathnode.h"
 #include "optimizer/paths.h"
 #include "optimizer/planmain.h"
-#include "optimizer/prep.h"
 #include "optimizer/restrictinfo.h"
 #include "optimizer/var.h"
 #include "parser/parsetree.h"
@@ -47,41 +46,8 @@ PG_MODULE_MAGIC;
 #define DEFAULT_FDW_TUPLE_COST		0.01
 
 /*
- * FDW-specific planner information kept in RelOptInfo.fdw_private for a
- * foreign table.  This information is collected by postgresGetForeignRelSize.
- */
-typedef struct PgFdwRelationInfo
-{
-	/* baserestrictinfo clauses, broken down into safe and unsafe subsets. */
-	List	   *remote_conds;
-	List	   *local_conds;
-
-	/* Bitmap of attr numbers we need to fetch from the remote server. */
-	Bitmapset  *attrs_used;
-
-	/* Cost and selectivity of local_conds. */
-	QualCost	local_conds_cost;
-	Selectivity local_conds_sel;
-
-	/* Estimated size and cost for a scan with baserestrictinfo quals. */
-	double		rows;
-	int			width;
-	Cost		startup_cost;
-	Cost		total_cost;
-
-	/* Options extracted from catalogs. */
-	bool		use_remote_estimate;
-	Cost		fdw_startup_cost;
-	Cost		fdw_tuple_cost;
-
-	/* Cached catalog information. */
-	ForeignTable *table;
-	ForeignServer *server;
-	UserMapping *user;			/* only set in use_remote_estimate mode */
-} PgFdwRelationInfo;
-
-/*
- * Indexes of FDW-private information stored in fdw_private lists.
+ * Indexes of FDW-private information stored in fdw_private of ForeignScan of
+ * a simple foreign table scan for a SELECT statement.
  *
  * We store various information in ForeignScan.fdw_private to pass it from
  * planner to executor.  Currently we store:
@@ -98,7 +64,13 @@ enum FdwScanPrivateIndex
 	/* SQL statement to execute remotely (as a String node) */
 	FdwScanPrivateSelectSql,
 	/* Integer list of attribute numbers retrieved by the SELECT */
-	FdwScanPrivateRetrievedAttrs
+	FdwScanPrivateRetrievedAttrs,
+	/* Integer value of server for the scan */
+	FdwScanPrivateServerOid,
+	/* Integer value of effective userid for the scan */
+	FdwScanPrivateUserOid,
+	/* Names of relation scanned, added when the scan is join */
+	FdwScanPrivateRelations,
 };
 
 /*
@@ -128,7 +100,8 @@ enum FdwModifyPrivateIndex
  */
 typedef struct PgFdwScanState
 {
-	Relation	rel;			/* relcache entry for the foreign table */
+	const char *relname;		/* name of relation being scanned */
+	TupleDesc	tupdesc;		/* tuple descriptor of the scan */
 	AttInMetadata *attinmeta;	/* attribute datatype conversion metadata */
 
 	/* extracted fdw_private data */
@@ -194,6 +167,8 @@ typedef struct PgFdwAnalyzeState
 	AttInMetadata *attinmeta;	/* attribute datatype conversion metadata */
 	List	   *retrieved_attrs;	/* attr numbers retrieved by query */
 
+	char	   *query;			/* text of SELECT command */
+
 	/* collected sample rows */
 	HeapTuple  *rows;			/* array of size targrows */
 	int			targrows;		/* target # of sample rows */
@@ -214,7 +189,10 @@ typedef struct PgFdwAnalyzeState
  */
 typedef struct ConversionLocation
 {
-	Relation	rel;			/* foreign table's relcache entry */
+	const char *relname;		/* name of relation being processed, or NULL for
+								   a foreign join */
+	const char *query;			/* query being processed */
+	TupleDesc	tupdesc;		/* tuple descriptor for attribute names */
 	AttrNumber	cur_attno;		/* attribute number being processed, or 0 */
 } ConversionLocation;
 
@@ -288,6 +266,12 @@ static bool postgresAnalyzeForeignTable(Relation relation,
 							BlockNumber *totalpages);
 static List *postgresImportForeignSchema(ImportForeignSchemaStmt *stmt,
 							Oid serverOid);
+static void postgresGetForeignJoinPaths(PlannerInfo *root,
+						   RelOptInfo *joinrel,
+						   RelOptInfo *outerrel,
+						   RelOptInfo *innerrel,
+						   SpecialJoinInfo *sjinfo,
+						   List *restrictlisti);
 
 /*
  * Helper functions
@@ -323,12 +307,40 @@ static void analyze_row_processor(PGresult *res, int row,
 					  PgFdwAnalyzeState *astate);
 static HeapTuple make_tuple_from_result_row(PGresult *res,
 						   int row,
-						   Relation rel,
+						   const char *relname,
+						   const char *query,
+						   TupleDesc tupdesc,
 						   AttInMetadata *attinmeta,
 						   List *retrieved_attrs,
 						   MemoryContext temp_context);
 static void conversion_error_callback(void *arg);
 
+/*
+ * Describe Bitmapset as comma-separated integer list.
+ * For debug purpose.
+ * XXX Can this become a member of bitmapset.c?
+ */
+static char *
+bms_to_str(Bitmapset *bmp)
+{
+	StringInfoData buf;
+	bool		first = true;
+	int			x;
+
+	initStringInfo(&buf);
+
+	x = -1;
+	while ((x = bms_next_member(bmp, x)) >= 0)
+	{
+		if (!first)
+			appendStringInfoString(&buf, ", ");
+		appendStringInfo(&buf, "%d", x);
+
+		first = false;
+	}
+
+	return buf.data;
+}
 
 /*
  * Foreign-data wrapper handler function: return a struct with pointers
@@ -368,6 +380,9 @@ postgres_fdw_handler(PG_FUNCTION_ARGS)
 	/* Support functions for IMPORT FOREIGN SCHEMA */
 	routine->ImportForeignSchema = postgresImportForeignSchema;
 
+	/* Support functions for join push-down */
+	routine->GetForeignJoinPaths = postgresGetForeignJoinPaths;
+
 	PG_RETURN_POINTER(routine);
 }
 
@@ -383,7 +398,9 @@ postgresGetForeignRelSize(PlannerInfo *root,
 						  RelOptInfo *baserel,
 						  Oid foreigntableid)
 {
+	RangeTblEntry *rte;
 	PgFdwRelationInfo *fpinfo;
+	ForeignTable *table;
 	ListCell   *lc;
 
 	/*
@@ -394,8 +411,8 @@ postgresGetForeignRelSize(PlannerInfo *root,
 	baserel->fdw_private = (void *) fpinfo;
 
 	/* Look up foreign-table catalog info. */
-	fpinfo->table = GetForeignTable(foreigntableid);
-	fpinfo->server = GetForeignServer(fpinfo->table->serverid);
+	table = GetForeignTable(foreigntableid);
+	fpinfo->server = GetForeignServer(table->serverid);
 
 	/*
 	 * Extract user-settable option values.  Note that per-table setting of
@@ -416,7 +433,7 @@ postgresGetForeignRelSize(PlannerInfo *root,
 		else if (strcmp(def->defname, "fdw_tuple_cost") == 0)
 			fpinfo->fdw_tuple_cost = strtod(defGetString(def), NULL);
 	}
-	foreach(lc, fpinfo->table->options)
+	foreach(lc, table->options)
 	{
 		DefElem    *def = (DefElem *) lfirst(lc);
 
@@ -428,20 +445,12 @@ postgresGetForeignRelSize(PlannerInfo *root,
 	}
 
 	/*
-	 * If the table or the server is configured to use remote estimates,
-	 * identify which user to do remote access as during planning.  This
+	 * Identify which user to do remote access as during planning.  This
 	 * should match what ExecCheckRTEPerms() does.  If we fail due to lack of
 	 * permissions, the query would have failed at runtime anyway.
 	 */
-	if (fpinfo->use_remote_estimate)
-	{
-		RangeTblEntry *rte = planner_rt_fetch(baserel->relid, root);
-		Oid			userid = rte->checkAsUser ? rte->checkAsUser : GetUserId();
-
-		fpinfo->user = GetUserMapping(userid, fpinfo->server->serverid);
-	}
-	else
-		fpinfo->user = NULL;
+	rte = planner_rt_fetch(baserel->relid, root);
+	fpinfo->userid = rte->checkAsUser ? rte->checkAsUser : GetUserId();
 
 	/*
 	 * Identify which baserestrictinfo clauses can be sent to the remote
@@ -463,10 +472,9 @@ postgresGetForeignRelSize(PlannerInfo *root,
 				   &fpinfo->attrs_used);
 	foreach(lc, fpinfo->local_conds)
 	{
-		RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc);
+		Expr *expr = (Expr *) lfirst(lc);
 
-		pull_varattnos((Node *) rinfo->clause, baserel->relid,
-					   &fpinfo->attrs_used);
+		pull_varattnos((Node *) expr, baserel->relid, &fpinfo->attrs_used);
 	}
 
 	/*
@@ -752,6 +760,9 @@ postgresGetForeignPlan(PlannerInfo *root,
 	List	   *retrieved_attrs;
 	StringInfoData sql;
 	ListCell   *lc;
+	List	   *fdw_ps_tlist = NIL;
+	ForeignScan *scan;
+	StringInfoData relations;
 
 	/*
 	 * Separate the scan_clauses into those that can be executed remotely and
@@ -768,9 +779,6 @@ postgresGetForeignPlan(PlannerInfo *root,
 	 *
 	 * This code must match "extract_actual_clauses(scan_clauses, false)"
 	 * except for the additional decision about remote versus local execution.
-	 * Note however that we only strip the RestrictInfo nodes from the
-	 * local_exprs list, since appendWhereClause expects a list of
-	 * RestrictInfos.
 	 */
 	foreach(lc, scan_clauses)
 	{
@@ -783,82 +791,37 @@ postgresGetForeignPlan(PlannerInfo *root,
 			continue;
 
 		if (list_member_ptr(fpinfo->remote_conds, rinfo))
-			remote_conds = lappend(remote_conds, rinfo);
+			remote_conds = lappend(remote_conds, rinfo->clause);
 		else if (list_member_ptr(fpinfo->local_conds, rinfo))
 			local_exprs = lappend(local_exprs, rinfo->clause);
 		else if (is_foreign_expr(root, baserel, rinfo->clause))
-			remote_conds = lappend(remote_conds, rinfo);
+			remote_conds = lappend(remote_conds, rinfo->clause);
 		else
 			local_exprs = lappend(local_exprs, rinfo->clause);
 	}
 
 	/*
 	 * Build the query string to be sent for execution, and identify
-	 * expressions to be sent as parameters.
+	 * expressions to be sent as parameters.  If the relation to scan is a join
+	 * relation, receive constructed relations string from deparseSelectSql.
 	 */
 	initStringInfo(&sql);
-	deparseSelectSql(&sql, root, baserel, fpinfo->attrs_used,
-					 &retrieved_attrs);
-	if (remote_conds)
-		appendWhereClause(&sql, root, baserel, remote_conds,
-						  true, &params_list);
-
-	/*
-	 * Add FOR UPDATE/SHARE if appropriate.  We apply locking during the
-	 * initial row fetch, rather than later on as is done for local tables.
-	 * The extra roundtrips involved in trying to duplicate the local
-	 * semantics exactly don't seem worthwhile (see also comments for
-	 * RowMarkType).
-	 *
-	 * Note: because we actually run the query as a cursor, this assumes that
-	 * DECLARE CURSOR ... FOR UPDATE is supported, which it isn't before 8.3.
-	 */
-	if (baserel->relid == root->parse->resultRelation &&
-		(root->parse->commandType == CMD_UPDATE ||
-		 root->parse->commandType == CMD_DELETE))
-	{
-		/* Relation is UPDATE/DELETE target, so use FOR UPDATE */
-		appendStringInfoString(&sql, " FOR UPDATE");
-	}
-	else
-	{
-		PlanRowMark *rc = get_plan_rowmark(root->rowMarks, baserel->relid);
-
-		if (rc)
-		{
-			/*
-			 * Relation is specified as a FOR UPDATE/SHARE target, so handle
-			 * that.  (But we could also see LCS_NONE, meaning this isn't a
-			 * target relation after all.)
-			 *
-			 * For now, just ignore any [NO] KEY specification, since (a) it's
-			 * not clear what that means for a remote table that we don't have
-			 * complete information about, and (b) it wouldn't work anyway on
-			 * older remote servers.  Likewise, we don't worry about NOWAIT.
-			 */
-			switch (rc->strength)
-			{
-				case LCS_NONE:
-					/* No locking needed */
-					break;
-				case LCS_FORKEYSHARE:
-				case LCS_FORSHARE:
-					appendStringInfoString(&sql, " FOR SHARE");
-					break;
-				case LCS_FORNOKEYUPDATE:
-				case LCS_FORUPDATE:
-					appendStringInfoString(&sql, " FOR UPDATE");
-					break;
-			}
-		}
-	}
+	if (baserel->reloptkind == RELOPT_JOINREL)
+		initStringInfo(&relations);
+	deparseSelectSql(&sql, root, baserel, fpinfo->attrs_used, remote_conds,
+					 &params_list, &fdw_ps_tlist, &retrieved_attrs,
+					 baserel->reloptkind == RELOPT_JOINREL ? &relations : NULL);
 
 	/*
-	 * Build the fdw_private list that will be available to the executor.
+	 * Build the fdw_private list that will be available in the executor.
 	 * Items in the list must match enum FdwScanPrivateIndex, above.
 	 */
-	fdw_private = list_make2(makeString(sql.data),
-							 retrieved_attrs);
+	fdw_private = list_make4(makeString(sql.data),
+							 retrieved_attrs,
+							 makeInteger(fpinfo->server->serverid),
+							 makeInteger(fpinfo->userid));
+	if (baserel->reloptkind == RELOPT_JOINREL)
+		fdw_private = lappend(fdw_private, makeString(relations.data));
 
 	/*
 	 * Create the ForeignScan node from target list, local filtering
@@ -868,11 +831,18 @@ postgresGetForeignPlan(PlannerInfo *root,
 	 * field of the finished plan node; we can't keep them in private state
 	 * because then they wouldn't be subject to later planner processing.
 	 */
-	return make_foreignscan(tlist,
+	scan = make_foreignscan(tlist,
 							local_exprs,
 							scan_relid,
 							params_list,
 							fdw_private);
+
+	/*
+	 * set fdw_ps_tlist to handle tuples generated by this scan.
+	 */
+	scan->fdw_ps_tlist = fdw_ps_tlist;
+
+	return scan;
 }
 
 /*
@@ -885,9 +855,8 @@ postgresBeginForeignScan(ForeignScanState *node, int eflags)
 	ForeignScan *fsplan = (ForeignScan *) node->ss.ps.plan;
 	EState	   *estate = node->ss.ps.state;
 	PgFdwScanState *fsstate;
-	RangeTblEntry *rte;
+	Oid			serverid;
 	Oid			userid;
-	ForeignTable *table;
 	ForeignServer *server;
 	UserMapping *user;
 	int			numParams;
@@ -907,22 +876,13 @@ postgresBeginForeignScan(ForeignScanState *node, int eflags)
 	node->fdw_state = (void *) fsstate;
 
 	/*
-	 * Identify which user to do the remote access as.  This should match what
-	 * ExecCheckRTEPerms() does.
-	 */
-	rte = rt_fetch(fsplan->scan.scanrelid, estate->es_range_table);
-	userid = rte->checkAsUser ? rte->checkAsUser : GetUserId();
-
-	/* Get info about foreign table. */
-	fsstate->rel = node->ss.ss_currentRelation;
-	table = GetForeignTable(RelationGetRelid(fsstate->rel));
-	server = GetForeignServer(table->serverid);
-	user = GetUserMapping(userid, server->serverid);
-
-	/*
 	 * Get connection to the foreign server.  Connection manager will
 	 * establish new connection if necessary.
 	 */
+	serverid = intVal(list_nth(fsplan->fdw_private, FdwScanPrivateServerOid));
+	userid = intVal(list_nth(fsplan->fdw_private, FdwScanPrivateUserOid));
+	server = GetForeignServer(serverid);
+	user = GetUserMapping(userid, server->serverid);
 	fsstate->conn = GetConnection(server, user, false);
 
 	/* Assign a unique ID for my cursor */
@@ -932,8 +892,8 @@ postgresBeginForeignScan(ForeignScanState *node, int eflags)
 	/* Get private info created by planner functions. */
 	fsstate->query = strVal(list_nth(fsplan->fdw_private,
 									 FdwScanPrivateSelectSql));
-	fsstate->retrieved_attrs = (List *) list_nth(fsplan->fdw_private,
-											   FdwScanPrivateRetrievedAttrs);
+	fsstate->retrieved_attrs = list_nth(fsplan->fdw_private,
+										FdwScanPrivateRetrievedAttrs);
 
 	/* Create contexts for batches of tuples and per-tuple temp workspace. */
 	fsstate->batch_cxt = AllocSetContextCreate(estate->es_query_cxt,
@@ -947,8 +907,18 @@ postgresBeginForeignScan(ForeignScanState *node, int eflags)
 											  ALLOCSET_SMALL_INITSIZE,
 											  ALLOCSET_SMALL_MAXSIZE);
 
-	/* Get info we'll need for input data conversion. */
-	fsstate->attinmeta = TupleDescGetAttInMetadata(RelationGetDescr(fsstate->rel));
+	/* Get info we'll need for input data conversion and error report. */
+	if (fsplan->scan.scanrelid > 0)
+	{
+		fsstate->relname = RelationGetRelationName(node->ss.ss_currentRelation);
+		fsstate->tupdesc = RelationGetDescr(node->ss.ss_currentRelation);
+	}
+	else
+	{
+		fsstate->relname = NULL;
+		fsstate->tupdesc = node->ss.ss_ScanTupleSlot->tts_tupleDescriptor;
+	}
+	fsstate->attinmeta = TupleDescGetAttInMetadata(fsstate->tupdesc);
 
 	/* Prepare for output conversion of parameters used in remote query. */
 	numParams = list_length(fsplan->fdw_exprs);
@@ -1664,10 +1634,25 @@ postgresExplainForeignScan(ForeignScanState *node, ExplainState *es)
 {
 	List	   *fdw_private;
 	char	   *sql;
+	char	   *relations;
 
+	fdw_private = ((ForeignScan *) node->ss.ps.plan)->fdw_private;
+
+	/*
+	 * Add names of relation handled by the foreign scan when the scan is a
+	 * join
+	 */
+	if (list_length(fdw_private) > FdwScanPrivateRelations)
+	{
+		relations = strVal(list_nth(fdw_private, FdwScanPrivateRelations));
+		ExplainPropertyText("Relations", relations, es);
+	}
+
+	/*
+	 * Add remote query, when VERBOSE option is specified.
+	 */
 	if (es->verbose)
 	{
-		fdw_private = ((ForeignScan *) node->ss.ps.plan)->fdw_private;
 		sql = strVal(list_nth(fdw_private, FdwScanPrivateSelectSql));
 		ExplainPropertyText("Remote SQL", sql, es);
 	}
@@ -1726,10 +1711,12 @@ estimate_path_cost_size(PlannerInfo *root,
 	 */
 	if (fpinfo->use_remote_estimate)
 	{
+		List	   *remote_conds;
 		List	   *remote_join_conds;
 		List	   *local_join_conds;
-		StringInfoData sql;
 		List	   *retrieved_attrs;
+		StringInfoData sql;
+		UserMapping *user;
 		PGconn	   *conn;
 		Selectivity local_sel;
 		QualCost	local_cost;
@@ -1741,24 +1728,24 @@ estimate_path_cost_size(PlannerInfo *root,
 		classifyConditions(root, baserel, join_conds,
 						   &remote_join_conds, &local_join_conds);
 
+		remote_conds = copyObject(fpinfo->remote_conds);
+		remote_conds = list_concat(remote_conds, remote_join_conds);
+
 		/*
 		 * Construct EXPLAIN query including the desired SELECT, FROM, and
 		 * WHERE clauses.  Params and other-relation Vars are replaced by
 		 * dummy values.
+		 * Here we waste params_list and fdw_ps_tlist because they are
+		 * unnecessary for EXPLAIN.
 		 */
 		initStringInfo(&sql);
 		appendStringInfoString(&sql, "EXPLAIN ");
-		deparseSelectSql(&sql, root, baserel, fpinfo->attrs_used,
-						 &retrieved_attrs);
-		if (fpinfo->remote_conds)
-			appendWhereClause(&sql, root, baserel, fpinfo->remote_conds,
-							  true, NULL);
-		if (remote_join_conds)
-			appendWhereClause(&sql, root, baserel, remote_join_conds,
-							  (fpinfo->remote_conds == NIL), NULL);
+		deparseSelectSql(&sql, root, baserel, fpinfo->attrs_used, remote_conds,
+						 NULL, NULL, &retrieved_attrs, NULL);
 
 		/* Get the remote estimate */
-		conn = GetConnection(fpinfo->server, fpinfo->user, false);
+		user = GetUserMapping(fpinfo->userid, fpinfo->server->serverid);
+		conn = GetConnection(fpinfo->server, user, false);
 		get_remote_estimate(sql.data, conn, &rows, &width,
 							&startup_cost, &total_cost);
 		ReleaseConnection(conn);
@@ -2055,7 +2042,9 @@ fetch_more_data(ForeignScanState *node)
 		{
 			fsstate->tuples[i] =
 				make_tuple_from_result_row(res, i,
-										   fsstate->rel,
+										   fsstate->relname,
+										   fsstate->query,
+										   fsstate->tupdesc,
 										   fsstate->attinmeta,
 										   fsstate->retrieved_attrs,
 										   fsstate->temp_cxt);
@@ -2273,7 +2262,9 @@ store_returning_result(PgFdwModifyState *fmstate,
 		HeapTuple	newtup;
 
 		newtup = make_tuple_from_result_row(res, 0,
-											fmstate->rel,
+										RelationGetRelationName(fmstate->rel),
+											fmstate->query,
+											RelationGetDescr(fmstate->rel),
 											fmstate->attinmeta,
 											fmstate->retrieved_attrs,
 											fmstate->temp_cxt);
@@ -2423,6 +2414,7 @@ postgresAcquireSampleRowsFunc(Relation relation, int elevel,
 	initStringInfo(&sql);
 	appendStringInfo(&sql, "DECLARE c%u CURSOR FOR ", cursor_number);
 	deparseAnalyzeSql(&sql, relation, &astate.retrieved_attrs);
+	astate.query = sql.data;
 
 	/* In what follows, do not risk leaking any PGresults. */
 	PG_TRY();
@@ -2565,7 +2557,9 @@ analyze_row_processor(PGresult *res, int row, PgFdwAnalyzeState *astate)
 		oldcontext = MemoryContextSwitchTo(astate->anl_cxt);
 
 		astate->rows[pos] = make_tuple_from_result_row(res, row,
-													   astate->rel,
+										   RelationGetRelationName(astate->rel),
+													   astate->query,
+											   RelationGetDescr(astate->rel),
 													   astate->attinmeta,
 													 astate->retrieved_attrs,
 													   astate->temp_cxt);
@@ -2839,6 +2833,269 @@ postgresImportForeignSchema(ImportForeignSchemaStmt *stmt, Oid serverOid)
 }
 
 /*
+ * Construct PgFdwRelationInfo from two join sources
+ */
+static PgFdwRelationInfo *
+merge_fpinfo(RelOptInfo *outerrel,
+			 RelOptInfo *innerrel,
+			 JoinType jointype,
+			 double rows,
+			 int width)
+{
+	PgFdwRelationInfo *fpinfo_o;
+	PgFdwRelationInfo *fpinfo_i;
+	PgFdwRelationInfo *fpinfo;
+
+	fpinfo_o = (PgFdwRelationInfo *) outerrel->fdw_private;
+	fpinfo_i = (PgFdwRelationInfo *) innerrel->fdw_private;
+
+	fpinfo = (PgFdwRelationInfo *) palloc0(sizeof(PgFdwRelationInfo));
+
+	/* Join relation must have conditions come from sources */
+	fpinfo->remote_conds = list_concat(copyObject(fpinfo_o->remote_conds),
+									   copyObject(fpinfo_i->remote_conds));
+	fpinfo->local_conds = list_concat(copyObject(fpinfo_o->local_conds),
+									  copyObject(fpinfo_i->local_conds));
+
+	/* Only for simple foreign table scan */
+	fpinfo->attrs_used = NULL;
+
+	/* rows and width will be set later */
+	fpinfo->rows = rows;
+	fpinfo->width = width;
+
+	/* A join have local conditions for outer and inner, so sum up them. */
+	fpinfo->local_conds_cost.startup = fpinfo_o->local_conds_cost.startup +
+									   fpinfo_i->local_conds_cost.startup;
+	fpinfo->local_conds_cost.per_tuple = fpinfo_o->local_conds_cost.per_tuple +
+										 fpinfo_i->local_conds_cost.per_tuple;
+
+	/* Don't consider correlation between local filters. */
+	fpinfo->local_conds_sel = fpinfo_o->local_conds_sel *
+							  fpinfo_i->local_conds_sel;
+
+	fpinfo->use_remote_estimate = false;
+
+	/*
+	 * These two comes default or per-server setting, so outer and inner must
+	 * have same value.
+	 */
+	fpinfo->fdw_startup_cost = fpinfo_o->fdw_startup_cost;
+	fpinfo->fdw_tuple_cost = fpinfo_o->fdw_tuple_cost;
+
+	/*
+	 * TODO estimate more accurately
+	 */
+	fpinfo->startup_cost = fpinfo->fdw_startup_cost +
+						   fpinfo->local_conds_cost.startup;
+	fpinfo->total_cost = fpinfo->startup_cost +
+						 (fpinfo->fdw_tuple_cost +
+						  fpinfo->local_conds_cost.per_tuple +
+						  cpu_tuple_cost) * fpinfo->rows;
+
+	/* serverid and userid are respectively identical */
+	fpinfo->server = fpinfo_o->server;
+	fpinfo->userid = fpinfo_o->userid;
+
+	fpinfo->outerrel = outerrel;
+	fpinfo->innerrel = innerrel;
+	fpinfo->jointype = jointype;
+
+	/* joinclauses and otherclauses will be set later */
+
+	return fpinfo;
+}
+
+/*
+ * postgresGetForeignJoinPaths
+ *		Add possible ForeignPath to joinrel.
+ *
+ * Joins satisfy conditions below can be pushed down to the remote PostgreSQL
+ * server.
+ *
+ * 1) Join type is INNER or OUTER (one of LEFT/RIGHT/FULL)
+ * 2) Both outer and inner portions are safe to push-down
+ * 3) All foreign tables in the join belong to the same foreign server
+ * 4) All foreign tables are accessed with identical user
+ * 5) All join conditions are safe to push down
+ * 6) No relation has local filter (this can be relaxed for INNER JOIN with
+ * no volatile function/operator, but as of now we want safer way)
+ */
+static void
+postgresGetForeignJoinPaths(PlannerInfo *root,
+							RelOptInfo *joinrel,
+							RelOptInfo *outerrel,
+							RelOptInfo *innerrel,
+							SpecialJoinInfo *sjinfo,
+							List *restrictlist)
+{
+	PgFdwRelationInfo *fpinfo;
+	PgFdwRelationInfo *fpinfo_o;
+	PgFdwRelationInfo *fpinfo_i;
+	JoinType		jointype = !sjinfo ? JOIN_INNER : sjinfo->jointype;
+	ForeignPath	   *joinpath;
+	double			rows;
+	Cost			startup_cost;
+	Cost			total_cost;
+
+	ListCell	   *lc;
+	List		   *joinclauses;
+	List		   *otherclauses;
+
+	/*
+	 * We support all outer joins in addition to inner join.  CROSS JOIN is
+	 * an INNER JOIN with no conditions internally, so will be checked later.
+	 */
+	if (jointype != JOIN_INNER && jointype != JOIN_LEFT &&
+		jointype != JOIN_RIGHT && jointype != JOIN_FULL)
+	{
+		ereport(DEBUG3, (errmsg("unsupported join type (SEMI, ANTI)")));
+		return;
+	}
+
+	/*
+	 * Having valid PgFdwRelationInfo in RelOptInfo#fdw_private indicates that
+	 * scanning against the relation can be pushed down.  If either of them
+	 * doesn't have PgFdwRelationInfo, give up to push down this join relation.
+	 */
+	if (!outerrel->fdw_private)
+	{
+		ereport(DEBUG3, (errmsg("outer is not safe to push-down")));
+		return;
+	}
+	if (!innerrel->fdw_private)
+	{
+		ereport(DEBUG3, (errmsg("inner is not safe to push-down")));
+		return;
+	}
+	fpinfo_o = (PgFdwRelationInfo *) outerrel->fdw_private;
+	fpinfo_i = (PgFdwRelationInfo *) innerrel->fdw_private;
+
+	/*
+	 * All relations in the join must belong to same server.  Having a valid
+	 * fdw_private means that all relations in the relations belong to the
+	 * server the fdw_private has, so what we should do is just compare
+	 * serverid of outer/inner relations.
+	 */
+	if (fpinfo_o->server->serverid != fpinfo_i->server->serverid)
+	{
+		ereport(DEBUG3, (errmsg("server unmatch")));
+		return;
+	}
+
+	/*
+	 * effective userid of all source relations should be identical.
+	 * Having a valid fdw_private means that all relations in the relations is
+	 * accessed with identical user, so what we should do is just compare
+	 * userid of outer/inner relations.
+	 */
+	if (fpinfo_o->userid != fpinfo_i->userid)
+	{
+		ereport(DEBUG3, (errmsg("unmatch userid")));
+		return;
+	}
+
+	/*
+	 * No source relation can have local conditions.  This can be relaxed
+	 * if the join is an inner join and local conditions don't contain
+	 * volatile function/operator, but as of now we leave it as future
+	 * enhancement.
+	 */
+	if (fpinfo_o->local_conds != NULL || fpinfo_i->local_conds != NULL)
+	{
+		ereport(DEBUG3, (errmsg("join with local filter")));
+		return;
+	}
+
+	/*
+	 * Separate restrictlist into two lists, join conditions and remote filters.
+	 */
+	joinclauses = restrictlist;
+	if (IS_OUTER_JOIN(jointype))
+	{
+		extract_actual_join_clauses(joinclauses, &joinclauses, &otherclauses);
+	}
+	else
+	{
+		joinclauses = extract_actual_clauses(joinclauses, false);
+		otherclauses = NIL;
+	}
+
+	/*
+	 * Note that CROSS JOIN (cartesian product) is transformed to JOIN_INNER
+	 * with empty joinclauses.  Pushing down CROSS JOIN usually produces more
+	 * result than retrieving each tables separately, so we don't push down
+	 * such joins.
+	 */
+	if (jointype == JOIN_INNER && joinclauses == NIL)
+	{
+		ereport(DEBUG3, (errmsg("unsupported join type (CROSS)")));
+		return;
+	}
+
+	/*
+	 * Join condition must be safe to push down.
+	 */
+	foreach(lc, joinclauses)
+	{
+		Expr *expr = (Expr *) lfirst(lc);
+
+		if (!is_foreign_expr(root, joinrel, expr))
+		{
+			ereport(DEBUG3, (errmsg("join quals contains unsafe conditions")));
+			return;
+		}
+	}
+
+	/*
+	 * Other condition for the join must be safe to push down.
+	 */
+	foreach(lc, otherclauses)
+	{
+		Expr *expr = (Expr *) lfirst(lc);
+
+		if (!is_foreign_expr(root, joinrel, expr))
+		{
+			ereport(DEBUG3, (errmsg("filter contains unsafe conditions")));
+			return;
+		}
+	}
+
+	/* Here we know that this join can be pushed-down to remote side. */
+
+	/* Construct fpinfo for the join relation */
+	fpinfo = merge_fpinfo(outerrel, innerrel, jointype, joinrel->rows, joinrel->width); 
+	fpinfo->joinclauses = joinclauses;
+	fpinfo->otherclauses = otherclauses;
+	joinrel->fdw_private = fpinfo;
+
+	/* TODO determine more accurate cost and rows of the join. */
+	rows = joinrel->rows;
+	startup_cost = fpinfo->startup_cost;
+	total_cost = fpinfo->total_cost;
+
+	/*
+	 * Create a new join path and add it to the joinrel which represents a join
+	 * between foreign tables.
+	 */
+	joinpath = create_foreignscan_path(root,
+									   joinrel,
+									   rows,
+									   startup_cost,
+									   total_cost,
+									   NIL,		/* no pathkeys */
+									   NULL,	/* no required_outer */
+									   NIL);	/* no fdw_private */
+
+	/* Add generated path into joinrel by add_path(). */
+	add_path(joinrel, (Path *) joinpath);
+	elog(DEBUG3, "join path added for (%s) join (%s)",
+		 bms_to_str(outerrel->relids), bms_to_str(innerrel->relids));
+
+	/* TODO consider parameterized paths */
+}
+
+/*
  * Create a tuple from the specified row of the PGresult.
  *
  * rel is the local representation of the foreign table, attinmeta is
@@ -2849,13 +3106,14 @@ postgresImportForeignSchema(ImportForeignSchemaStmt *stmt, Oid serverOid)
 static HeapTuple
 make_tuple_from_result_row(PGresult *res,
 						   int row,
-						   Relation rel,
+						   const char *relname,
+						   const char *query,
+						   TupleDesc tupdesc,
 						   AttInMetadata *attinmeta,
 						   List *retrieved_attrs,
 						   MemoryContext temp_context)
 {
 	HeapTuple	tuple;
-	TupleDesc	tupdesc = RelationGetDescr(rel);
 	Datum	   *values;
 	bool	   *nulls;
 	ItemPointer ctid = NULL;
@@ -2882,7 +3140,9 @@ make_tuple_from_result_row(PGresult *res,
 	/*
 	 * Set up and install callback to report where conversion error occurs.
 	 */
-	errpos.rel = rel;
+	errpos.relname = relname;
+	errpos.query = query;
+	errpos.tupdesc = tupdesc;
 	errpos.cur_attno = 0;
 	errcallback.callback = conversion_error_callback;
 	errcallback.arg = (void *) &errpos;
@@ -2966,11 +3226,39 @@ make_tuple_from_result_row(PGresult *res,
 static void
 conversion_error_callback(void *arg)
 {
+	const char *attname;
+	const char *relname;
 	ConversionLocation *errpos = (ConversionLocation *) arg;
-	TupleDesc	tupdesc = RelationGetDescr(errpos->rel);
+	TupleDesc	tupdesc = errpos->tupdesc;
+	StringInfoData buf;
+
+	if (errpos->relname)
+	{
+		/* error occurred in a scan against a foreign table */ 
+		initStringInfo(&buf);
+		if (errpos->cur_attno > 0)
+			appendStringInfo(&buf, "column \"%s\"",
+					 NameStr(tupdesc->attrs[errpos->cur_attno - 1]->attname));
+		else if (errpos->cur_attno == SelfItemPointerAttributeNumber)
+			appendStringInfoString(&buf, "column \"ctid\"");
+		attname = buf.data;
+
+		initStringInfo(&buf);
+		appendStringInfo(&buf, "foreign table \"%s\"", errpos->relname);
+		relname = buf.data;
+	}
+	else
+	{
+		/* error occurred in a scan against a foreign join */ 
+		initStringInfo(&buf);
+		appendStringInfo(&buf, "column %d", errpos->cur_attno - 1);
+		attname = buf.data;
+
+		initStringInfo(&buf);
+		appendStringInfo(&buf, "foreign join \"%s\"", errpos->query);
+		relname = buf.data;
+	}
 
 	if (errpos->cur_attno > 0 && errpos->cur_attno <= tupdesc->natts)
-		errcontext("column \"%s\" of foreign table \"%s\"",
-				   NameStr(tupdesc->attrs[errpos->cur_attno - 1]->attname),
-				   RelationGetRelationName(errpos->rel));
+		errcontext("%s of %s", attname, relname);
 }
diff --git a/contrib/postgres_fdw/postgres_fdw.h b/contrib/postgres_fdw/postgres_fdw.h
index 950c6f7..d6b16d8 100644
--- a/contrib/postgres_fdw/postgres_fdw.h
+++ b/contrib/postgres_fdw/postgres_fdw.h
@@ -16,10 +16,52 @@
 #include "foreign/foreign.h"
 #include "lib/stringinfo.h"
 #include "nodes/relation.h"
+#include "nodes/plannodes.h"
 #include "utils/relcache.h"
 
 #include "libpq-fe.h"
 
+/*
+ * FDW-specific planner information kept in RelOptInfo.fdw_private for a
+ * foreign table or a foreign join.  This information is collected by
+ * postgresGetForeignRelSize, or calculated from join source relations.
+ */
+typedef struct PgFdwRelationInfo
+{
+	/* baserestrictinfo clauses, broken down into safe and unsafe subsets. */
+	List	   *remote_conds;
+	List	   *local_conds;
+
+	/* Bitmap of attr numbers we need to fetch from the remote server. */
+	Bitmapset  *attrs_used;
+
+	/* Cost and selectivity of local_conds. */
+	QualCost	local_conds_cost;
+	Selectivity local_conds_sel;
+
+	/* Estimated size and cost for a scan with baserestrictinfo quals. */
+	double		rows;
+	int			width;
+	Cost		startup_cost;
+	Cost		total_cost;
+
+	/* Options extracted from catalogs. */
+	bool		use_remote_estimate;
+	Cost		fdw_startup_cost;
+	Cost		fdw_tuple_cost;
+
+	/* Cached catalog information. */
+	ForeignServer *server;
+	Oid			userid;
+
+	/* Join information */
+	RelOptInfo *outerrel;
+	RelOptInfo *innerrel;
+	JoinType	jointype;
+	List	   *joinclauses;
+	List	   *otherclauses;
+} PgFdwRelationInfo;
+
 /* in postgres_fdw.c */
 extern int	set_transmission_modes(void);
 extern void reset_transmission_modes(int nestlevel);
@@ -51,13 +93,31 @@ extern void deparseSelectSql(StringInfo buf,
 				 PlannerInfo *root,
 				 RelOptInfo *baserel,
 				 Bitmapset *attrs_used,
-				 List **retrieved_attrs);
-extern void appendWhereClause(StringInfo buf,
+				 List *remote_conds,
+				 List **params_list,
+				 List **fdw_ps_tlist,
+				 List **retrieved_attrs,
+				 StringInfo relations);
+extern void appendConditions(StringInfo buf,
 				  PlannerInfo *root,
 				  RelOptInfo *baserel,
+				  List *outertlist,
+				  List *innertlist,
 				  List *exprs,
-				  bool is_first,
+				  const char *prefix,
 				  List **params);
+extern void deparseJoinSql(StringInfo sql,
+			   PlannerInfo *root,
+			   RelOptInfo *baserel,
+			   RelOptInfo *outerrel,
+			   RelOptInfo *innerrel,
+			   const char *sql_o,
+			   const char *sql_i,
+			   JoinType jointype,
+			   List *joinclauses,
+			   List *otherclauses,
+			   List **fdw_ps_tlist,
+			   List **retrieved_attrs);
 extern void deparseInsertSql(StringInfo buf, PlannerInfo *root,
 				 Index rtindex, Relation rel,
 				 List *targetAttrs, List *returningList,
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index 4a23457..b0c9a8d 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -11,12 +11,17 @@ DO $d$
             OPTIONS (dbname '$$||current_database()||$$',
                      port '$$||current_setting('port')||$$'
             )$$;
+        EXECUTE $$CREATE SERVER loopback2 FOREIGN DATA WRAPPER postgres_fdw
+            OPTIONS (dbname '$$||current_database()||$$',
+                     port '$$||current_setting('port')||$$'
+            )$$;
     END;
 $d$;
 
 CREATE USER MAPPING FOR public SERVER testserver1
 	OPTIONS (user 'value', password 'value');
 CREATE USER MAPPING FOR CURRENT_USER SERVER loopback;
+CREATE USER MAPPING FOR CURRENT_USER SERVER loopback2;
 
 -- ===================================================================
 -- create objects used through FDW loopback server
@@ -39,6 +44,18 @@ CREATE TABLE "S 1"."T 2" (
 	c2 text,
 	CONSTRAINT t2_pkey PRIMARY KEY (c1)
 );
+CREATE TABLE "S 1"."T 3" (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c3 text,
+	CONSTRAINT t3_pkey PRIMARY KEY (c1)
+);
+CREATE TABLE "S 1"."T 4" (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c4 text,
+	CONSTRAINT t4_pkey PRIMARY KEY (c1)
+);
 
 INSERT INTO "S 1"."T 1"
 	SELECT id,
@@ -54,9 +71,23 @@ INSERT INTO "S 1"."T 2"
 	SELECT id,
 	       'AAA' || to_char(id, 'FM000')
 	FROM generate_series(1, 100) id;
+INSERT INTO "S 1"."T 3"
+	SELECT id,
+	       id + 1,
+	       'AAA' || to_char(id, 'FM000')
+	FROM generate_series(1, 100) id;
+DELETE FROM "S 1"."T 3" WHERE c1 % 2 != 0;	-- delete for outer join tests
+INSERT INTO "S 1"."T 4"
+	SELECT id,
+	       id + 1,
+	       'AAA' || to_char(id, 'FM000')
+	FROM generate_series(1, 100) id;
+DELETE FROM "S 1"."T 4" WHERE c1 % 3 != 0;	-- delete for outer join tests
 
 ANALYZE "S 1"."T 1";
 ANALYZE "S 1"."T 2";
+ANALYZE "S 1"."T 3";
+ANALYZE "S 1"."T 4";
 
 -- ===================================================================
 -- create foreign tables
@@ -87,6 +118,29 @@ CREATE FOREIGN TABLE ft2 (
 ) SERVER loopback;
 ALTER FOREIGN TABLE ft2 DROP COLUMN cx;
 
+CREATE FOREIGN TABLE ft4 (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c3 text
+) SERVER loopback OPTIONS (schema_name 'S 1', table_name 'T 3');
+
+CREATE FOREIGN TABLE ft5 (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c3 text
+) SERVER loopback OPTIONS (schema_name 'S 1', table_name 'T 4');
+
+CREATE FOREIGN TABLE ft6 (
+	c1 int NOT NULL,
+	c2 int NOT NULL,
+	c3 text
+) SERVER loopback2 OPTIONS (schema_name 'S 1', table_name 'T 4');
+CREATE USER view_owner;
+GRANT ALL ON ft5 TO view_owner;
+CREATE VIEW v_ft5 AS SELECT * FROM ft5;
+ALTER VIEW v_ft5 OWNER TO view_owner;
+CREATE USER MAPPING FOR view_owner SERVER loopback;
+
 -- ===================================================================
 -- tests for validator
 -- ===================================================================
@@ -158,8 +212,6 @@ EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = 102 FOR SHARE;
 SELECT * FROM ft1 t1 WHERE c1 = 102 FOR SHARE;
 -- aggregate
 SELECT COUNT(*) FROM ft1 t1;
--- join two tables
-SELECT t1.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
 -- subquery
 SELECT * FROM ft1 t1 WHERE t1.c3 IN (SELECT c3 FROM ft2 t2 WHERE c1 <= 10) ORDER BY c1;
 -- subquery+MAX
@@ -216,6 +268,82 @@ SELECT * FROM ft1 WHERE c1 = ANY (ARRAY(SELECT c1 FROM ft2 WHERE c1 < 5));
 SELECT * FROM ft2 WHERE c1 = ANY (ARRAY(SELECT c1 FROM ft1 WHERE c1 < 5));
 
 -- ===================================================================
+-- JOIN queries
+-- ===================================================================
+-- join two tables
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+-- join three tables
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c2, t3.c3 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) JOIN ft4 t3 ON (t3.c1 = t1.c1) ORDER BY t1.c3, t1.c1 OFFSET 10 LIMIT 10;
+SELECT t1.c1, t2.c2, t3.c3 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) JOIN ft4 t3 ON (t3.c1 = t1.c1) ORDER BY t1.c3, t1.c1 OFFSET 10 LIMIT 10;
+-- left outer join
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 LEFT JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft4 t1 LEFT JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+-- right outer join
+SET enable_mergejoin = off; -- planner choose MergeJoin even it has higher costs, so disable it for testing.
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 RIGHT JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t2.c1, t2.c1 OFFSET 10 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft4 t1 RIGHT JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t2.c1, t2.c1 OFFSET 10 LIMIT 10;
+SET enable_mergejoin = on;
+-- full outer join
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 45 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 45 LIMIT 10;
+-- full outer join + WHERE clause, only matched rows
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) WHERE (t1.c1 = t2.c1 OR t1.c1 IS NULL) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) WHERE (t1.c1 = t2.c1 OR t1.c1 IS NULL) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+-- join at WHERE clause 
+SET enable_mergejoin = off; -- planner choose MergeJoin even it has higher costs, so disable it for testing.
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft4 t1 LEFT JOIN ft5 t2 ON true WHERE (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft4 t1 LEFT JOIN ft5 t2 ON true WHERE (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10;
+SET enable_mergejoin = on;
+-- join in CTE
+EXPLAIN (COSTS false, VERBOSE)
+WITH t (c1_1, c1_3, c2_1) AS (SELECT t1.c1, t1.c3, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1)) SELECT c1_1, c2_1 FROM t ORDER BY c1_3, c1_1 OFFSET 100 LIMIT 10;
+WITH t (c1_1, c1_3, c2_1) AS (SELECT t1.c1, t1.c3, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1)) SELECT c1_1, c2_1 FROM t ORDER BY c1_3, c1_1 OFFSET 100 LIMIT 10;
+-- ctid with whole-row reference
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.ctid, t1, t2, t1.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+SELECT t1.ctid, t1, t2, t1.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+-- partially unsafe to push down, not pushed down
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1 FROM ft1 t1 JOIN ft2 t2 ON t2.c1 = t2.c1 JOIN ft4 t3 ON t2.c1 = t3.c1 ORDER BY t1.c1 OFFSET 10 LIMIT 10;
+SELECT t1.c1 FROM ft1 t1 JOIN ft2 t2 ON t2.c1 = t2.c1 JOIN ft4 t3 ON t2.c1 = t3.c1 ORDER BY t1.c1 OFFSET 10 LIMIT 10;
+-- SEMI JOIN, not pushed down
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1 FROM ft1 t1 WHERE EXISTS (SELECT 1 FROM ft2 t2 WHERE t1.c1 = t2.c1) ORDER BY t1.c1 OFFSET 100 LIMIT 10;
+SELECT t1.c1 FROM ft1 t1 WHERE EXISTS (SELECT 1 FROM ft2 t2 WHERE t1.c1 = t2.c1) ORDER BY t1.c1 OFFSET 100 LIMIT 10;
+-- ANTI JOIN, not pushed down
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1 FROM ft1 t1 WHERE NOT EXISTS (SELECT 1 FROM ft2 t2 WHERE t1.c1 = t2.c2) ORDER BY t1.c1 OFFSET 100 LIMIT 10;
+SELECT t1.c1 FROM ft1 t1 WHERE NOT EXISTS (SELECT 1 FROM ft2 t2 WHERE t1.c1 = t2.c2) ORDER BY t1.c1 OFFSET 100 LIMIT 10;
+-- CROSS JOIN, not pushed down
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft1 t1 CROSS JOIN ft2 t2 ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft1 t1 CROSS JOIN ft2 t2 ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+-- different server
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft5 t1 JOIN ft6 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft5 t1 JOIN ft6 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+-- different effective user for permission check
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft5 t1 JOIN v_ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft5 t1 JOIN v_ft5 t2 ON (t1.c1 = t2.c1) ORDER BY t1.c1, t2.c1 OFFSET 100 LIMIT 10;
+-- unsafe join conditions
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c8 = t2.c8) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c8 = t2.c8) ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+-- local filter (unsafe conditions on one side)
+EXPLAIN (COSTS false, VERBOSE)
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) WHERE t1.c8 = 'foo' ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+SELECT t1.c1, t2.c1 FROM ft1 t1 JOIN ft2 t2 ON (t1.c1 = t2.c1) WHERE t1.c8 = 'foo' ORDER BY t1.c3, t1.c1 OFFSET 100 LIMIT 10;
+
+-- ===================================================================
 -- parameterized queries
 -- ===================================================================
 -- simple join
@@ -666,116 +794,6 @@ UPDATE rem1 SET f2 = 'testo';
 INSERT INTO rem1(f2) VALUES ('test') RETURNING ctid;
 
 -- ===================================================================
--- test inheritance features
--- ===================================================================
-
-CREATE TABLE a (aa TEXT);
-CREATE TABLE loct (aa TEXT, bb TEXT);
-CREATE FOREIGN TABLE b (bb TEXT) INHERITS (a)
-  SERVER loopback OPTIONS (table_name 'loct');
-
-INSERT INTO a(aa) VALUES('aaa');
-INSERT INTO a(aa) VALUES('aaaa');
-INSERT INTO a(aa) VALUES('aaaaa');
-
-INSERT INTO b(aa) VALUES('bbb');
-INSERT INTO b(aa) VALUES('bbbb');
-INSERT INTO b(aa) VALUES('bbbbb');
-
-SELECT tableoid::regclass, * FROM a;
-SELECT tableoid::regclass, * FROM b;
-SELECT tableoid::regclass, * FROM ONLY a;
-
-UPDATE a SET aa = 'zzzzzz' WHERE aa LIKE 'aaaa%';
-
-SELECT tableoid::regclass, * FROM a;
-SELECT tableoid::regclass, * FROM b;
-SELECT tableoid::regclass, * FROM ONLY a;
-
-UPDATE b SET aa = 'new';
-
-SELECT tableoid::regclass, * FROM a;
-SELECT tableoid::regclass, * FROM b;
-SELECT tableoid::regclass, * FROM ONLY a;
-
-UPDATE a SET aa = 'newtoo';
-
-SELECT tableoid::regclass, * FROM a;
-SELECT tableoid::regclass, * FROM b;
-SELECT tableoid::regclass, * FROM ONLY a;
-
-DELETE FROM a;
-
-SELECT tableoid::regclass, * FROM a;
-SELECT tableoid::regclass, * FROM b;
-SELECT tableoid::regclass, * FROM ONLY a;
-
-DROP TABLE a CASCADE;
-DROP TABLE loct;
-
--- Check SELECT FOR UPDATE/SHARE with an inherited source table
-create table loct1 (f1 int, f2 int, f3 int);
-create table loct2 (f1 int, f2 int, f3 int);
-
-create table foo (f1 int, f2 int);
-create foreign table foo2 (f3 int) inherits (foo)
-  server loopback options (table_name 'loct1');
-create table bar (f1 int, f2 int);
-create foreign table bar2 (f3 int) inherits (bar)
-  server loopback options (table_name 'loct2');
-
-insert into foo values(1,1);
-insert into foo values(3,3);
-insert into foo2 values(2,2,2);
-insert into foo2 values(4,4,4);
-insert into bar values(1,11);
-insert into bar values(2,22);
-insert into bar values(6,66);
-insert into bar2 values(3,33,33);
-insert into bar2 values(4,44,44);
-insert into bar2 values(7,77,77);
-
-explain (verbose, costs off)
-select * from bar where f1 in (select f1 from foo) for update;
-select * from bar where f1 in (select f1 from foo) for update;
-
-explain (verbose, costs off)
-select * from bar where f1 in (select f1 from foo) for share;
-select * from bar where f1 in (select f1 from foo) for share;
-
--- Check UPDATE with inherited target and an inherited source table
-explain (verbose, costs off)
-update bar set f2 = f2 + 100 where f1 in (select f1 from foo);
-update bar set f2 = f2 + 100 where f1 in (select f1 from foo);
-
-select tableoid::regclass, * from bar order by 1,2;
-
--- Check UPDATE with inherited target and an appendrel subquery
-explain (verbose, costs off)
-update bar set f2 = f2 + 100
-from
-  ( select f1 from foo union all select f1+3 from foo ) ss
-where bar.f1 = ss.f1;
-update bar set f2 = f2 + 100
-from
-  ( select f1 from foo union all select f1+3 from foo ) ss
-where bar.f1 = ss.f1;
-
-select tableoid::regclass, * from bar order by 1,2;
-
--- Test that WHERE CURRENT OF is not supported
-begin;
-declare c cursor for select * from bar where f1 = 7;
-fetch from c;
-update bar set f2 = null where current of c;
-rollback;
-
-drop table foo cascade;
-drop table bar cascade;
-drop table loct1;
-drop table loct2;
-
--- ===================================================================
 -- test IMPORT FOREIGN SCHEMA
 -- ===================================================================
 
@@ -831,3 +849,7 @@ DROP TYPE "Colors" CASCADE;
 IMPORT FOREIGN SCHEMA import_source LIMIT TO (t5)
   FROM SERVER loopback INTO import_dest5;  -- ERROR
 ROLLBACK;
+
+-- Cleanup
+DROP OWNED BY view_owner;
+DROP USER view_owner;
diff --git a/doc/src/sgml/postgres-fdw.sgml b/doc/src/sgml/postgres-fdw.sgml
index 43adb61..fb39c38 100644
--- a/doc/src/sgml/postgres-fdw.sgml
+++ b/doc/src/sgml/postgres-fdw.sgml
@@ -406,11 +406,27 @@
   <title>Remote Query Optimization</title>
 
   <para>
-   <filename>postgres_fdw</> attempts to optimize remote queries to reduce
-   the amount of data transferred from foreign servers.  This is done by
-   sending query <literal>WHERE</> clauses to the remote server for
-   execution, and by not retrieving table columns that are not needed for
-   the current query.  To reduce the risk of misexecution of queries,
+   <filename>postgres_fdw</filename> attempts to optimize remote queries to
+   reduce the amount of data transferred from foreign servers.
+   This is done by various ways.
+  </para>
+
+  <para>
+   For <literal>SELECT</> clause, <filename>postgres_fdw</filename> sends only
+   actually necessary columns in it.
+  </para>
+
+  <para>
+   If <literal>FROM</> clause contains multiple foreign tables managed
+   by the same server and accessed with identical user,
+   <filename>postgres_fdw</> tries to join foreign tables on the remote side as
+   much as it can.
+   To reduce risk of misexecution of queries, <filename>postgres_fdw</>
+   gives up sending joins to remote when join conditions might have different
+   semantics on the remote side.
+  </para>
+
+  <para>
    <literal>WHERE</> clauses are not sent to the remote server unless they use
    only built-in data types, operators, and functions.  Operators and
    functions in the clauses must be <literal>IMMUTABLE</> as well.


^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
  2015-04-17 01:13 Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Kouhei Kaigai <[email protected]>
  2015-04-17 04:43 ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
@ 2015-04-22 10:28   ` Ashutosh Bapat <[email protected]>
  2015-04-24 09:38     ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
  2015-04-27 09:05     ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
  0 siblings, 2 replies; 973+ messages in thread

From: Ashutosh Bapat @ 2015-04-22 10:28 UTC (permalink / raw)
  To: Shigeru HANADA <[email protected]>; +Cc: Kouhei Kaigai <[email protected]>; Robert Haas <[email protected]>; Tom Lane <[email protected]>; Thom Brown <[email protected]>; pgsql-hackers

I reviewed the foreign_join_v13 patch. Here are my comments

Thanks for this work. It's good to see that the The foreign_join patch
includes extensive tests for postgres_fdw. Thanks for the same.

Sanity
---------
The patch foreign_join didn't get applied cleanly with "git apply" but got
applied using "patch". The patch has "trailing whitespace"s.

The patch compiles cleanly with pgsql-v9.5-custom-join.v11.patch.

make check in regress and postgres_fdw folders passes without any failures.

Tests
-------
1.The postgres_fdw test is re/setting enable_mergejoin at various places.
The goal of these tests seems to be to test the sanity of foreign plans
generated. So, it might be better to reset enable_mergejoin (and may be all
of enable_hashjoin, enable_nestloop_join etc.) to false at the beginning of
the testcase and set them again at the end. That way, we will also make
sure that foreign plans are chosen irrespective of future planner changes.
2. In the patch, I see that the inheritance testcases have been deleted
from postgres_fdw.sql, is that intentional? I do not see those being
replaced anywhere else.
3. We need one test for each join type (or at least for INNER and LEFT
OUTER) where there are unsafe to push conditions in ON clause along-with
safe-to-push conditions. For INNER join, the join should get pushed down
with the safe conditions and for OUTER join it shouldn't be. Same goes for
WHERE clause, in which case the join will be pushed down but the
unsafe-to-push conditions will be applied locally.
4. All the tests have ORDER BY, LIMIT in them, so the setref code is being
exercised. But, something like aggregates would test the setref code
better. So, we should add at-least one test like select avg(ft1.c1 +
ft2.c2) from ft1 join ft2 on (ft1.c1 = ft2.c1).
5. It will be good to add some test which contain join between few foreign
and few local tables to see whether we are able to push down the largest
possible foreign join tree to the foreign server.

Code
-------
In classifyConditions(), the code is now appending RestrictInfo::clause
rather than RestrictInfo itself. But the callers of classifyConditions()
have not changed. Is this change intentional? The functions which consume
the lists produced by this function handle expressions as well
RestrictInfo, so you may not have noticed it. Because of this change, we
might be missing some optimizations e.g. in function
postgresGetForeignPlan()
 793         if (list_member_ptr(fpinfo->remote_conds, rinfo))
 794             remote_conds = lappend(remote_conds, rinfo->clause);
 795         else if (list_member_ptr(fpinfo->local_conds, rinfo))
 796             local_exprs = lappend(local_exprs, rinfo->clause);
 797         else if (is_foreign_expr(root, baserel, rinfo->clause))
 798             remote_conds = lappend(remote_conds, rinfo->clause);
 799         else
 800             local_exprs = lappend(local_exprs, rinfo->clause);
Finding a RestrictInfo in remote_conds avoids another call to
is_foreign_expr(). So with this change, I think we are doing an extra call
to is_foreign_expr().

The function get_jointype_name() returns an empty string for unsupported
join types. Instead of that it should throw an error, if some code path
accidentally calls the function with unsupported join type e.g. SEMI_JOIN.

While deparsing the SQL with rowmarks, the placement of FOR UPDATE/SHARE
clause in the original query is not being honored, which means that we will
end up locking the rows which are not part of the join result even when the
join is pushed to the foreign server. E.g take the following query (it uses
the tables created in postgres_fdw.sql tests)
contrib_regression=# explain verbose select * from ft1 join ft2 on (ft1.c1
= ft2.c1)* for update of ft1*;




                                             QUERY
PLAN





-------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
 LockRows  (cost=100.00..124.66 rows=822 width=426)
   Output: ft1.c1, ft1.c2, ft1.c3, ft1.c4, ft1.c5, ft1.c6, ft1.c7, ft1.c8,
ft2.c1, ft2.c2, ft2.c3, ft2.c4, ft2.c5, ft2.c6, ft2.c7, ft2.c8, ft1.*, ft2.*
   ->  Foreign Scan  (cost=100.00..116.44 rows=822 width=426)
         Output: ft1.c1, ft1.c2, ft1.c3, ft1.c4, ft1.c5, ft1.c6, ft1.c7,
ft1.c8, ft2.c1, ft2.c2, ft2.c3, ft2.c4, ft2.c5, ft2.c6, ft2.c7, ft2.c8,
ft1.*,
 ft2.*
         Relations: (public.ft1) INNER JOIN (public.ft2)
         Remote SQL: SELECT l.a1, l.a2, l.a3, l.a4, l.a5, l.a6, l.a7, l.a8,
l.a9, r.a1, r.a2, r.a3, r.a4, r.a5, r.a6, r.a7, r.a8, r.a9 FROM (SELECT l.a
10, l.a11, l.a12, l.a13, l.a14, l.a15, l.a16, l.a17, ROW(l.a10, l.a11,
l.a12, l.a13, l.a14, l.a15, l.a16, l.a17) FROM
*(SELECT "C 1" a10, c2 a11, c3 a12, c4 a13, c5 a14, c6 a15, c7 a16, c8 a17
FROM "S 1"."T 1" FOR UPDATE)* l) l (a1, a2, a3, a4, a5, a6, a7, a8, a9)
INNER JOIN (SELECT r.a9, r.a10, r.a12,
r.a13, r.a14, r.a15, r.a16, r.a17, ROW(r.a9, r.a10, r.a12, r.a13, r.a14,
r.a15, r.a16, r.a17) FROM (SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14,
c6
 a15, c7 a16, c8 a17 FROM "S 1"."T 1") r) r (a1, a2, a3, a4, a5, a6, a7,
a8, a9) ON ((l.a1 = r.a1))
(6 rows)
It's expected that only the rows which are part of join result will be
locked by FOR UPDATE clause. The query sent to the foreign server has
attached the FOR UPDATE clause to the sub-query for table ft1 ("S 1"."T 1"
on foreign server). As per the postgresql documentation, "When a locking
clause appears in a sub-SELECT, the rows locked are those returned to the
outer query by the sub-query.". So it's going to lock all rows from "S
1"."T 1", rather than only the rows which are part of join. This is going
to increase probability of deadlocks, if the join is between a big table
and small table where big table is being used in many queries and the join
is going to have only a single row in the result.

Since there is no is_first argument to appendConditions(), we should remove
corresponding line from the function prologue.

The name TO_RELATIVE() doesn't convey the full meaning of the macro. May be
GET_RELATIVE_ATTNO() or something like that.

In postgresGetForeignJoinPaths(), while separating the conditions into join
quals and other quals,
3014     if (IS_OUTER_JOIN(jointype))
3015     {
3016         extract_actual_join_clauses(joinclauses, &joinclauses,
&otherclauses);
3017     }
3018     else
3019     {
3020         joinclauses = extract_actual_clauses(joinclauses, false);
3021         otherclauses = NIL;
3022     }
we shouldn't differentiate between outer and inner join. For inner join the
join quals can be treated as other clauses and they will be returned as
other clauses, which is fine. Also, the following condition
3050     /*
3051      * Other condition for the join must be safe to push down.
3052      */
3053     foreach(lc, otherclauses)
3054     {
3055         Expr *expr = (Expr *) lfirst(lc);
3056
3057         if (!is_foreign_expr(root, joinrel, expr))
3058         {
3059             ereport(DEBUG3, (errmsg("filter contains unsafe
conditions")));
3060             return;
3061         }
3062     }
is unnecessary. I there are filter conditions which are unsafe to push
down, they can be applied locally after obtaining the join result from the
foreign server. The join quals are all needed to be safe to push down,
since they decide which rows will contain NULL inner side in an OUTER join.


-- 
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company

On Fri, Apr 17, 2015 at 10:13 AM, Shigeru HANADA <[email protected]>
wrote:

> Kaigai-san,
>
> 2015/04/17 10:13、Kouhei Kaigai <[email protected]> のメール:
>
> > Hanada-san,
> >
> >> I merged explain patch into foreign_join patch.
> >>
> >> Now v12 is the latest patch.
> >>
> > It contains many garbage lines... Please ensure the
> > patch is correctly based on tOhe latest master +
> > custom_join patch.
>
> Oops, sorry.  I’ve re-created the patch as v13, based on Custom/Foreign
> join v11 patch and latest master.
>
> It contains EXPLAIN enhancement that new subitem “Relations” shows
> relations and joins, including order and type, processed by the foreign
> scan.
>
> --
> Shigeru HANADA
> [email protected]
>
>
>
>
>
>
>


-- 
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company


^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
  2015-04-17 01:13 Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Kouhei Kaigai <[email protected]>
  2015-04-17 04:43 ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
  2015-04-22 10:28   ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Ashutosh Bapat <[email protected]>
@ 2015-04-24 09:38     ` Shigeru HANADA <[email protected]>
  2015-04-29 06:10       ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Ashutosh Bapat <[email protected]>
  1 sibling, 1 reply; 973+ messages in thread

From: Shigeru HANADA @ 2015-04-24 09:38 UTC (permalink / raw)
  To: Ashutosh Bapat <[email protected]>; +Cc: Kouhei Kaigai <[email protected]>; Robert Haas <[email protected]>; Tom Lane <[email protected]>; Thom Brown <[email protected]>; pgsql-hackers

Hi Ashutosh,

Thanks for the review.

2015/04/22 19:28、Ashutosh Bapat <[email protected]> のメール:
> Tests
> -------
> 1.The postgres_fdw test is re/setting enable_mergejoin at various places. The goal of these tests seems to be to test the sanity of foreign plans generated. So, it might be better to reset enable_mergejoin (and may be all of enable_hashjoin, enable_nestloop_join etc.) to false at the beginning of the testcase and set them again at the end. That way, we will also make sure that foreign plans are chosen irrespective of future planner changes.

I have different, rather opposite opinion about it.  I disabled other join types as least as the tests pass, because I worry oversights come from planner changes.  I hope to eliminate enable_foo from the test script, by improving costing model smarter.

> 2. In the patch, I see that the inheritance testcases have been deleted from postgres_fdw.sql, is that intentional? I do not see those being replaced anywhere else.

It’s accidental removal, I restored the tests about inheritance feature.

> 3. We need one test for each join type (or at least for INNER and LEFT OUTER) where there are unsafe to push conditions in ON clause along-with safe-to-push conditions. For INNER join, the join should get pushed down with the safe conditions and for OUTER join it shouldn't be. Same goes for WHERE clause, in which case the join will be pushed down but the unsafe-to-push conditions will be applied locally.

Currently INNER JOINs with unsafe join conditions are not pushed down, so such test is not in the suit.  As you say, in theory, INNER JOINs can be pushed down even they have push-down-unsafe join conditions, because such conditions can be evaluated no local side against rows retrieved without those conditions.

> 4. All the tests have ORDER BY, LIMIT in them, so the setref code is being exercised. But, something like aggregates would test the setref code better. So, we should add at-least one test like select avg(ft1.c1 + ft2.c2) from ft1 join ft2 on (ft1.c1 = ft2.c1).

Added an aggregate case, and also added an UNION case for Append.

> 5. It will be good to add some test which contain join between few foreign and few local tables to see whether we are able to push down the largest possible foreign join tree to the foreign server. 
> 





> Code
> -------
> In classifyConditions(), the code is now appending RestrictInfo::clause rather than RestrictInfo itself. But the callers of classifyConditions() have not changed. Is this change intentional?

Yes, the purpose of the change is to make appendConditions (former name is appendWhereClause) can handle JOIN ON clause, list of Expr.

> The functions which consume the lists produced by this function handle expressions as well RestrictInfo, so you may not have noticed it. Because of this change, we might be missing some optimizations e.g. in function postgresGetForeignPlan()
>  793         if (list_member_ptr(fpinfo->remote_conds, rinfo))
>  794             remote_conds = lappend(remote_conds, rinfo->clause);
>  795         else if (list_member_ptr(fpinfo->local_conds, rinfo))
>  796             local_exprs = lappend(local_exprs, rinfo->clause);
>  797         else if (is_foreign_expr(root, baserel, rinfo->clause))
>  798             remote_conds = lappend(remote_conds, rinfo->clause);
>  799         else
>  800             local_exprs = lappend(local_exprs, rinfo->clause);
> Finding a RestrictInfo in remote_conds avoids another call to is_foreign_expr(). So with this change, I think we are doing an extra call to is_foreign_expr().
> 

Hm, it seems better to revert my change and make appendConditions downcast given information into RestrictInfo or Expr according to the node tag.

> The function get_jointype_name() returns an empty string for unsupported join types. Instead of that it should throw an error, if some code path accidentally calls the function with unsupported join type e.g. SEMI_JOIN.

Agreed, fixed.

> While deparsing the SQL with rowmarks, the placement of FOR UPDATE/SHARE clause in the original query is not being honored, which means that we will end up locking the rows which are not part of the join result even when the join is pushed to the foreign server. E.g take the following query (it uses the tables created in postgres_fdw.sql tests)
> contrib_regression=# explain verbose select * from ft1 join ft2 on (ft1.c1 = ft2.c1) for update of ft1;
>                                                                                                                                                        
>                                                                                                                                                        
>                                              QUERY PLAN                                                                                                
>                                                                                                                                                        
>                                                                                                     
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------------------
>  LockRows  (cost=100.00..124.66 rows=822 width=426)
>    Output: ft1.c1, ft1.c2, ft1.c3, ft1.c4, ft1.c5, ft1.c6, ft1.c7, ft1.c8, ft2.c1, ft2.c2, ft2.c3, ft2.c4, ft2.c5, ft2.c6, ft2.c7, ft2.c8, ft1.*, ft2.*
>    ->  Foreign Scan  (cost=100.00..116.44 rows=822 width=426)
>          Output: ft1.c1, ft1.c2, ft1.c3, ft1.c4, ft1.c5, ft1.c6, ft1.c7, ft1.c8, ft2.c1, ft2.c2, ft2.c3, ft2.c4, ft2.c5, ft2.c6, ft2.c7, ft2.c8, ft1.*,
>  ft2.*
>          Relations: (public.ft1) INNER JOIN (public.ft2)
>          Remote SQL: SELECT l.a1, l.a2, l.a3, l.a4, l.a5, l.a6, l.a7, l.a8, l.a9, r.a1, r.a2, r.a3, r.a4, r.a5, r.a6, r.a7, r.a8, r.a9 FROM (SELECT l.a
> 10, l.a11, l.a12, l.a13, l.a14, l.a15, l.a16, l.a17, ROW(l.a10, l.a11, l.a12, l.a13, l.a14, l.a15, l.a16, l.a17) FROM (SELECT "C 1" a10, c2 a11, c3 a12
> , c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" FOR UPDATE) l) l (a1, a2, a3, a4, a5, a6, a7, a8, a9) INNER JOIN (SELECT r.a9, r.a10, r.a12, 
> r.a13, r.a14, r.a15, r.a16, r.a17, ROW(r.a9, r.a10, r.a12, r.a13, r.a14, r.a15, r.a16, r.a17) FROM (SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14, c6
>  a15, c7 a16, c8 a17 FROM "S 1"."T 1") r) r (a1, a2, a3, a4, a5, a6, a7, a8, a9) ON ((l.a1 = r.a1))
> (6 rows)
> It's expected that only the rows which are part of join result will be locked by FOR UPDATE clause. The query sent to the foreign server has attached the FOR UPDATE clause to the sub-query for table ft1 ("S 1"."T 1" on foreign server). As per the postgresql documentation, "When a locking clause appears in a sub-SELECT, the rows locked are those returned to the outer query by the sub-query.". So it's going to lock all rows from "S 1"."T 1", rather than only the rows which are part of join. This is going to increase probability of deadlocks, if the join is between a big table and small table where big table is being used in many queries and the join is going to have only a single row in the result.
> 



> Since there is no is_first argument to appendConditions(), we should remove corresponding line from the function prologue.
> 

Oops, replaced with the description of prefix.


> The name TO_RELATIVE() doesn't convey the full meaning of the macro. May be GET_RELATIVE_ATTNO() or something like that.

Fixed.

> 
> In postgresGetForeignJoinPaths(), while separating the conditions into join quals and other quals,
> 3014     if (IS_OUTER_JOIN(jointype))
> 3015     {
> 3016         extract_actual_join_clauses(joinclauses, &joinclauses, &otherclauses);
> 3017     }
> 3018     else
> 3019     {
> 3020         joinclauses = extract_actual_clauses(joinclauses, false);
> 3021         otherclauses = NIL;
> 3022     }
> we shouldn't differentiate between outer and inner join. For inner join the join quals can be treated as other clauses and they will be returned as other clauses, which is fine. Also, the following condition
> 3050     /*
> 3051      * Other condition for the join must be safe to push down.
> 3052      */
> 3053     foreach(lc, otherclauses)
> 3054     {
> 3055         Expr *expr = (Expr *) lfirst(lc);
> 3056 
> 3057         if (!is_foreign_expr(root, joinrel, expr))
> 3058         {
> 3059             ereport(DEBUG3, (errmsg("filter contains unsafe conditions")));
> 3060             return;
> 3061         }
> 3062     }
> is unnecessary. I there are filter conditions which are unsafe to push down, they can be applied locally after obtaining the join result from the foreign server. The join quals are all needed to be safe to push down, since they decide which rows will contain NULL inner side in an OUTER join. 

I’m not sure that we *shouldn’t* differentiate, but I agree that we *don’t need* to differentiate if we are talking about only the result of filtering.

IMO we *should* differentiate inner and outer (or differentiate join conditions and filter conditions) because all conditions of typical INNER JOINs go into otherclauses because their is_pushed_down flag is on, so such joins look like CROSS JOIN + WHERE filter.  In the latest patch EXPLAIN shows the join combinations of a foreign join scan node with join type, but your suggestion makes it looks like this:

fdw=# explain (verbose) select * from pgbench_branches b join pgbench_tellers t on t.bid = b.bid;

   QUERY PLAN

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------
 Foreign Scan  (cost=100.00..101.00 rows=50 width=716)
   Output: b.bid, b.bbalance, b.filler, t.tid, t.bid, t.tbalance, t.filler
   Relations: (public.pgbench_branches b) CROSS JOIN (public.pgbench_tellers t)
   Remote SQL: SELECT l.a1, l.a2, l.a3, r.a1, r.a2, r.a3, r.a4 FROM (SELECT l.a9, l.a10, l.a11 FROM (SELECT bid a9, bbalance a10, filler a11 FROM public.pgbench_branches) l)
 l (a1, a2, a3) CROSS JOIN (SELECT r.a9, r.a10, r.a11, r.a12 FROM (SELECT tid a9, bid a10, tbalance a11, filler a12 FROM public.pgbench_tellers) r) r (a1, a2, a3, a4) WHERE
((l.a1 = r.a2))
(4 rows)

Thoughts?

Regards,
--
Shigeru HANADA
[email protected]






-- 
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
  2015-04-17 01:13 Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Kouhei Kaigai <[email protected]>
  2015-04-17 04:43 ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
  2015-04-22 10:28   ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Ashutosh Bapat <[email protected]>
  2015-04-24 09:38     ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
@ 2015-04-29 06:10       ` Ashutosh Bapat <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Ashutosh Bapat @ 2015-04-29 06:10 UTC (permalink / raw)
  To: Shigeru HANADA <[email protected]>; +Cc: Kouhei Kaigai <[email protected]>; Robert Haas <[email protected]>; Tom Lane <[email protected]>; Thom Brown <[email protected]>; pgsql-hackers

On Fri, Apr 24, 2015 at 3:08 PM, Shigeru HANADA <[email protected]>
wrote:

> Hi Ashutosh,
>
> Thanks for the review.
>
> 2015/04/22 19:28、Ashutosh Bapat <[email protected]> のメール:
> > Tests
> > -------
> > 1.The postgres_fdw test is re/setting enable_mergejoin at various
> places. The goal of these tests seems to be to test the sanity of foreign
> plans generated. So, it might be better to reset enable_mergejoin (and may
> be all of enable_hashjoin, enable_nestloop_join etc.) to false at the
> beginning of the testcase and set them again at the end. That way, we will
> also make sure that foreign plans are chosen irrespective of future planner
> changes.
>
> I have different, rather opposite opinion about it.  I disabled other join
> types as least as the tests pass, because I worry oversights come from
> planner changes.  I hope to eliminate enable_foo from the test script, by
> improving costing model smarter.
>

Ok, if you can do that, that will be excellent.


>
> > 2. In the patch, I see that the inheritance testcases have been deleted
> from postgres_fdw.sql, is that intentional? I do not see those being
> replaced anywhere else.
>
> It’s accidental removal, I restored the tests about inheritance feature.
>

Thanks.


>
> > 3. We need one test for each join type (or at least for INNER and LEFT
> OUTER) where there are unsafe to push conditions in ON clause along-with
> safe-to-push conditions. For INNER join, the join should get pushed down
> with the safe conditions and for OUTER join it shouldn't be. Same goes for
> WHERE clause, in which case the join will be pushed down but the
> unsafe-to-push conditions will be applied locally.
>
> Currently INNER JOINs with unsafe join conditions are not pushed down, so
> such test is not in the suit.  As you say, in theory, INNER JOINs can be
> pushed down even they have push-down-unsafe join conditions, because such
> conditions can be evaluated no local side against rows retrieved without
> those conditions.
>
> > 4. All the tests have ORDER BY, LIMIT in them, so the setref code is
> being exercised. But, something like aggregates would test the setref code
> better. So, we should add at-least one test like select avg(ft1.c1 +
> ft2.c2) from ft1 join ft2 on (ft1.c1 = ft2.c1).
>
> Added an aggregate case, and also added an UNION case for Append.
>

Thanks.


>
> > 5. It will be good to add some test which contain join between few
> foreign and few local tables to see whether we are able to push down the
> largest possible foreign join tree to the foreign server.
> >
>
>
Are you planning to do anything on this point?


>
>
> > Code
> > -------
> > In classifyConditions(), the code is now appending RestrictInfo::clause
> rather than RestrictInfo itself. But the callers of classifyConditions()
> have not changed. Is this change intentional?
>
> Yes, the purpose of the change is to make appendConditions (former name is
> appendWhereClause) can handle JOIN ON clause, list of Expr.
>
> > The functions which consume the lists produced by this function handle
> expressions as well RestrictInfo, so you may not have noticed it. Because
> of this change, we might be missing some optimizations e.g. in function
> postgresGetForeignPlan()
> >  793         if (list_member_ptr(fpinfo->remote_conds, rinfo))
> >  794             remote_conds = lappend(remote_conds, rinfo->clause);
> >  795         else if (list_member_ptr(fpinfo->local_conds, rinfo))
> >  796             local_exprs = lappend(local_exprs, rinfo->clause);
> >  797         else if (is_foreign_expr(root, baserel, rinfo->clause))
> >  798             remote_conds = lappend(remote_conds, rinfo->clause);
> >  799         else
> >  800             local_exprs = lappend(local_exprs, rinfo->clause);
> > Finding a RestrictInfo in remote_conds avoids another call to
> is_foreign_expr(). So with this change, I think we are doing an extra call
> to is_foreign_expr().
> >
>
> Hm, it seems better to revert my change and make appendConditions downcast
> given information into RestrictInfo or Expr according to the node tag.
>

Thanks.


>
> > The function get_jointype_name() returns an empty string for unsupported
> join types. Instead of that it should throw an error, if some code path
> accidentally calls the function with unsupported join type e.g. SEMI_JOIN.
>
> Agreed, fixed.
>
Thanks.


>
> > While deparsing the SQL with rowmarks, the placement of FOR UPDATE/SHARE
> clause in the original query is not being honored, which means that we will
> end up locking the rows which are not part of the join result even when the
> join is pushed to the foreign server. E.g take the following query (it uses
> the tables created in postgres_fdw.sql tests)
> > contrib_regression=# explain verbose select * from ft1 join ft2 on
> (ft1.c1 = ft2.c1) for update of ft1;
> >
> >
> >                                              QUERY PLAN
> >
> >
> >
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> ----------------------------------------------------------------------------------------------------
> >  LockRows  (cost=100.00..124.66 rows=822 width=426)
> >    Output: ft1.c1, ft1.c2, ft1.c3, ft1.c4, ft1.c5, ft1.c6, ft1.c7,
> ft1.c8, ft2.c1, ft2.c2, ft2.c3, ft2.c4, ft2.c5, ft2.c6, ft2.c7, ft2.c8,
> ft1.*, ft2.*
> >    ->  Foreign Scan  (cost=100.00..116.44 rows=822 width=426)
> >          Output: ft1.c1, ft1.c2, ft1.c3, ft1.c4, ft1.c5, ft1.c6, ft1.c7,
> ft1.c8, ft2.c1, ft2.c2, ft2.c3, ft2.c4, ft2.c5, ft2.c6, ft2.c7, ft2.c8,
> ft1.*,
> >  ft2.*
> >          Relations: (public.ft1) INNER JOIN (public.ft2)
> >          Remote SQL: SELECT l.a1, l.a2, l.a3, l.a4, l.a5, l.a6, l.a7,
> l.a8, l.a9, r.a1, r.a2, r.a3, r.a4, r.a5, r.a6, r.a7, r.a8, r.a9 FROM
> (SELECT l.a
> > 10, l.a11, l.a12, l.a13, l.a14, l.a15, l.a16, l.a17, ROW(l.a10, l.a11,
> l.a12, l.a13, l.a14, l.a15, l.a16, l.a17) FROM (SELECT "C 1" a10, c2 a11,
> c3 a12
> > , c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" FOR UPDATE) l)
> l (a1, a2, a3, a4, a5, a6, a7, a8, a9) INNER JOIN (SELECT r.a9, r.a10,
> r.a12,
> > r.a13, r.a14, r.a15, r.a16, r.a17, ROW(r.a9, r.a10, r.a12, r.a13, r.a14,
> r.a15, r.a16, r.a17) FROM (SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14,
> c6
> >  a15, c7 a16, c8 a17 FROM "S 1"."T 1") r) r (a1, a2, a3, a4, a5, a6, a7,
> a8, a9) ON ((l.a1 = r.a1))
> > (6 rows)
> > It's expected that only the rows which are part of join result will be
> locked by FOR UPDATE clause. The query sent to the foreign server has
> attached the FOR UPDATE clause to the sub-query for table ft1 ("S 1"."T 1"
> on foreign server). As per the postgresql documentation, "When a locking
> clause appears in a sub-SELECT, the rows locked are those returned to the
> outer query by the sub-query.". So it's going to lock all rows from "S
> 1"."T 1", rather than only the rows which are part of join. This is going
> to increase probability of deadlocks, if the join is between a big table
> and small table where big table is being used in many queries and the join
> is going to have only a single row in the result.
> >
>
>
Are you planning to do anything about this point?


>
>
> > Since there is no is_first argument to appendConditions(), we should
> remove corresponding line from the function prologue.
> >
>
> Oops, replaced with the description of prefix.
>
>
> > The name TO_RELATIVE() doesn't convey the full meaning of the macro. May
> be GET_RELATIVE_ATTNO() or something like that.
>
> Fixed.
>

Thanks.


>
> >
> > In postgresGetForeignJoinPaths(), while separating the conditions into
> join quals and other quals,
> > 3014     if (IS_OUTER_JOIN(jointype))
> > 3015     {
> > 3016         extract_actual_join_clauses(joinclauses, &joinclauses,
> &otherclauses);
> > 3017     }
> > 3018     else
> > 3019     {
> > 3020         joinclauses = extract_actual_clauses(joinclauses, false);
> > 3021         otherclauses = NIL;
> > 3022     }
> > we shouldn't differentiate between outer and inner join. For inner join
> the join quals can be treated as other clauses and they will be returned as
> other clauses, which is fine. Also, the following condition
> > 3050     /*
> > 3051      * Other condition for the join must be safe to push down.
> > 3052      */
> > 3053     foreach(lc, otherclauses)
> > 3054     {
> > 3055         Expr *expr = (Expr *) lfirst(lc);
> > 3056
> > 3057         if (!is_foreign_expr(root, joinrel, expr))
> > 3058         {
> > 3059             ereport(DEBUG3, (errmsg("filter contains unsafe
> conditions")));
> > 3060             return;
> > 3061         }
> > 3062     }
> > is unnecessary. I there are filter conditions which are unsafe to push
> down, they can be applied locally after obtaining the join result from the
> foreign server. The join quals are all needed to be safe to push down,
> since they decide which rows will contain NULL inner side in an OUTER join.
>
> I’m not sure that we *shouldn’t* differentiate, but I agree that we *don’t
> need* to differentiate if we are talking about only the result of filtering.
>
> IMO we *should* differentiate inner and outer (or differentiate join
> conditions and filter conditions) because all conditions of typical INNER
> JOINs go into otherclauses because their is_pushed_down flag is on, so such
> joins look like CROSS JOIN + WHERE filter.  In the latest patch EXPLAIN
> shows the join combinations of a foreign join scan node with join type, but
> your suggestion makes it looks like this:
>
> fdw=# explain (verbose) select * from pgbench_branches b join
> pgbench_tellers t on t.bid = b.bid;
>
>    QUERY PLAN
>
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> ----------------
>  Foreign Scan  (cost=100.00..101.00 rows=50 width=716)
>    Output: b.bid, b.bbalance, b.filler, t.tid, t.bid, t.tbalance, t.filler
>    Relations: (public.pgbench_branches b) CROSS JOIN
> (public.pgbench_tellers t)
>    Remote SQL: SELECT l.a1, l.a2, l.a3, r.a1, r.a2, r.a3, r.a4 FROM
> (SELECT l.a9, l.a10, l.a11 FROM (SELECT bid a9, bbalance a10, filler a11
> FROM public.pgbench_branches) l)
>  l (a1, a2, a3) CROSS JOIN (SELECT r.a9, r.a10, r.a11, r.a12 FROM (SELECT
> tid a9, bid a10, tbalance a11, filler a12 FROM public.pgbench_tellers) r) r
> (a1, a2, a3, a4) WHERE
> ((l.a1 = r.a2))
> (4 rows)
>
> Thoughts?
>

It does hamper readability a bit. But it explicitly shows, how do we want
to treat the join. We can leave this to the committers though.


>
> Regards,
> --
> Shigeru HANADA
> [email protected]
>
>
>
>
>


-- 
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company


^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
  2015-04-17 01:13 Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Kouhei Kaigai <[email protected]>
  2015-04-17 04:43 ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
  2015-04-22 10:28   ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Ashutosh Bapat <[email protected]>
@ 2015-04-27 09:05     ` Shigeru HANADA <[email protected]>
  2015-04-29 20:12       ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Robert Haas <[email protected]>
  1 sibling, 1 reply; 973+ messages in thread

From: Shigeru HANADA @ 2015-04-27 09:05 UTC (permalink / raw)
  To: Ashutosh Bapat <[email protected]>; +Cc: Kouhei Kaigai <[email protected]>; Robert Haas <[email protected]>; Tom Lane <[email protected]>; Thom Brown <[email protected]>; pgsql-hackers

Hi Ashutosh,

Thanks for the review.

2015/04/22 19:28、Ashutosh Bapat <[email protected]> のメール:
> Tests
> -------
> 1.The postgres_fdw test is re/setting enable_mergejoin at various places. The goal of these tests seems to be to test the sanity of foreign plans generated. So, it might be better to reset enable_mergejoin (and may be all of enable_hashjoin, enable_nestloop_join etc.) to false at the beginning of the testcase and set them again at the end. That way, we will also make sure that foreign plans are chosen irrespective of future planner changes.

I have different, rather opposite opinion about it.  I disabled other join types as least as the tests pass, because I worry oversights come from planner changes.  I hope to eliminate enable_foo from the test script, by improving costing model smarter.

> 2. In the patch, I see that the inheritance testcases have been deleted from postgres_fdw.sql, is that intentional? I do not see those being replaced anywhere else.

It’s accidental removal, I restored the tests about inheritance feature.

> 3. We need one test for each join type (or at least for INNER and LEFT OUTER) where there are unsafe to push conditions in ON clause along-with safe-to-push conditions. For INNER join, the join should get pushed down with the safe conditions and for OUTER join it shouldn't be. Same goes for WHERE clause, in which case the join will be pushed down but the unsafe-to-push conditions will be applied locally.

Currently INNER JOINs with unsafe join conditions are not pushed down, so such test is not in the suit.  As you say, in theory, INNER JOINs can be pushed down even they have push-down-unsafe join conditions, because such conditions can be evaluated no local side against rows retrieved without those conditions.

> 4. All the tests have ORDER BY, LIMIT in them, so the setref code is being exercised. But, something like aggregates would test the setref code better. So, we should add at-least one test like select avg(ft1.c1 + ft2.c2) from ft1 join ft2 on (ft1.c1 = ft2.c1).

Added an aggregate case, and also added an UNION case for Append.

> 5. It will be good to add some test which contain join between few foreign and few local tables to see whether we are able to push down the largest possible foreign join tree to the foreign server. 
> 





> Code
> -------
> In classifyConditions(), the code is now appending RestrictInfo::clause rather than RestrictInfo itself. But the callers of classifyConditions() have not changed. Is this change intentional?

Yes, the purpose of the change is to make appendConditions (former name is appendWhereClause) can handle JOIN ON clause, list of Expr.

> The functions which consume the lists produced by this function handle expressions as well RestrictInfo, so you may not have noticed it. Because of this change, we might be missing some optimizations e.g. in function postgresGetForeignPlan()
>  793         if (list_member_ptr(fpinfo->remote_conds, rinfo))
>  794             remote_conds = lappend(remote_conds, rinfo->clause);
>  795         else if (list_member_ptr(fpinfo->local_conds, rinfo))
>  796             local_exprs = lappend(local_exprs, rinfo->clause);
>  797         else if (is_foreign_expr(root, baserel, rinfo->clause))
>  798             remote_conds = lappend(remote_conds, rinfo->clause);
>  799         else
>  800             local_exprs = lappend(local_exprs, rinfo->clause);
> Finding a RestrictInfo in remote_conds avoids another call to is_foreign_expr(). So with this change, I think we are doing an extra call to is_foreign_expr().
> 

Hm, it seems better to revert my change and make appendConditions downcast given information into RestrictInfo or Expr according to the node tag.

> The function get_jointype_name() returns an empty string for unsupported join types. Instead of that it should throw an error, if some code path accidentally calls the function with unsupported join type e.g. SEMI_JOIN.

Agreed, fixed.

> While deparsing the SQL with rowmarks, the placement of FOR UPDATE/SHARE clause in the original query is not being honored, which means that we will end up locking the rows which are not part of the join result even when the join is pushed to the foreign server. E.g take the following query (it uses the tables created in postgres_fdw.sql tests)
> contrib_regression=# explain verbose select * from ft1 join ft2 on (ft1.c1 = ft2.c1) for update of ft1;
>                                                                                                                                                        
>                                                                                                                                                        
>                                              QUERY PLAN                                                                                                
>                                                                                                                                                        
>                                                                                                     
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------------------
>  LockRows  (cost=100.00..124.66 rows=822 width=426)
>    Output: ft1.c1, ft1.c2, ft1.c3, ft1.c4, ft1.c5, ft1.c6, ft1.c7, ft1.c8, ft2.c1, ft2.c2, ft2.c3, ft2.c4, ft2.c5, ft2.c6, ft2.c7, ft2.c8, ft1.*, ft2.*
>    ->  Foreign Scan  (cost=100.00..116.44 rows=822 width=426)
>          Output: ft1.c1, ft1.c2, ft1.c3, ft1.c4, ft1.c5, ft1.c6, ft1.c7, ft1.c8, ft2.c1, ft2.c2, ft2.c3, ft2.c4, ft2.c5, ft2.c6, ft2.c7, ft2.c8, ft1.*,
>  ft2.*
>          Relations: (public.ft1) INNER JOIN (public.ft2)
>          Remote SQL: SELECT l.a1, l.a2, l.a3, l.a4, l.a5, l.a6, l.a7, l.a8, l.a9, r.a1, r.a2, r.a3, r.a4, r.a5, r.a6, r.a7, r.a8, r.a9 FROM (SELECT l.a
> 10, l.a11, l.a12, l.a13, l.a14, l.a15, l.a16, l.a17, ROW(l.a10, l.a11, l.a12, l.a13, l.a14, l.a15, l.a16, l.a17) FROM (SELECT "C 1" a10, c2 a11, c3 a12
> , c4 a13, c5 a14, c6 a15, c7 a16, c8 a17 FROM "S 1"."T 1" FOR UPDATE) l) l (a1, a2, a3, a4, a5, a6, a7, a8, a9) INNER JOIN (SELECT r.a9, r.a10, r.a12, 
> r.a13, r.a14, r.a15, r.a16, r.a17, ROW(r.a9, r.a10, r.a12, r.a13, r.a14, r.a15, r.a16, r.a17) FROM (SELECT "C 1" a9, c2 a10, c3 a12, c4 a13, c5 a14, c6
>  a15, c7 a16, c8 a17 FROM "S 1"."T 1") r) r (a1, a2, a3, a4, a5, a6, a7, a8, a9) ON ((l.a1 = r.a1))
> (6 rows)
> It's expected that only the rows which are part of join result will be locked by FOR UPDATE clause. The query sent to the foreign server has attached the FOR UPDATE clause to the sub-query for table ft1 ("S 1"."T 1" on foreign server). As per the postgresql documentation, "When a locking clause appears in a sub-SELECT, the rows locked are those returned to the outer query by the sub-query.". So it's going to lock all rows from "S 1"."T 1", rather than only the rows which are part of join. This is going to increase probability of deadlocks, if the join is between a big table and small table where big table is being used in many queries and the join is going to have only a single row in the result.
> 



> Since there is no is_first argument to appendConditions(), we should remove corresponding line from the function prologue.
> 

Oops, replaced with the description of prefix.


> The name TO_RELATIVE() doesn't convey the full meaning of the macro. May be GET_RELATIVE_ATTNO() or something like that.

Fixed.

> 
> In postgresGetForeignJoinPaths(), while separating the conditions into join quals and other quals,
> 3014     if (IS_OUTER_JOIN(jointype))
> 3015     {
> 3016         extract_actual_join_clauses(joinclauses, &joinclauses, &otherclauses);
> 3017     }
> 3018     else
> 3019     {
> 3020         joinclauses = extract_actual_clauses(joinclauses, false);
> 3021         otherclauses = NIL;
> 3022     }
> we shouldn't differentiate between outer and inner join. For inner join the join quals can be treated as other clauses and they will be returned as other clauses, which is fine. Also, the following condition
> 3050     /*
> 3051      * Other condition for the join must be safe to push down.
> 3052      */
> 3053     foreach(lc, otherclauses)
> 3054     {
> 3055         Expr *expr = (Expr *) lfirst(lc);
> 3056 
> 3057         if (!is_foreign_expr(root, joinrel, expr))
> 3058         {
> 3059             ereport(DEBUG3, (errmsg("filter contains unsafe conditions")));
> 3060             return;
> 3061         }
> 3062     }
> is unnecessary. I there are filter conditions which are unsafe to push down, they can be applied locally after obtaining the join result from the foreign server. The join quals are all needed to be safe to push down, since they decide which rows will contain NULL inner side in an OUTER join. 

I’m not sure that we *shouldn’t* differentiate, but I agree that we *don’t need* to differentiate if we are talking about only the result of filtering.

IMO we *should* differentiate inner and outer (or differentiate join conditions and filter conditions) because all conditions of typical INNER JOINs go into otherclauses because their is_pushed_down flag is on, so such joins look like CROSS JOIN + WHERE filter.  In the latest patch EXPLAIN shows the join combinations of a foreign join scan node with join type, but your suggestion makes it looks like this:

fdw=# explain (verbose) select * from pgbench_branches b join pgbench_tellers t on t.bid = b.bid;
WARNING:  restrictlist: ({RESTRICTINFO :clause {OPEXPR :opno 96 :opfuncid 65 :opresulttype 16 :opretset false :opcollid 0 :inputcollid 0 :args ({VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 1 :location 85} {VAR :varno 2 :varattno 2 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 2 :varoattno 2 :location 77}) :location -1} :is_pushed_down true :outerjoin_delayed false :can_join true :pseudoconstant false :clause_relids (b 1 2) :required_relids (b 1 2) :outer_relids (b) :nullable_relids (b) :left_relids (b 1) :right_relids (b 2) :orclause <> :norm_selec 0.2000 :outer_selec -1.0000 :mergeopfamilies (o 1976) :left_em {EQUIVALENCEMEMBER :em_expr {VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 1 :location 85} :em_relids (b 1) :em_nullable_relids (b) :em_is_const false :em_is_child false :em_datatype 23} :right_em {EQUIVALENCEMEMBER :em_expr {VAR :varno 2 :varattno 2 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 2 :varoattno 2 :location 77} :em_relids (b 2) :em_nullable_relids (b) :em_is_const false :em_is_child false :em_datatype 23} :outer_is_left false :hashjoinoperator 96})
WARNING:  joinclauses: <>
WARNING:  otherclauses: ({OPEXPR :opno 96 :opfuncid 65 :opresulttype 16 :opretset false :opcollid 0 :inputcollid 0 :args ({VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 1 :location 85} {VAR :varno 2 :varattno 2 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 2 :varoattno 2 :location 77}) :location -1})

   QUERY PLAN

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------
 Foreign Scan  (cost=100.00..101.00 rows=50 width=716)
   Output: b.bid, b.bbalance, b.filler, t.tid, t.bid, t.tbalance, t.filler
   Relations: (public.pgbench_branches b) CROSS JOIN (public.pgbench_tellers t)
   Remote SQL: SELECT l.a1, l.a2, l.a3, r.a1, r.a2, r.a3, r.a4 FROM (SELECT l.a9, l.a10, l.a11 FROM (SELECT bid a9, bbalance a10, filler a11 FROM public.pgbench_branches) l)
 l (a1, a2, a3) CROSS JOIN (SELECT r.a9, r.a10, r.a11, r.a12 FROM (SELECT tid a9, bid a10, tbalance a11, filler a12 FROM public.pgbench_tellers) r) r (a1, a2, a3, a4) WHERE
((l.a1 = r.a2))
(4 rows)

Thoughts?


Regards,
--
Shigeru HANADA
[email protected]






-- 
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
  2015-04-17 01:13 Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Kouhei Kaigai <[email protected]>
  2015-04-17 04:43 ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
  2015-04-22 10:28   ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Ashutosh Bapat <[email protected]>
  2015-04-27 09:05     ` Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Shigeru HANADA <[email protected]>
@ 2015-04-29 20:12       ` Robert Haas <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Robert Haas @ 2015-04-29 20:12 UTC (permalink / raw)
  To: Shigeru HANADA <[email protected]>; +Cc: Ashutosh Bapat <[email protected]>; Kouhei Kaigai <[email protected]>; Tom Lane <[email protected]>; Thom Brown <[email protected]>; pgsql-hackers

On Mon, Apr 27, 2015 at 5:05 AM, Shigeru HANADA
<[email protected]> wrote:
> Currently INNER JOINs with unsafe join conditions are not pushed down, so such test is not in the suit.  As you say, in theory, INNER JOINs can be pushed down even they have push-down-unsafe join conditions, because such conditions can be evaluated no local side against rows retrieved without those conditions.

I suspect it's worth trying to do the pushdown if there is at least
one safe joinclause.  If there are none, fetching a Cartesian product
figures to be a loser.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


-- 
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread

* [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple?
@ 2026-03-12 15:14 Álvaro Herrera <[email protected]>
  0 siblings, 0 replies; 973+ messages in thread

From: Álvaro Herrera @ 2026-03-12 15:14 UTC (permalink / raw)

---
 src/backend/replication/pgoutput_repack/pgoutput_repack.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/replication/pgoutput_repack/pgoutput_repack.c b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
index 73aa6f0589c..c77564c4024 100644
--- a/src/backend/replication/pgoutput_repack/pgoutput_repack.c
+++ b/src/backend/replication/pgoutput_repack/pgoutput_repack.c
@@ -200,9 +200,14 @@ store_change(LogicalDecodingContext *ctx, Relation relation,
 		attrs = palloc_array(Datum, desc->natts);
 		isnull = palloc_array(bool, desc->natts);
 
+		/*
+		 * XXX it might be better to use slot_deform_tuple here, for the case
+		 * where atttributes near the end of the tuple don't need to undergo
+		 * this procedure.
+		 */
 		heap_deform_tuple(tuple, desc, attrs, isnull);
 
-		/* First, gather and count the "external indirect" attributes. */
+		/* First, gather all the "external indirect" attributes. */
 		for (int i = 0; i < desc->natts; i++)
 		{
 			CompactAttribute *attr = TupleDescCompactAttr(desc, i);
-- 
2.47.3


--pnppmxqkefjd4hu2
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="0009-reuse-existing-variable-by-overwriting-it.nocfbot.txt"



^ permalink  raw  reply  [nested|flat] 973+ messages in thread


end of thread, other threads:[~2026-03-12 15:14 UTC | newest]

Thread overview: 973+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2015-04-17 01:13 Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) Kouhei Kaigai <[email protected]>
2015-04-17 04:43 ` Shigeru HANADA <[email protected]>
2015-04-22 10:28   ` Ashutosh Bapat <[email protected]>
2015-04-24 09:38     ` Shigeru HANADA <[email protected]>
2015-04-29 06:10       ` Ashutosh Bapat <[email protected]>
2015-04-27 09:05     ` Shigeru HANADA <[email protected]>
2015-04-29 20:12       ` Robert Haas <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>
2026-03-12 15:14 [PATCH 8/9] XXX devel comment: heap_deform_tuple -> slot_deform_tuple? Álvaro Herrera <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox