mirror of
https://github.com/postgres/postgres.git
synced 2025-06-23 14:01:44 +03:00
Logical decoding of TRUNCATE
Add a new WAL record type for TRUNCATE, which is only used when wal_level >= logical. (For physical replication, TRUNCATE is already replicated via SMGR records.) Add new callback for logical decoding output plugins to receive TRUNCATE actions. Author: Simon Riggs <simon@2ndquadrant.com> Author: Marco Nenciarini <marco.nenciarini@2ndquadrant.it> Author: Peter Eisentraut <peter.eisentraut@2ndquadrant.com> Reviewed-by: Petr Jelinek <petr.jelinek@2ndquadrant.com> Reviewed-by: Andres Freund <andres@anarazel.de> Reviewed-by: Alvaro Herrera <alvherre@alvh.no-ip.org>
This commit is contained in:
@ -75,6 +75,19 @@ heap_desc(StringInfo buf, XLogReaderState *record)
|
||||
xlrec->new_offnum,
|
||||
xlrec->new_xmax);
|
||||
}
|
||||
else if (info == XLOG_HEAP_TRUNCATE)
|
||||
{
|
||||
xl_heap_truncate *xlrec = (xl_heap_truncate *) rec;
|
||||
int i;
|
||||
|
||||
if (xlrec->flags & XLH_TRUNCATE_CASCADE)
|
||||
appendStringInfo(buf, "cascade ");
|
||||
if (xlrec->flags & XLH_TRUNCATE_RESTART_SEQS)
|
||||
appendStringInfo(buf, "restart_seqs ");
|
||||
appendStringInfo(buf, "nrelids %u relids", xlrec->nrelids);
|
||||
for (i = 0; i < xlrec->nrelids; i++)
|
||||
appendStringInfo(buf, " %u", xlrec->relids[i]);
|
||||
}
|
||||
else if (info == XLOG_HEAP_CONFIRM)
|
||||
{
|
||||
xl_heap_confirm *xlrec = (xl_heap_confirm *) rec;
|
||||
@ -186,6 +199,9 @@ heap_identify(uint8 info)
|
||||
case XLOG_HEAP_HOT_UPDATE | XLOG_HEAP_INIT_PAGE:
|
||||
id = "HOT_UPDATE+INIT";
|
||||
break;
|
||||
case XLOG_HEAP_TRUNCATE:
|
||||
id = "TRUNCATE";
|
||||
break;
|
||||
case XLOG_HEAP_CONFIRM:
|
||||
id = "HEAP_CONFIRM";
|
||||
break;
|
||||
|
Reference in New Issue
Block a user