• Amit Kapila's avatar
    Add support for streaming to built-in logical replication. · 46482432
    Amit Kapila authored
    To add support for streaming of in-progress transactions into the
    built-in logical replication, we need to do three things:
    
    * Extend the logical replication protocol, so identify in-progress
    transactions, and allow adding additional bits of information (e.g.
    XID of subtransactions).
    
    * Modify the output plugin (pgoutput) to implement the new stream
    API callbacks, by leveraging the extended replication protocol.
    
    * Modify the replication apply worker, to properly handle streamed
    in-progress transaction by spilling the data to disk and then
    replaying them on commit.
    
    We however must explicitly disable streaming replication during
    replication slot creation, even if the plugin supports it. We
    don't need to replicate the changes accumulated during this phase,
    and moreover we don't have a replication connection open so we
    don't have where to send the data anyway.
    
    Author: Tomas Vondra, Dilip Kumar and Amit Kapila
    Reviewed-by: Amit Kapila, Kuntal Ghosh and Ajin Cherian
    Tested-by: Neha Sharma, Mahendra Singh Thalor and Ajin Cherian
    Discussion: https://postgr.es/m/688b0b7f-2f6c-d827-c27b-216a8e3ea700@2ndquadrant.com
    46482432
pg_subscription.h 3.24 KB