Thread: Re: [COMMITTERS] pgsql: Add include needed for new getrusage() call.

Re: [COMMITTERS] pgsql: Add include needed for new getrusage() call.

From
Tom Lane
Date:
momjian@postgresql.org (Bruce Momjian) writes:
> Add include needed for new getrusage() call.

If that's actually needed, how did the code build before?  It's always
included sys/resource.h, except possibly on machines without getrusage
... are there any?  I was thinking rusagestub was dead code, myself.
        regards, tom lane


Re: [COMMITTERS] pgsql: Add include needed for new

From
Bruce Momjian
Date:
Tom Lane wrote:
> momjian@postgresql.org (Bruce Momjian) writes:
> > Add include needed for new getrusage() call.
> 
> If that's actually needed, how did the code build before?  It's always
> included sys/resource.h, except possibly on machines without getrusage
> ... are there any?  I was thinking rusagestub was dead code, myself.

Uh, all I know is that it started failing yesterday.  The failure I got
was:
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline-fno-strict-aliasing -O1 -Wall
-Wmissing-prototypes-Wmissing-declarations-Wpointer-arith -Wcast-align-I../../../src/include
-I/usr/local/include/readline-I/usr/contrib/include-DWIN32_STACK_RLIMIT=4194304  -c -o postgres.opostgres.cIn file
includedfrom postgres.c:31:/usr/include/sys/resource.h:63: field `ru_utime' has incomplete
type/usr/include/sys/resource.h:64:field `ru_stime' has incomplete typegmake: *** [postgres.o] Error 1
 

and resource.h has:
struct  rusage {    struct timeval ru_utime;    /* user time used */    struct timeval ru_stime;    /* system time used
*/

so it is timeval it wanted. But I have:
#define HAVE_GETRUSAGE 1

For me, 'struct timeval' is coming in via #include "libpq/libpq.h", but
of course that is _after_ the inclusion of resource.h.  Not sure where
you see that sys/resource.h was always there.  Looking at the CVS diffs
I see it added only in the past day.

--  Bruce Momjian   bruce@momjian.us EnterpriseDB    http://www.enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: [COMMITTERS] pgsql: Add include needed for new getrusage() call.

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> For me, 'struct timeval' is coming in via #include "libpq/libpq.h", but
> of course that is _after_ the inclusion of resource.h.

Ah, that explains it.

> Not sure where
> you see that sys/resource.h was always there.  Looking at the CVS diffs
> I see it added only in the past day.

It was further down before.

There's still something pretty strange here, though, because AFAICS
configure should have rejected sys/resource.h if it needs sys/time.h.
        regards, tom lane


Re: [COMMITTERS] pgsql: Add include needed for new

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > For me, 'struct timeval' is coming in via #include "libpq/libpq.h", but
> > of course that is _after_ the inclusion of resource.h.
> 
> Ah, that explains it.
> 
> > Not sure where
> > you see that sys/resource.h was always there.  Looking at the CVS diffs
> > I see it added only in the past day.
> 
> It was further down before.
> 
> There's still something pretty strange here, though, because AFAICS
> configure should have rejected sys/resource.h if it needs sys/time.h.

I did some research and it turns out the configure test for includes
uses the following source file, which includes <sys/stat.h>, which
itself includes <sys/time.h> on my BSD/OS machine, so that is why
configure has no problem finding resource.h usable.

---------------------------------------------------------------------------

/* confdefs.h.  */

#define PACKAGE_NAME "PostgreSQL"
#define PACKAGE_TARNAME "postgresql"
#define PACKAGE_VERSION "8.2beta1"
#define PACKAGE_STRING "PostgreSQL 8.2beta1"
#define PACKAGE_BUGREPORT "pgsql-bugs@postgresql.org"
#define PG_VERSION "8.2beta1"
#define ENABLE_NLS 1
#define DEF_PGPORT 5432
#define DEF_PGPORT_STR "5432"
#define PG_VERSION_STR "PostgreSQL 8.2beta1 on i386-pc-bsdi4.3.1, compiled by GCC 2.95.3"
#define ENABLE_THREAD_SAFETY 1
#define PG_KRB_SRVNAM "postgres"
#define USE_SSL 1
#define PG_VERSION_NUM 80200
#define HAVE_LIBREADLINE 1
#define HAVE_LIBZ 1
#define HAVE_SPINLOCKS 1
#define HAVE_LIBCRYPTO 1
#define HAVE_LIBSSL 1
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_UNISTD_H 1
#define HAVE_GETOPT_H 1
#define HAVE_IEEEFP_H 1
#define HAVE_PWD_H 1
#define HAVE_SYS_IPC_H 1
/* end confdefs.h.  */
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <sys/resource.h>


--  Bruce Momjian   bruce@momjian.us EnterpriseDB    http://www.enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: [COMMITTERS] pgsql: Add include needed for new getrusage() call.

From
Peter Eisentraut
Date:
Tom Lane wrote:
> There's still something pretty strange here, though, because AFAICS
> configure should have rejected sys/resource.h if it needs sys/time.h.

I think it only gives you a warning.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/