aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/analyze.c3
-rw-r--r--src/backend/commands/constraint.c3
-rw-r--r--src/backend/commands/copy.c6
-rw-r--r--src/backend/commands/explain.c3
-rw-r--r--src/backend/commands/functioncmds.c3
-rw-r--r--src/backend/commands/subscriptioncmds.c2
-rw-r--r--src/backend/commands/tablecmds.c6
-rw-r--r--src/backend/commands/trigger.c10
8 files changed, 22 insertions, 14 deletions
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index 8ac868ad733..b8445dc3728 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -730,7 +730,8 @@ compute_index_stats(Relation onerel, double totalrows,
estate = CreateExecutorState();
econtext = GetPerTupleExprContext(estate);
/* Need a slot to hold the current heap tuple, too */
- slot = MakeSingleTupleTableSlot(RelationGetDescr(onerel));
+ slot = MakeSingleTupleTableSlot(RelationGetDescr(onerel),
+ &TTSOpsHeapTuple);
/* Arrange for econtext's scan tuple to be the tuple under test */
econtext->ecxt_scantuple = slot;
diff --git a/src/backend/commands/constraint.c b/src/backend/commands/constraint.c
index f472355b48f..b0b2cb2a146 100644
--- a/src/backend/commands/constraint.c
+++ b/src/backend/commands/constraint.c
@@ -122,7 +122,8 @@ unique_key_recheck(PG_FUNCTION_ARGS)
/*
* The heap tuple must be put into a slot for FormIndexDatum.
*/
- slot = MakeSingleTupleTableSlot(RelationGetDescr(trigdata->tg_relation));
+ slot = MakeSingleTupleTableSlot(RelationGetDescr(trigdata->tg_relation),
+ &TTSOpsHeapTuple);
ExecStoreHeapTuple(new_row, slot, false);
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index a9471c5ef6a..e62e3d8fba2 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -2488,9 +2488,11 @@ CopyFrom(CopyState cstate)
ExecInitRangeTable(estate, cstate->range_table);
/* Set up a tuple slot too */
- myslot = ExecInitExtraTupleSlot(estate, tupDesc);
+ myslot = ExecInitExtraTupleSlot(estate, tupDesc,
+ &TTSOpsHeapTuple);
/* Triggers might need a slot as well */
- estate->es_trig_tuple_slot = ExecInitExtraTupleSlot(estate, NULL);
+ estate->es_trig_tuple_slot = ExecInitExtraTupleSlot(estate, NULL,
+ &TTSOpsHeapTuple);
/*
* Set up a ModifyTableState so we can let FDW(s) init themselves for
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 799a22e9d55..ab2c84ff98a 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -266,7 +266,8 @@ ExplainQuery(ParseState *pstate, ExplainStmt *stmt, const char *queryString,
Assert(es->indent == 0);
/* output tuples */
- tstate = begin_tup_output_tupdesc(dest, ExplainResultDesc(stmt));
+ tstate = begin_tup_output_tupdesc(dest, ExplainResultDesc(stmt),
+ &TTSOpsVirtual);
if (es->format == EXPLAIN_FORMAT_TEXT)
do_text_output_multiline(tstate, es->str->data);
else
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index 3925fb83a54..f6e12a33532 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -2347,7 +2347,8 @@ ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver
tupTypmod = HeapTupleHeaderGetTypMod(td);
retdesc = lookup_rowtype_tupdesc(tupType, tupTypmod);
- tstate = begin_tup_output_tupdesc(dest, retdesc);
+ tstate = begin_tup_output_tupdesc(dest, retdesc,
+ &TTSOpsHeapTuple);
rettupdata.t_len = HeapTupleHeaderGetDatumLength(td);
ItemPointerSetInvalid(&(rettupdata.t_self));
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c
index f138e61a8d3..0efbfec4751 100644
--- a/src/backend/commands/subscriptioncmds.c
+++ b/src/backend/commands/subscriptioncmds.c
@@ -1148,7 +1148,7 @@ fetch_table_list(WalReceiverConn *wrconn, List *publications)
res->err)));
/* Process tables. */
- slot = MakeSingleTupleTableSlot(res->tupledesc);
+ slot = MakeSingleTupleTableSlot(res->tupledesc, &TTSOpsMinimalTuple);
while (tuplestore_gettupleslot(res->tuplestore, true, false, slot))
{
char *nspname;
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 73da6c39c22..a15e6045075 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -4736,8 +4736,8 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap, LOCKMODE lockmode)
* tuples are the same, the tupDescs might not be (consider ADD COLUMN
* without a default).
*/
- oldslot = MakeSingleTupleTableSlot(oldTupDesc);
- newslot = MakeSingleTupleTableSlot(newTupDesc);
+ oldslot = MakeSingleTupleTableSlot(oldTupDesc, &TTSOpsHeapTuple);
+ newslot = MakeSingleTupleTableSlot(newTupDesc, &TTSOpsHeapTuple);
/* Preallocate values/isnull arrays */
i = Max(newTupDesc->natts, oldTupDesc->natts);
@@ -8527,7 +8527,7 @@ validateCheckConstraint(Relation rel, HeapTuple constrtup)
econtext = GetPerTupleExprContext(estate);
tupdesc = RelationGetDescr(rel);
- slot = MakeSingleTupleTableSlot(tupdesc);
+ slot = MakeSingleTupleTableSlot(tupdesc, &TTSOpsHeapTuple);
econtext->ecxt_scantuple = slot;
snapshot = RegisterSnapshot(GetLatestSnapshot());
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index d6f33ecbd04..b91ebdb3d04 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -3525,7 +3525,7 @@ TriggerEnabled(EState *estate, ResultRelInfo *relinfo,
{
oldContext = MemoryContextSwitchTo(estate->es_query_cxt);
estate->es_trig_oldtup_slot =
- ExecInitExtraTupleSlot(estate, NULL);
+ ExecInitExtraTupleSlot(estate, NULL, &TTSOpsHeapTuple);
MemoryContextSwitchTo(oldContext);
}
oldslot = estate->es_trig_oldtup_slot;
@@ -3539,7 +3539,7 @@ TriggerEnabled(EState *estate, ResultRelInfo *relinfo,
{
oldContext = MemoryContextSwitchTo(estate->es_query_cxt);
estate->es_trig_newtup_slot =
- ExecInitExtraTupleSlot(estate, NULL);
+ ExecInitExtraTupleSlot(estate, NULL, &TTSOpsHeapTuple);
MemoryContextSwitchTo(oldContext);
}
newslot = estate->es_trig_newtup_slot;
@@ -4546,8 +4546,10 @@ afterTriggerInvokeEvents(AfterTriggerEventList *events,
ExecDropSingleTupleTableSlot(slot1);
ExecDropSingleTupleTableSlot(slot2);
}
- slot1 = MakeSingleTupleTableSlot(rel->rd_att);
- slot2 = MakeSingleTupleTableSlot(rel->rd_att);
+ slot1 = MakeSingleTupleTableSlot(rel->rd_att,
+ &TTSOpsMinimalTuple);
+ slot2 = MakeSingleTupleTableSlot(rel->rd_att,
+ &TTSOpsMinimalTuple);
}
if (trigdesc == NULL) /* should not happen */
elog(ERROR, "relation %u has no triggers",