If tuples were toasted, heap_multi_insert didn't update the ctid on the
original tuples. This caused a failure if there was an after trigger
(including a foreign key), on the table, and a tuple got toasted.
Per off-list report and test case from Ted Phelps
CacheInvalidateHeapTuple(relation, heaptuples[i], NULL);
}
+ /*
+ * Copy t_self fields back to the caller's original tuples. This does
+ * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's
+ * probably faster to always copy than check.
+ */
+ for (i = 0; i < ntuples; i++)
+ tuples[i]->t_self = heaptuples[i]->t_self;
+
pgstat_count_heap_insert(relation, ntuples);
}