Dear Hou,

> Currently, only the leaf partition is invalidated when the published table is
> partitioned. However, I think pgoutput could cache both the partitioned table
> and the leaf partition table as relsync entries.
> 
> For INSERT/UPDATE/DELETE on a partitioned table, only the leaf partition's
> relsync entry is used in pgoutput, but the TRUNCATE references the parent
> table's relsync entry.

I think your analysis is correct. PSA new version. Below part contains my 
analysis.

In ExecuteTruncate(), if the specified relation has children, all of them are
checked via find_all_inheritors() and listed as target. Also, 
ExecuteTruncateGuts()
serializes both a parent and children in XLOG_HEAP_TRUNCATE WAL record.
Decoding layer passes relations as-is. These facts mean that output plugins can
store caches on the memory.

Best regards,
Hayato Kuroda
FUJITSU LIMITED

Attachment: v9-0001-Introduce-a-new-invalidation-message-to-invalidat.patch
Description: v9-0001-Introduce-a-new-invalidation-message-to-invalidat.patch

Attachment: v9-0002-Invalidate-Relcaches-while-ALTER-PUBLICATION-RENA.patch
Description: v9-0002-Invalidate-Relcaches-while-ALTER-PUBLICATION-RENA.patch

Reply via email to