aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/heap/heapam.c
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2020-07-31 10:54:26 +0900
committerMichael Paquier <michael@paquier.xyz>2020-07-31 10:54:26 +0900
commite3931d01f3afef14703827eda1dad0a3fb3b5d07 (patch)
treee22988b00aa284dd200951b60f357d06a06202cf /src/backend/access/heap/heapam.c
parentcab2556f3ab289b81a9c6a75e669b6ec78356ffc (diff)
downloadpostgresql-e3931d01f3afef14703827eda1dad0a3fb3b5d07.tar.gz
postgresql-e3931d01f3afef14703827eda1dad0a3fb3b5d07.zip
Use multi-inserts for pg_attribute and pg_shdepend
For pg_attribute, this allows to insert at once a full set of attributes for a relation (roughly 15% of WAL reduction in extreme cases). For pg_shdepend, this reduces the work done when creating new shared dependencies from a database template. The number of slots used for the insertion is capped at 64kB of data inserted for both, depending on the number of items to insert and the length of the rows involved. More can be done for other catalogs, like pg_depend. This part requires a different approach as the number of slots to use depends also on the number of entries discarded as pinned dependencies. This is also related to the rework or dependency handling for ALTER TABLE and CREATE TABLE, mainly. Author: Daniel Gustafsson Reviewed-by: Andres Freund, Michael Paquier Discussion: https://postgr.es/m/20190213182737.mxn6hkdxwrzgxk35@alap3.anarazel.de
Diffstat (limited to 'src/backend/access/heap/heapam.c')
-rw-r--r--src/backend/access/heap/heapam.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 8df2716de46..5eef225f5c7 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -2164,8 +2164,8 @@ heap_multi_insert(Relation relation, TupleTableSlot **slots, int ntuples,
RelationPutHeapTuple(relation, buffer, heaptuples[ndone], false);
/*
- * Note that heap_multi_insert is not used for catalog tuples yet, but
- * this will cover the gap once that is the case.
+ * For logical decoding we need combocids to properly decode the
+ * catalog.
*/
if (needwal && need_cids)
log_heap_new_cid(relation, heaptuples[ndone]);
@@ -2180,8 +2180,8 @@ heap_multi_insert(Relation relation, TupleTableSlot **slots, int ntuples,
RelationPutHeapTuple(relation, buffer, heaptup, false);
/*
- * We don't use heap_multi_insert for catalog tuples yet, but
- * better be prepared...
+ * For logical decoding we need combocids to properly decode the
+ * catalog.
*/
if (needwal && need_cids)
log_heap_new_cid(relation, heaptup);