From: Michael Meskes Date: Thu, 14 Sep 2006 08:02:38 +0000 (+0000) Subject: Added missing constuctor/destructor for interval and date. X-Git-Tag: REL8_2_BETA1~89 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0f0d6765ce0b10b989df60d89f2f6f4661c72218;p=postgresql Added missing constuctor/destructor for interval and date. --- diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 6f698f4cbd..5e4524e791 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -2144,5 +2144,10 @@ Tu 5. Sep 11:49:08 CEST 2006 - Fixed port number setting in regression suite. - Added some interval checks to regression suite. - Started to cleanup complex tests. + +Th 14. Sep 09:47:03 CEST 2006 + + - Completely removed complex tests. + - Added missing constuctor/destructor for interval and date. - Set ecpg library version to 5.2. - Set ecpg version to 4.2.1. diff --git a/src/interfaces/ecpg/include/pgtypes_date.h b/src/interfaces/ecpg/include/pgtypes_date.h index 10fe53c8c8..2afc97198e 100644 --- a/src/interfaces/ecpg/include/pgtypes_date.h +++ b/src/interfaces/ecpg/include/pgtypes_date.h @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/pgtypes_date.h,v 1.9 2006/03/11 04:38:39 momjian Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/pgtypes_date.h,v 1.10 2006/09/14 08:02:38 meskes Exp $ */ #ifndef PGTYPES_DATETIME #define PGTYPES_DATETIME @@ -12,6 +12,8 @@ extern "C" { #endif +extern date *PGTYPESdate_new(void); +extern void PGTYPESdate_free(date *); extern date PGTYPESdate_from_asc(char *, char **); extern char *PGTYPESdate_to_asc(date); extern date PGTYPESdate_from_timestamp(timestamp); diff --git a/src/interfaces/ecpg/include/pgtypes_interval.h b/src/interfaces/ecpg/include/pgtypes_interval.h index ad427c4887..b2ab1a871e 100644 --- a/src/interfaces/ecpg/include/pgtypes_interval.h +++ b/src/interfaces/ecpg/include/pgtypes_interval.h @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/pgtypes_interval.h,v 1.11 2006/08/24 10:48:21 meskes Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/pgtypes_interval.h,v 1.12 2006/09/14 08:02:38 meskes Exp $ */ #ifndef PGTYPES_INTERVAL #define PGTYPES_INTERVAL @@ -49,6 +49,8 @@ extern "C" { #endif +extern interval *PGTYPESinterval_new(void); +extern void PGTYPESinterval_free(interval *); extern interval *PGTYPESinterval_from_asc(char *, char **); extern char *PGTYPESinterval_to_asc(interval *); extern int PGTYPESinterval_copy(interval *, interval *); diff --git a/src/interfaces/ecpg/pgtypeslib/datetime.c b/src/interfaces/ecpg/pgtypeslib/datetime.c index 095209a4fc..e323d579e7 100644 --- a/src/interfaces/ecpg/pgtypeslib/datetime.c +++ b/src/interfaces/ecpg/pgtypeslib/datetime.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/pgtypeslib/datetime.c,v 1.30 2006/08/15 06:40:19 meskes Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/pgtypeslib/datetime.c,v 1.31 2006/09/14 08:02:38 meskes Exp $ */ #include "postgres_fe.h" @@ -12,6 +12,21 @@ #include "pgtypes_error.h" #include "pgtypes_date.h" +date * +PGTYPESdate_new(void) +{ + date *result; + result = (date *) pgtypes_alloc(sizeof(date)); + /* result can be NULL if we run out of memory */ + return result; +} + +void +PGTYPESdate_free(date *d) +{ + free(d); +} + date PGTYPESdate_from_timestamp(timestamp dt) { diff --git a/src/interfaces/ecpg/pgtypeslib/interval.c b/src/interfaces/ecpg/pgtypeslib/interval.c index d68866856c..b49267eb62 100644 --- a/src/interfaces/ecpg/pgtypeslib/interval.c +++ b/src/interfaces/ecpg/pgtypeslib/interval.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/pgtypeslib/interval.c,v 1.34 2006/09/05 12:17:09 meskes Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/pgtypeslib/interval.c,v 1.35 2006/09/14 08:02:38 meskes Exp $ */ #include "postgres_fe.h" #include @@ -753,6 +753,21 @@ tm2interval(struct tm * tm, fsec_t fsec, interval * span) return 0; } /* tm2interval() */ +interval * +PGTYPESinterval_new(void) +{ + interval *result; + result = (interval *) pgtypes_alloc(sizeof(interval)); + /* result can be NULL if we run out of memory */ + return result; +} + +void +PGTYPESinterval_free(interval *intvl) +{ + free(intvl); +} + interval * PGTYPESinterval_from_asc(char *str, char **endptr) { diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c index c92f354ec4..e5388b6fa8 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c @@ -70,6 +70,7 @@ main(void) + #line 51 "dt_test2.pgc" date date1 ; @@ -82,8 +83,11 @@ main(void) #line 54 "dt_test2.pgc" interval * i1 ; -/* exec sql end declare section */ + #line 55 "dt_test2.pgc" + date * dc ; +/* exec sql end declare section */ +#line 56 "dt_test2.pgc" int i, j; @@ -98,9 +102,12 @@ main(void) free(text); date1 = PGTYPESdate_from_timestamp(ts1); - text = PGTYPESdate_to_asc(date1); + dc = PGTYPESdate_new(); + *dc = date1; + text = PGTYPESdate_to_asc(*dc); printf("Date of timestamp: %s\n", text); free(text); + PGTYPESdate_free(dc); for (i = 0; dates[i]; i++) { @@ -139,6 +146,7 @@ main(void) for (i = 0; intervals[i]; i++) { + interval *ic; i1 = PGTYPESinterval_from_asc(intervals[i], &endptr); if (*endptr) printf("endptr set to %s\n", endptr); @@ -153,6 +161,13 @@ main(void) text = PGTYPESinterval_to_asc(i1); printf("interval[%d]: %s\n", i, text ? text : "-"); free(text); + + ic = PGTYPESinterval_new(); + PGTYPESinterval_copy(i1, ic); + text = PGTYPESinterval_to_asc(i1); + printf("interval_copy[%d]: %s\n", i, text ? text : "-"); + free(text); + PGTYPESinterval_free(ic); } return (0); diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout index 1a40893aed..24e9d26dfe 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout @@ -88,9 +88,15 @@ TS[19,0]: 0099-01-08 00:04:00 BC TS[19,1]: 0099-01-08 01:59:00 BC TS[19,2]: 0099-01-08 13:24:40 BC interval[0]: @ 1 min +interval_copy[0]: @ 1 min interval[1]: @ 1 day 12 hours 59 mins 10 secs +interval_copy[1]: @ 1 day 12 hours 59 mins 10 secs interval[2]: @ 2 days 12 hours 59 mins 10 secs +interval_copy[2]: @ 2 days 12 hours 59 mins 10 secs interval[3]: @ 1 day 12 hours 59 mins 10 secs +interval_copy[3]: @ 1 day 12 hours 59 mins 10 secs interval[4]: @ 1 day 1 hour 1 min 1 sec +interval_copy[4]: @ 1 day 1 hour 1 min 1 sec interval[5]: @ 1 year 59 mins +interval_copy[5]: @ 1 year 59 mins Error parsing interval 6 diff --git a/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc b/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc index 09a95f7aba..08d1d6c412 100644 --- a/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc +++ b/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc @@ -52,6 +52,7 @@ main(void) timestamp ts1, ts2; char *text; interval *i1; + date *dc; exec sql end declare section; int i, j; @@ -66,9 +67,12 @@ main(void) free(text); date1 = PGTYPESdate_from_timestamp(ts1); - text = PGTYPESdate_to_asc(date1); + dc = PGTYPESdate_new(); + *dc = date1; + text = PGTYPESdate_to_asc(*dc); printf("Date of timestamp: %s\n", text); free(text); + PGTYPESdate_free(dc); for (i = 0; dates[i]; i++) { @@ -107,6 +111,7 @@ main(void) for (i = 0; intervals[i]; i++) { + interval *ic; i1 = PGTYPESinterval_from_asc(intervals[i], &endptr); if (*endptr) printf("endptr set to %s\n", endptr); @@ -121,6 +126,13 @@ main(void) text = PGTYPESinterval_to_asc(i1); printf("interval[%d]: %s\n", i, text ? text : "-"); free(text); + + ic = PGTYPESinterval_new(); + PGTYPESinterval_copy(i1, ic); + text = PGTYPESinterval_to_asc(i1); + printf("interval_copy[%d]: %s\n", i, text ? text : "-"); + free(text); + PGTYPESinterval_free(ic); } return (0);