*** ./src/backend/port/aix/mkldexport.sh.orig	Tue Sep 23 19:43:33 1997
--- ./src/backend/port/aix/mkldexport.sh	Mon Sep 25 15:25:39 2000
***************
*** 43,49 ****
  if [ -z "$2" ]; then
  	echo '#!'
  else
! 	echo '#!' $2/$OBJNAME
  fi
  $NM -Bg $1 | \
  	egrep ' [TDB] ' | \
--- 43,54 ----
  if [ -z "$2" ]; then
  	echo '#!'
  else
! 	if [ "$2" = "." ]; then
! 		# for the base executable (AIX 4.2 and up)
! 		echo '#! .'
! 	else
! 		echo '#!' $2/$OBJNAME
! 	fi
  fi
  $NM -Bg $1 | \
  	egrep ' [TDB] ' | \
*** ./src/backend/port/dynloader/aix.h.orig	Tue Sep  1 06:30:51 1998
--- ./src/backend/port/dynloader/aix.h	Mon Sep 25 17:56:50 2000
***************
*** 6,14 ****
   * 30159 Hannover, Germany
   */
  
! #ifndef __dlfcn_h__
! #define __dlfcn_h__
  
  #ifdef __cplusplus
  extern		"C"
  {
--- 6,20 ----
   * 30159 Hannover, Germany
   */
  
! #ifndef PORT_PROTOS_H
! #define PORT_PROTOS_H
  
+ #ifdef HAVE_DLOPEN
+ 
+ #include <dlfcn.h>
+ 
+ #else /* HAVE_DLOPEN */
+ 
  #ifdef __cplusplus
  extern		"C"
  {
***************
*** 48,56 ****
  
  #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	 /* __dlfcn_h__ */
--- 54,67 ----
  
  #endif
  
! #endif /* HAVE_DLOPEN */
  
! #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 */
*** ./src/backend/port/dynloader/aix.c.orig	Sat Jul  8 09:00:21 2000
--- ./src/backend/port/dynloader/aix.c	Mon Sep 25 18:02:21 2000
***************
*** 14,20 ****
--- 14,27 ----
  #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
   * loaded module and build a list of exported symbols and their virtual
***************
*** 601,603 ****
--- 608,612 ----
  	free(buf);
  	return ret;
  }
+ 
+ #endif /* HAVE_DLOPEN */
*** ./src/include/config.h.in.orig	Wed Aug 30 09:00:17 2000
--- ./src/include/config.h.in	Mon Sep 25 15:25:39 2000
***************
*** 572,577 ****
--- 572,580 ----
  /* 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
+ 
  
  /*
   *------------------------------------------------------------------------
*** ./src/makefiles/Makefile.aix.orig	Fri Sep  1 09:00:20 2000
--- ./src/makefiles/Makefile.aix	Mon Sep 25 15:58:56 2000
***************
*** 22,25 ****
  
  %$(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)
--- 22,25 ----
  
  %$(DLSUFFIX): %.o %$(EXPSUFF)
  	@echo Making share library $@ from $*.o, $*$(EXPSUFF), and installed postgres.imp
! 	$(CC) -Wl,-H512 -Wl,-bM:SRE -Wl,-bI:$(libdir)/$(POSTGRES_IMP) -Wl,-bE:$*$(EXPSUFF) -o $@ $*.o $(LDFLAGS) $(CFLAGS_SL)
*** ./src/test/regress/expected/horology-1947-PDT.out.orig	Fri Sep 15 09:00:16 2000
--- ./src/test/regress/expected/horology-1947-PDT.out	Mon Sep 25 16:01:27 2000
***************
*** 2,7 ****
--- 2,49 ----
  -- 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";
*** ./configure.in.orig	Fri Sep 22 09:00:12 2000
--- ./configure.in	Mon Sep 25 15:25:40 2000
***************
*** 704,710 ****
          ;;
  esac
  
! AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid])
  
  AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
  [AC_TRY_LINK(
--- 704,710 ----
          ;;
  esac
  
! 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(
