@@ -648,6 +648,7 @@ static void
648
648
show_archive_plain (const char * instance_name , uint32 xlog_seg_size ,
649
649
parray * tli_list , bool show_name )
650
650
{
651
+ parray * actual_tli_list = parray_new ();
651
652
#define SHOW_ARCHIVE_FIELDS_COUNT 10
652
653
int i ;
653
654
const char * names [SHOW_ARCHIVE_FIELDS_COUNT ] =
@@ -663,15 +664,24 @@ show_archive_plain(const char *instance_name, uint32 xlog_seg_size,
663
664
for (i = 0 ; i < SHOW_ARCHIVE_FIELDS_COUNT ; i ++ )
664
665
widths [i ] = strlen (names [i ]);
665
666
666
- rows = (ShowArchiveRow * ) palloc0 (parray_num (tli_list ) *
667
+ /* Ignore empty timelines */
668
+ for (i = 0 ; i < parray_num (tli_list ); i ++ )
669
+ {
670
+ timelineInfo * tlinfo = (timelineInfo * ) parray_get (tli_list , i );
671
+
672
+ if (tlinfo -> n_xlog_files > 0 )
673
+ parray_append (actual_tli_list , tlinfo );
674
+ }
675
+
676
+ rows = (ShowArchiveRow * ) palloc0 (parray_num (actual_tli_list ) *
667
677
sizeof (ShowArchiveRow ));
668
678
669
679
/*
670
680
* Fill row values and calculate maximum width of each field.
671
681
*/
672
- for (i = 0 ; i < parray_num (tli_list ); i ++ )
682
+ for (i = 0 ; i < parray_num (actual_tli_list ); i ++ )
673
683
{
674
- timelineInfo * tlinfo = (timelineInfo * ) parray_get (tli_list , i );
684
+ timelineInfo * tlinfo = (timelineInfo * ) parray_get (actual_tli_list , i );
675
685
ShowArchiveRow * row = & rows [i ];
676
686
int cur = 0 ;
677
687
float zratio = 0 ;
@@ -770,7 +780,7 @@ show_archive_plain(const char *instance_name, uint32 xlog_seg_size,
770
780
/*
771
781
* Print values.
772
782
*/
773
- for (i = parray_num (tli_list ) - 1 ; i >= 0 ; i -- )
783
+ for (i = parray_num (actual_tli_list ) - 1 ; i >= 0 ; i -- )
774
784
{
775
785
ShowArchiveRow * row = & rows [i ];
776
786
int cur = 0 ;
@@ -818,6 +828,7 @@ show_archive_plain(const char *instance_name, uint32 xlog_seg_size,
818
828
}
819
829
820
830
pfree (rows );
831
+ //TODO: free timelines
821
832
}
822
833
823
834
static void
@@ -826,6 +837,7 @@ show_archive_json(const char *instance_name, uint32 xlog_seg_size,
826
837
{
827
838
int i ;
828
839
PQExpBuffer buf = & show_buf ;
840
+ parray * actual_tli_list = parray_new ();
829
841
830
842
if (!first_instance )
831
843
appendPQExpBufferChar (buf , ',' );
@@ -836,18 +848,28 @@ show_archive_json(const char *instance_name, uint32 xlog_seg_size,
836
848
json_add_value (buf , "instance" , instance_name , json_level , true);
837
849
json_add_key (buf , "timelines" , json_level );
838
850
851
+ /* Ignore empty timelines */
852
+
853
+ for (i = 0 ; i < parray_num (tli_list ); i ++ )
854
+ {
855
+ timelineInfo * tlinfo = (timelineInfo * ) parray_get (tli_list , i );
856
+
857
+ if (tlinfo -> n_xlog_files > 0 )
858
+ parray_append (actual_tli_list , tlinfo );
859
+ }
860
+
839
861
/*
840
862
* List timelines.
841
863
*/
842
864
json_add (buf , JT_BEGIN_ARRAY , & json_level );
843
865
844
- for (i = parray_num (tli_list ) - 1 ; i >= 0 ; i -- )
866
+ for (i = parray_num (actual_tli_list ) - 1 ; i >= 0 ; i -- )
845
867
{
846
- timelineInfo * tlinfo = (timelineInfo * ) parray_get (tli_list , i );
868
+ timelineInfo * tlinfo = (timelineInfo * ) parray_get (actual_tli_list , i );
847
869
char tmp_buf [20 ];
848
870
float zratio = 0 ;
849
871
850
- if (i != (parray_num (tli_list ) - 1 ))
872
+ if (i != (parray_num (actual_tli_list ) - 1 ))
851
873
appendPQExpBufferChar (buf , ',' );
852
874
853
875
json_add (buf , JT_BEGIN_OBJECT , & json_level );
0 commit comments