@ -210,7 +210,7 @@ int logical_decoding_work_mem;
static const Size max_changes_in_memory = 4096 ; /* XXX for restore only */
/* GUC variable */
int logical_replication_mode = LOGICAL_REP_MODE _BUFFERED;
int debug_logical_replication_streaming = DEBUG_LOGICAL_REP_STREAMING _BUFFERED;
/* ---------------------------------------
* primary reorderbuffer support routines
@ -3566,8 +3566,8 @@ ReorderBufferLargestStreamableTopTXN(ReorderBuffer *rb)
* pick the largest ( sub ) transaction at - a - time to evict and spill its changes to
* disk or send to the output plugin until we reach under the memory limit .
*
* If logical_replication_mode is set to " immediate " , stream or serialize the
* changes immediately .
* If debug_logical_replication_streaming is set to " immediate " , stream or
* serialize the changes immediately .
*
* XXX At this point we select the transactions until we reach under the memory
* limit , but we might also adapt a more elaborate eviction strategy - for example
@ -3580,25 +3580,25 @@ ReorderBufferCheckMemoryLimit(ReorderBuffer *rb)
ReorderBufferTXN * txn ;
/*
* Bail out if logical_replication_mode is buffered and we haven ' t
* exceeded the memory limit .
* Bail out if debug_logical_replication_streaming is buffered and we
* haven ' t exceeded the memory limit .
*/
if ( logical_replication_mode = = LOGICAL_REP_MODE _BUFFERED & &
if ( debug_logical_replication_streaming = = DEBUG_LOGICAL_REP_STREAMING _BUFFERED & &
rb - > size < logical_decoding_work_mem * 1024L )
return ;
/*
* If logical_replication_mode is immediate , loop until there ' s no change .
* Otherwise , loop until we reach under the memory limit . One might think
* that just by evicting the largest ( sub ) transaction we will come under
* the memory limit based on assumption that the selected transaction is
* at least as large as the most recent change ( which caused us to go over
* the memory limit ) . However , that is not true because a user can reduc e
* the logical_decoding_work_mem to a smaller value before the most recent
* change .
* If debug_logical_replication_streaming is immediate , loop until there ' s
* no change . Otherwise , loop until we reach under the memory limit . One
* might think that just by evicting the largest ( sub ) transaction we will
* come under the memory limit based on assumption that the selected
* transaction is at least as large as the most recent change ( which
* caused us to go over the memory limit ) . However , that is not true
* because a user can reduce the logical_decoding_work_mem to a smaller
* value before the most recent change .
*/
while ( rb - > size > = logical_decoding_work_mem * 1024L | |
( logical_replication_mode = = LOGICAL_REP_MODE _IMMEDIATE & &
( debug_logical_replication_streaming = = DEBUG_LOGICAL_REP_STREAMING _IMMEDIATE & &
rb - > size > 0 ) )
{
/*