From: Michael Meskes Date: Thu, 14 Sep 2006 08:02:38 +0000 (+0000) Subject: Added missing constuctor/destructor for interval and date. X-Git-Url: http://waps.l3s.uni-hannover.de/gitweb/?a=commitdiff_plain;h=da49b0e4c6ad5072f5024e33eaf97e1bc2ba8ebf;p=users%2Fbernd%2Fpostgres.git 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 a9c670b31a..de65af023c 100644 --- a/src/interfaces/ecpg/include/pgtypes_date.h +++ b/src/interfaces/ecpg/include/pgtypes_date.h @@ -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 9f66b77bf1..092706b80b 100644 --- a/src/interfaces/ecpg/include/pgtypes_interval.h +++ b/src/interfaces/ecpg/include/pgtypes_interval.h @@ -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 ae2207161f..01ad6b77aa 100644 --- a/src/interfaces/ecpg/pgtypeslib/datetime.c +++ b/src/interfaces/ecpg/pgtypeslib/datetime.c @@ -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 2ef8b7fcab..1685f7c7bd 100644 --- a/src/interfaces/ecpg/pgtypeslib/interval.c +++ b/src/interfaces/ecpg/pgtypeslib/interval.c @@ -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);