Kevin Grittner wrote:
> Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
>
> > 1. slru.c doesn't consider file names longer than 4 hexadecimal chars.
>
> > Fixing (1) is simple: we can have each SLRU user declare how many digits
> > to have in file names. All existing users but pg_multixact/members
> > should declare 4 digits; that one should declare 5. That way, the
> > correct number of zeroes are allocated at the start point and we get
> > nice, equal-width file names. Eventually, predicate.c can change to
> > wider file names and get rid of some strange code it has to deal with
> > overrun.
>
> That would be nice.
>
> There would be the issue of how to deal with pg_upgrade, though. If
> I remember correctly, there is no strong reason not to blow away
> any existing files in the pg_serial subdirectory at startup (the
> way NOTIFY code does), and at one point I had code to do that. I
> think we took that code out because the files would be deleted
> "soon enough" anyway. Barring objection, deleting them at startup
> seems like a sane way to handle pg_upgrade issues when we do
> increase the filename size.
Agreed. It's easy to have the files deleted at startup now that the
truncation stuff uses a callback. There is already a callback that's
used to delete all files, so you won't need to write any code to make it
behave that way.
FWIW for pg_multixact/members during pg_upgrade from 9.3 to 9.4 we will
need to rename existing files, prepending a zero to each file whose name
is four chars in length.
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services