Please apply the following patch to fix problems with the AIX port

and the fmgr redesign.

It makes the homebrewn dl*() functions for more recent Versions of AIX
obsolete
by using the system dl*() functions instead.

It also fixes the expected file for the horology regression test.
Please regenerate configure from configure.in, I don't have the
environment/time.

Andreas
This commit is contained in:
Bruce Momjian 2000-09-29 22:00:49 +00:00
parent 72ad5fe15c
commit 469ebeefd6
7 changed files with 82 additions and 12 deletions

View File

@ -716,7 +716,7 @@ fcntl(0, F_SETLK, &lck);],
;;
esac
AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid])
AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen])
AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
[AC_TRY_LINK(

View File

@ -43,7 +43,12 @@ fi
if [ -z "$2" ]; then
echo '#!'
else
echo '#!' $2/$OBJNAME
if [ "$2" = "." ]; then
# for the base executable (AIX 4.2 and up)
echo '#! .'
else
echo '#!' $2/$OBJNAME
fi
fi
$NM -Bg $1 | \
egrep ' [TDB] ' | \

View File

@ -14,6 +14,13 @@
#include "postgres.h"
#include "dynloader.h"
#ifndef HAVE_DLOPEN
/*
* AIX 4.3 and up has dlopen() and friends in -ldl.
* A la long, the homebrewn dl*() functions below should be obsolete.
*/
/*
* We simulate dlopen() et al. through a call to load. Because AIX has
* no call to find an exported symbol we read the loader section of the
@ -601,3 +608,5 @@ findMain(void)
free(buf);
return ret;
}
#endif /* HAVE_DLOPEN */

View File

@ -1,13 +1,19 @@
/*
* $Id: aix.h,v 1.2 1998/09/01 04:30:51 momjian Exp $
* $Id: aix.h,v 1.3 2000/09/29 22:00:43 momjian Exp $
*
* @(#)dlfcn.h 1.4 revision of 95/04/25 09:36:52
* This is an unpublished work copyright (c) 1992 HELIOS Software GmbH
* 30159 Hannover, Germany
*/
#ifndef __dlfcn_h__
#define __dlfcn_h__
#ifndef PORT_PROTOS_H
#define PORT_PROTOS_H
#ifdef HAVE_DLOPEN
#include <dlfcn.h>
#else /* HAVE_DLOPEN */
#ifdef __cplusplus
extern "C"
@ -48,9 +54,14 @@ extern "C"
#endif
#define pg_dlopen(f) dlopen(filename, RTLD_LAZY)
#define pg_dlsym(h,f) dlsym(h, f)
#define pg_dlclose(h) dlclose(h)
#define pg_dlerror() dlerror()
#endif /* HAVE_DLOPEN */
#endif /* __dlfcn_h__ */
#include "fmgr.h"
#include "utils/dynamic_loader.h"
#define pg_dlopen(f) dlopen(f, RTLD_LAZY)
#define pg_dlsym dlsym
#define pg_dlclose dlclose
#define pg_dlerror dlerror
#endif /* PORT_PROTOS_H */

View File

@ -8,7 +8,7 @@
* or in config.h afterwards. Of course, if you edit config.h, then your
* changes will be overwritten the next time you run configure.
*
* $Id: config.h.in,v 1.136 2000/09/29 13:53:32 petere Exp $
* $Id: config.h.in,v 1.137 2000/09/29 22:00:45 momjian Exp $
*/
#ifndef CONFIG_H
@ -581,6 +581,9 @@ extern void srandom(unsigned int seed);
/* Define if C++ compiler accepts "#include <string>" */
#undef HAVE_CXX_STRING_HEADER
/* Define if a system lib (-ldl) has dlopen() (needed for AIX) */
#undef HAVE_DLOPEN
/*
*------------------------------------------------------------------------

View File

@ -22,4 +22,4 @@ $(POSTGRES_IMP):
%$(DLSUFFIX): %.o %$(EXPSUFF)
@echo Making share library $@ from $*.o, $*$(EXPSUFF), and installed postgres.imp
$(LD) -H512 -bM:SRE -bI:$(libdir)/$(POSTGRES_IMP) -bE:$*$(EXPSUFF) -o $@ $*.o $(LDFLAGS) $(CFLAGS_SL)
$(CC) -Wl,-H512 -Wl,-bM:SRE -Wl,-bI:$(libdir)/$(POSTGRES_IMP) -Wl,-bE:$*$(EXPSUFF) -o $@ $*.o $(LDFLAGS) $(CFLAGS_SL)

View File

@ -2,6 +2,48 @@
-- HOROLOGY
--
--
-- date, time arithmetic
--
SELECT date '1981-02-03' + time '04:05:06' AS "Date + Time";
Date + Time
------------------------------
Tue Feb 03 04:05:06 1981 PST
(1 row)
SELECT date '1991-02-03' + time with time zone '04:05:06 PST' AS "Date + Time PST";
Date + Time PST
------------------------------
Sun Feb 03 04:05:06 1991 PST
(1 row)
SELECT date '2001-02-03' + time with time zone '04:05:06 UTC' AS "Date + Time UTC";
Date + Time UTC
------------------------------
Fri Feb 02 20:05:06 2001 PST
(1 row)
SELECT date '1991-02-03' + interval '2 years' AS "Add Two Years";
Add Two Years
------------------------------
Wed Feb 03 00:00:00 1993 PST
(1 row)
SELECT date '2001-12-13' - interval '2 years' AS "Subtract Two Years";
Subtract Two Years
------------------------------
Mon Dec 13 00:00:00 1999 PST
(1 row)
SELECT date '1991-02-03' - time '04:05:06' AS "Subtract Time";
Subtract Time
------------------------------
Sat Feb 02 19:54:54 1991 PST
(1 row)
SELECT date '1991-02-03' - time with time zone '04:05:06 UTC' AS "Subtract Time UTC";
ERROR: Unable to identify an operator '-' for types 'date' and 'timetz'
You will have to retype this query using an explicit cast
--
-- timestamp, interval arithmetic
--
SELECT timestamp '1996-03-01' - interval '1 second' AS "Feb 29";