Thread: Can't compile with profiling after BRIN autosummarization
make maintainer-clean > /dev/null ; ./configure --enable-profiling > /dev/null && make -j8 >/dev/null
In file included from ipc.c:29:
../../../../src/include/postmaster/autovacuum.h:73: error: expected declaration specifiers or '...' before 'BlockNumber'
make[4]: *** [ipc.o] Error 1
make[3]: *** [ipc-recursive] Error 2
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [storage-recursive] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [all-backend-recurse] Error 2
make: *** [all-src-recurse] Error 2
This git bisects down to:
commit 7526e10224f0792201e99631567bbe44492bbde4
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: Sat Apr 1 14:00:53 2017 -0300
BRIN auto-summarization
The lines are:
extern void AutoVacuumRequestWork(AutoVacuumWorkItemType type,
Oid relationId, BlockNumber blkno);
I have no idea why --enable-profiling would change the way this line is seen.
gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
Cheers,
Jeff
On Mon, Apr 3, 2017 at 9:31 AM, Jeff Janes <jeff.janes@gmail.com> wrote:
make maintainer-clean > /dev/null ; ./configure --enable-profiling > /dev/null && make -j8 >/dev/nullIn file included from ipc.c:29:../../../../src/include/postmaster/autovacuum.h:73: error: expected declaration specifiers or '...' before 'BlockNumber' make[4]: *** [ipc.o] Error 1make[3]: *** [ipc-recursive] Error 2make[3]: *** Waiting for unfinished jobs....make[2]: *** [storage-recursive] Error 2make[2]: *** Waiting for unfinished jobs....make[1]: *** [all-backend-recurse] Error 2make: *** [all-src-recurse] Error 2This git bisects down to:commit 7526e10224f0792201e99631567bbe44492bbde4 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>Date: Sat Apr 1 14:00:53 2017 -0300BRIN auto-summarizationThe lines are:extern void AutoVacuumRequestWork(AutoVacuumWorkItemType type, Oid relationId, BlockNumber blkno);I have no idea why --enable-profiling would change the way this line is seen.gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
A newer gcc gave a better error message which lead me to add the line:
#include "storage/block.h" /* for typedef BlockNumber */
into autovacuum.h, which fixes the problem.
I don't know if that is the correct fix, or why it is only needed under profiling.
Cheers,
Jeff
Jeff Janes wrote: > This git bisects down to: > > commit 7526e10224f0792201e99631567bbe44492bbde4 > Author: Alvaro Herrera <alvherre@alvh.no-ip.org> > Date: Sat Apr 1 14:00:53 2017 -0300 > > BRIN auto-summarization > > The lines are: > > extern void AutoVacuumRequestWork(AutoVacuumWorkItemType type, > Oid relationId, BlockNumber blkno); Oh, of course: the BlockNumber typedef is not #included by autovacuum.h. Mea culpa -- will fix. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services