• Alvaro Herrera's avatar
    Adjust walsender usage of xlogreader, simplify APIs · 850196b6
    Alvaro Herrera authored
    * Have both physical and logical walsender share a 'xlogreader' state
      struct for tracking state.  This replaces the existing globals sendSeg
      and sendCxt.
    
    * Change WALRead not to receive XLogReaderState->seg and ->segcxt as
      separate arguments anymore; just use the ones from 'state'.  This is
      made possible by the above change.
    
    * have the XLogReader segment_open contract require the callbacks to
      install the file descriptor in the state struct themselves instead of
      returning it.  xlogreader was already ignoring any possible failed
      return from the callbacks, relying solely on them never returning.
    
      (This point is not altogether excellent, as it means the callbacks
      have to know more of XLogReaderState; but to really improve on that
      we would have to pass back error info from the callbacks to
      xlogreader.  And the complexity would not be saved but instead just
      transferred to the callers of WALRead, which would have to learn how
      to throw errors from the open_segment callback in addition of, as
      currently, from pg_pread.)
    
    * segment_open no longer receives the 'segcxt' as a separate argument,
      since it's part of the XLogReaderState argument.
    
    Per comments from Kyotaro Horiguchi.
    
    Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
    Discussion: https://postgr.es/m/20200511203336.GA9913@alvherre.pgsql
    850196b6
pg_waldump.c 28.5 KB