diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 15b7af94c6dfa58339fba627c2e4b485493a8c1d..e69457d673e6c7493bebbf40d03e0069c17164df 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -1661,6 +1661,10 @@ Fri Sep 26 17:14:07 CEST 2003 - Incorrect datatype with precision argument should not create a segfault. + +Fri Oct 3 12:04:57 CEST 2003 + + - Hide Informix datatypes in PostgreSQL built process. - Set ecpg version to 3.0.0 - Set ecpg library to 4.0.0 - Set pgtypes library to 1.0.0 diff --git a/src/interfaces/ecpg/compatlib/informix.c b/src/interfaces/ecpg/compatlib/informix.c index e3559a7a4a869e26d5443433e91d8608c54626bd..63f43a7ec9b9b56c60209a6b02850e078cb43fba 100644 --- a/src/interfaces/ecpg/compatlib/informix.c +++ b/src/interfaces/ecpg/compatlib/informix.c @@ -5,9 +5,10 @@ #include <ctype.h> #include <ecpgtype.h> -#include <ecpg_informix.h> +#include <compatlib.h> #include <pgtypes_error.h> #include <pgtypes_date.h> +#include <pgtypes_numeric.h> #include <sqltypes.h> char *ECPGalloc(long, int); @@ -886,7 +887,7 @@ rtypwidth(int sqltype, int sqllen) } int -dtcvfmtasc(char *inbuf, char *fmtstr, dtime_t * dtvalue) +dtcvfmtasc(char *inbuf, char *fmtstr, timestamp * dtvalue) { return PGTYPEStimestamp_defmt_asc(inbuf, fmtstr, dtvalue); } diff --git a/src/interfaces/ecpg/include/Makefile b/src/interfaces/ecpg/include/Makefile index 7320a76c2ea8cb77e91428733a2faf08452924c9..e7462126bb673b35e04b25c1c580950bf1af6d63 100644 --- a/src/interfaces/ecpg/include/Makefile +++ b/src/interfaces/ecpg/include/Makefile @@ -5,7 +5,7 @@ include $(top_builddir)/src/Makefile.global install: all installdirs install-headers .PHONY: install-headers -ecpg_headers = ecpgerrno.h ecpglib.h ecpgtype.h sqlca.h sql3types.h ecpg_informix.h pgtypes_error.h pgtypes_numeric.h pgtypes_timestamp.h pgtypes_date.h datetime.h decimal.h pgtypes_interval.h sqltypes.h +ecpg_headers = ecpgerrno.h ecpglib.h ecpgtype.h sqlca.h sql3types.h ecpg_informix.h pgtypes_error.h pgtypes_numeric.h pgtypes_timestamp.h pgtypes_date.h datetime.h decimal.h pgtypes_interval.h sqltypes.h compatlib.h install-headers: $(ecpg_headers) for i in $^; do $(INSTALL_DATA) $$i $(DESTDIR)$(includedir); done diff --git a/src/interfaces/ecpg/include/compatlib.h b/src/interfaces/ecpg/include/compatlib.h new file mode 100644 index 0000000000000000000000000000000000000000..2cb85fdf1ab4fbfd3bc575110c642746201eece8 --- /dev/null +++ b/src/interfaces/ecpg/include/compatlib.h @@ -0,0 +1,82 @@ +#ifndef _COMPATLIB_H +#define _COMPATLIB_H +/* + * This file contains stuff needed to be as compatible to other DBMS as possible. + */ + +#include <ecpglib.h> +#include <pgtypes_date.h> +#include <pgtypes_interval.h> +#include <pgtypes_numeric.h> +#include <pgtypes_timestamp.h> + +/* The following stuff is for Informix compatibility */ + +#define SQLNOTFOUND 100 + +#define ECPG_INFORMIX_NUM_OVERFLOW -1200 +#define ECPG_INFORMIX_NUM_UNDERFLOW -1201 +#define ECPG_INFORMIX_DIVIDE_ZERO -1202 +#define ECPG_INFORMIX_BAD_YEAR -1204 +#define ECPG_INFORMIX_BAD_MONTH -1205 +#define ECPG_INFORMIX_BAD_DAY -1206 +#define ECPG_INFORMIX_ENOSHORTDATE -1209 +#define ECPG_INFORMIX_DATE_CONVERT -1210 +#define ECPG_INFORMIX_OUT_OF_MEMORY -1211 +#define ECPG_INFORMIX_ENOTDMY -1212 +#define ECPG_INFORMIX_BAD_NUMERIC -1213 +#define ECPG_INFORMIX_BAD_EXPONENT -1216 +#define ECPG_INFORMIX_BAD_DATE -1218 +#define ECPG_INFORMIX_EXTRA_CHARS -1264 + +extern int rdatestr(date, char *); +extern void rtoday(date *); +extern int rjulmdy(date, short *); +extern int rdefmtdate(date *, char *, char *); +extern int rfmtdate(date, char *, char *); +extern int rmdyjul(short *, date *); +extern int rstrdate(char *, date *); +extern int rdayofweek(date); + +extern int rfmtlong(long, char *, char *); +extern int rgetmsg(int, char *, int); +extern int risnull(int, char *); +extern int rsetnull(int, char *); +extern int rtypalign(int, int); +extern int rtypmsize(int, int); +extern int rtypwidth(int, int); +extern void rupshift(char *); + +extern int byleng(char *, int); +extern void ldchar(char *, int, char *); + +extern void ECPG_informix_set_var(int, void *, int); +extern void *ECPG_informix_get_var(int); + +/* Informix defines these in decimal.h */ +int decadd(decimal *, decimal *, decimal *); +int deccmp(decimal *, decimal *); +void deccopy(decimal *, decimal *); +int deccvasc(char *, int, decimal *); +int deccvdbl(double, decimal *); +int deccvint(int, decimal *); +int deccvlong(long, decimal *); +int decdiv(decimal *, decimal *, decimal *); +int decmul(decimal *, decimal *, decimal *); +int decsub(decimal *, decimal *, decimal *); +int dectoasc(decimal *, char *, int, int); +int dectodbl(decimal *, double *); +int dectoint(decimal *, int *); +int dectolong(decimal *, long *); + +/* Informix defines these in datetime.h */ + +extern void dtcurrent(timestamp *); +extern int dtcvasc(char *, timestamp *); +extern int dtsub(timestamp *, timestamp *, interval *); +extern int dttoasc(timestamp *, char *); +extern int dttofmtasc(timestamp *, char *, int, char *); +extern int intoasc(interval *, char *); +extern int dtcvfmtasc(char *, char *, timestamp *); + +#endif /* ndef _COMPATLIB_H */ diff --git a/src/interfaces/ecpg/include/datetime.h b/src/interfaces/ecpg/include/datetime.h index c40398da0f4c84cadde6131ecf431c9c5b61122c..dd5824a4668782c72760e5bf1ea0cb923806769c 100644 --- a/src/interfaces/ecpg/include/datetime.h +++ b/src/interfaces/ecpg/include/datetime.h @@ -1,18 +1,9 @@ #ifndef _ECPG_DATETIME_H #define _ECPG_DATETIME_H -#include <pgtypes_timestamp.h> -#include <pgtypes_interval.h> +#include <compatlib.h> typedef timestamp dtime_t; typedef interval intrvl_t; -extern void dtcurrent(dtime_t *); -extern int dtcvasc(char *, dtime_t *); -extern int dtsub(dtime_t *, dtime_t *, intrvl_t *); -extern int dttoasc(dtime_t *, char *); -extern int dttofmtasc(dtime_t *, char *, int, char *); -extern int intoasc(intrvl_t *, char *); -extern int dtcvfmtasc(char *, char *, dtime_t *); - #endif /* ndef _ECPG_DATETIME_H */ diff --git a/src/interfaces/ecpg/include/decimal.h b/src/interfaces/ecpg/include/decimal.h index eff42c22ca381bca7aab215a32d73edd17e59f41..96901927cdd46fb0f4c118a1ab5282a6d15b0130 100644 --- a/src/interfaces/ecpg/include/decimal.h +++ b/src/interfaces/ecpg/include/decimal.h @@ -1,23 +1,8 @@ #ifndef _ECPG_DECIMAL_H #define _ECPG_DECIMAL_H -#include <pgtypes_numeric.h> +#include <compatlib.h> typedef decimal dec_t; -int decadd(dec_t *, dec_t *, dec_t *); -int deccmp(dec_t *, dec_t *); -void deccopy(dec_t *, dec_t *); -int deccvasc(char *, int, dec_t *); -int deccvdbl(double, dec_t *); -int deccvint(int, dec_t *); -int deccvlong(long, dec_t *); -int decdiv(dec_t *, dec_t *, dec_t *); -int decmul(dec_t *, dec_t *, dec_t *); -int decsub(dec_t *, dec_t *, dec_t *); -int dectoasc(dec_t *, char *, int, int); -int dectodbl(dec_t *, double *); -int dectoint(dec_t *, int *); -int dectolong(dec_t *, long *); - #endif /* ndef _ECPG_DECIMAL_H */ diff --git a/src/interfaces/ecpg/include/ecpg_informix.h b/src/interfaces/ecpg/include/ecpg_informix.h index 102db4bc16d2e2cc78adce138bfe4f1feb68e6c1..7f8ee28adf231a8e80485be57e1b4cfbee647334 100644 --- a/src/interfaces/ecpg/include/ecpg_informix.h +++ b/src/interfaces/ecpg/include/ecpg_informix.h @@ -6,48 +6,6 @@ #include <decimal.h> #include <datetime.h> -#include <ecpglib.h> -#include <pgtypes_date.h> - -#define SQLNOTFOUND 100 - -#define ECPG_INFORMIX_NUM_OVERFLOW -1200 -#define ECPG_INFORMIX_NUM_UNDERFLOW -1201 -#define ECPG_INFORMIX_DIVIDE_ZERO -1202 -#define ECPG_INFORMIX_BAD_YEAR -1204 -#define ECPG_INFORMIX_BAD_MONTH -1205 -#define ECPG_INFORMIX_BAD_DAY -1206 -#define ECPG_INFORMIX_ENOSHORTDATE -1209 -#define ECPG_INFORMIX_DATE_CONVERT -1210 -#define ECPG_INFORMIX_OUT_OF_MEMORY -1211 -#define ECPG_INFORMIX_ENOTDMY -1212 -#define ECPG_INFORMIX_BAD_NUMERIC -1213 -#define ECPG_INFORMIX_BAD_EXPONENT -1216 -#define ECPG_INFORMIX_BAD_DATE -1218 -#define ECPG_INFORMIX_EXTRA_CHARS -1264 - -extern int rdatestr(date, char *); -extern void rtoday(date *); -extern int rjulmdy(date, short *); -extern int rdefmtdate(date *, char *, char *); -extern int rfmtdate(date, char *, char *); -extern int rmdyjul(short *, date *); -extern int rstrdate(char *, date *); -extern int rdayofweek(date); - -extern int rfmtlong(long, char *, char *); -extern int rgetmsg(int, char *, int); -extern int risnull(int, char *); -extern int rsetnull(int, char *); -extern int rtypalign(int, int); -extern int rtypmsize(int, int); -extern int rtypwidth(int, int); -extern void rupshift(char *); - -extern int byleng(char *, int); -extern void ldchar(char *, int, char *); - -extern void ECPG_informix_set_var(int, void *, int); -extern void *ECPG_informix_get_var(int); +#include <compatlib.h> #endif /* ndef _ECPG_INFORMIX_H */ diff --git a/src/interfaces/ecpg/pgtypeslib/interval.c b/src/interfaces/ecpg/pgtypeslib/interval.c index cbf606069663123bdeae5e71280943a6cac3b623..c49cd0e997907e3cc821f3ddab219a728c26ddc2 100644 --- a/src/interfaces/ecpg/pgtypeslib/interval.c +++ b/src/interfaces/ecpg/pgtypeslib/interval.c @@ -10,7 +10,6 @@ #include "dt.h" #include "pgtypes_error.h" #include "pgtypes_interval.h" -#include "datetime.h" /* TrimTrailingZeros() * ... resulting from printing numbers with full precision.