@@ -49,7 +49,8 @@ typedef struct XLogDumpConfig
49
49
bool stats_per_record ;
50
50
51
51
/* filter options */
52
- int filter_by_rmgr ;
52
+ bool filter_by_rmgr [RM_MAX_ID + 1 ];
53
+ bool filter_by_rmgr_enabled ;
53
54
TransactionId filter_by_xid ;
54
55
bool filter_by_xid_enabled ;
55
56
} XLogDumpConfig ;
@@ -825,7 +826,8 @@ main(int argc, char **argv)
825
826
config .stop_after_records = -1 ;
826
827
config .already_displayed_records = 0 ;
827
828
config .follow = false;
828
- config .filter_by_rmgr = -1 ;
829
+ /* filter_by_rmgr array was zeroed by memset above */
830
+ config .filter_by_rmgr_enabled = false;
829
831
config .filter_by_xid = InvalidTransactionId ;
830
832
config .filter_by_xid_enabled = false;
831
833
config .stats = false;
@@ -884,12 +886,12 @@ main(int argc, char **argv)
884
886
{
885
887
if (pg_strcasecmp (optarg , RmgrDescTable [i ].rm_name ) == 0 )
886
888
{
887
- config .filter_by_rmgr = i ;
889
+ config .filter_by_rmgr [i ] = true;
890
+ config .filter_by_rmgr_enabled = true;
888
891
break ;
889
892
}
890
893
}
891
-
892
- if (config .filter_by_rmgr == -1 )
894
+ if (i > RM_MAX_ID )
893
895
{
894
896
pg_log_error ("resource manager \"%s\" does not exist" ,
895
897
optarg );
@@ -1098,8 +1100,8 @@ main(int argc, char **argv)
1098
1100
}
1099
1101
1100
1102
/* apply all specified filters */
1101
- if (config .filter_by_rmgr != -1 &&
1102
- config .filter_by_rmgr != record -> xl_rmid )
1103
+ if (config .filter_by_rmgr_enabled &&
1104
+ ! config .filter_by_rmgr [ record -> xl_rmid ] )
1103
1105
continue ;
1104
1106
1105
1107
if (config .filter_by_xid_enabled &&
0 commit comments