On 2014-03-17 12:50:37 -0400, Tom Lane wrote:
> Alvaro Herrera <alvherre@2ndquadrant.com> writes:
> > I noticed (by running "cd src/include ; make check" with the attached
> > patch applied) that since commit b89e151054 ("Introduce logical
> > decoding.") tqual.h now emits this warning when compiled standalone:
>
> > /pgsql/source/HEAD/src/include/utils/tqual.h:101:13: warning: ‘struct HTAB’ declared inside parameter list [enabled
bydefault]
> > /pgsql/source/HEAD/src/include/utils/tqual.h:101:13: warning: its scope is only this definition or declaration,
whichis probably not what you want [enabled by default]
>
> > The prototype in question is:
>
> > /*
> > * To avoid leaking to much knowledge about reorderbuffer implementation
> > * details this is implemented in reorderbuffer.c not tqual.c.
> > */
> > extern bool ResolveCminCmaxDuringDecoding(HTAB *tuplecid_data,
> > Snapshot snapshot,
> > HeapTuple htup,
> > Buffer buffer,
> > CommandId *cmin, CommandId *cmax);
>
> I guess the real question is why such a prototype is in tqual.h in
> the first place. ISTM this should be pushed somewhere specific to
> reorderbuffer.c. I'm -1 on having struct HTAB bleed into tqual.h
> via either of the methods you suggest.
It's the only logical decoding specific routine that's called by tqual.c
which doesn't need anything else from reorderbuffer. I'd like to avoid
more stuff bleeding in there...
Greetings,
Andres Freund
-- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services