@@ -86,7 +86,7 @@ static void bbsink_copystream_cleanup(bbsink *sink);
8686
8787static void SendCopyOutResponse (void );
8888static void SendCopyDone (void );
89- static void SendXlogRecPtrResult (XLogRecPtr ptr , TimeLineID tli );
89+ static void SendXlogRecPtrResult (XLogRecPtr ptr , TimeLineID tli , bool wal_keys );
9090static void SendTablespaceList (List * tablespaces );
9191
9292static const bbsink_ops bbsink_copystream_ops = {
@@ -146,7 +146,7 @@ bbsink_copystream_begin_backup(bbsink *sink)
146146 mysink -> msgbuffer [0 ] = 'd' ; /* archive or manifest data */
147147
148148 /* Tell client the backup start location. */
149- SendXlogRecPtrResult (state -> startptr , state -> starttli );
149+ SendXlogRecPtrResult (state -> startptr , state -> starttli , state -> tde_have_wal_keys );
150150
151151 /* Send client a list of tablespaces. */
152152 SendTablespaceList (state -> tablespaces );
@@ -298,7 +298,7 @@ bbsink_copystream_end_backup(bbsink *sink, XLogRecPtr endptr,
298298 TimeLineID endtli )
299299{
300300 SendCopyDone ();
301- SendXlogRecPtrResult (endptr , endtli );
301+ SendXlogRecPtrResult (endptr , endtli , false );
302302}
303303
304304/*
@@ -338,17 +338,17 @@ SendCopyDone(void)
338338 * XLogRecPtr record (in text format)
339339 */
340340static void
341- SendXlogRecPtrResult (XLogRecPtr ptr , TimeLineID tli )
341+ SendXlogRecPtrResult (XLogRecPtr ptr , TimeLineID tli , bool wal_keys )
342342{
343343 DestReceiver * dest ;
344344 TupOutputState * tstate ;
345345 TupleDesc tupdesc ;
346- Datum values [2 ];
347- bool nulls [2 ] = {0 };
346+ Datum values [3 ];
347+ bool nulls [3 ] = {0 };
348348
349349 dest = CreateDestReceiver (DestRemoteSimple );
350350
351- tupdesc = CreateTemplateTupleDesc (2 );
351+ tupdesc = CreateTemplateTupleDesc (3 );
352352 TupleDescInitBuiltinEntry (tupdesc , (AttrNumber ) 1 , "recptr" , TEXTOID , -1 , 0 );
353353
354354 /*
@@ -357,12 +357,16 @@ SendXlogRecPtrResult(XLogRecPtr ptr, TimeLineID tli)
357357 */
358358 TupleDescInitBuiltinEntry (tupdesc , (AttrNumber ) 2 , "tli" , INT8OID , -1 , 0 );
359359
360+
361+ TupleDescInitBuiltinEntry (tupdesc , (AttrNumber ) 3 , "walkeys" , INT4OID , -1 , 0 );
362+
360363 /* send RowDescription */
361364 tstate = begin_tup_output_tupdesc (dest , tupdesc , & TTSOpsVirtual );
362365
363366 /* Data row */
364367 values [0 ] = CStringGetTextDatum (psprintf ("%X/%X" , LSN_FORMAT_ARGS (ptr )));
365368 values [1 ] = Int64GetDatum (tli );
369+ values [2 ] = BoolGetDatum (wal_keys );
366370 do_tup_output (tstate , values , nulls );
367371
368372 end_tup_output (tstate );
0 commit comments