aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/ecpglib/data.c
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2003-03-27 14:29:17 +0000
committerMichael Meskes <meskes@postgresql.org>2003-03-27 14:29:17 +0000
commit89508a8492cfb705e575b088103b1bfa0a56a465 (patch)
treef626eb0d39f83c1fa2fc3f401ae5d07b1a8a09ec /src/interfaces/ecpg/ecpglib/data.c
parent5e5c5cd31af02ec7e0d22951d095de6a0d35215c (diff)
downloadpostgresql-89508a8492cfb705e575b088103b1bfa0a56a465.tar.gz
postgresql-89508a8492cfb705e575b088103b1bfa0a56a465.zip
More changes to pgtypeslib and set optimization to -O1.
Diffstat (limited to 'src/interfaces/ecpg/ecpglib/data.c')
-rw-r--r--src/interfaces/ecpg/ecpglib/data.c37
1 files changed, 31 insertions, 6 deletions
diff --git a/src/interfaces/ecpg/ecpglib/data.c b/src/interfaces/ecpg/ecpglib/data.c
index 81f9d62e691..5d6f31f089b 100644
--- a/src/interfaces/ecpg/ecpglib/data.c
+++ b/src/interfaces/ecpg/ecpglib/data.c
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.2 2003/03/20 15:56:50 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.3 2003/03/27 14:29:17 meskes Exp $ */
#include "postgres_fe.h"
@@ -13,6 +13,7 @@
#include "pgtypes_numeric.h"
#include "pgtypes_date.h"
#include "pgtypes_timestamp.h"
+#include "pgtypes_interval.h"
bool
ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
@@ -100,9 +101,10 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
unsigned long ures;
double dres;
char *scan_length;
- NumericVar *nres;
+ Numeric *nres;
Date ddres;
Timestamp tres;
+ Interval *ires;
case ECPGt_short:
case ECPGt_int:
@@ -392,16 +394,39 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
if ((isarray && *scan_length != ',' && *scan_length != '}')
|| (!isarray && *scan_length != '\0')) /* Garbage left */
{
- ECPGraise(lineno, ECPG_FLOAT_FORMAT, pval);
+ ECPGraise(lineno, ECPG_NUMERIC_FORMAT, pval);
return (false);
}
}
else
nres = PGTYPESnumeric_aton("0.0", &scan_length);
- PGTYPESnumeric_copy(nres, (NumericVar *)(var + offset * act_tuple));
+ PGTYPESnumeric_copy(nres, (Numeric *)(var + offset * act_tuple));
break;
+ case ECPGt_interval:
+ if (pval)
+ {
+ if (isarray && *pval == '"')
+ ires = PGTYPESinterval_atoi(pval + 1, &scan_length);
+ else
+ ires = PGTYPESinterval_atoi(pval, &scan_length);
+
+ if (isarray && *scan_length == '"')
+ scan_length++;
+
+ if ((isarray && *scan_length != ',' && *scan_length != '}')
+ || (!isarray && *scan_length != '\0')) /* Garbage left */
+ {
+ ECPGraise(lineno, ECPG_INTERVAL_FORMAT, pval);
+ return (false);
+ }
+ }
+ else
+ ires = PGTYPESinterval_atoi("0 seconds", NULL);
+
+ PGTYPESinterval_copy(ires, (Interval *)(var + offset * act_tuple));
+ break;
case ECPGt_date:
if (pval)
{
@@ -416,7 +441,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
if ((isarray && *scan_length != ',' && *scan_length != '}')
|| (!isarray && *scan_length != '\0')) /* Garbage left */
{
- ECPGraise(lineno, ECPG_FLOAT_FORMAT, pval);
+ ECPGraise(lineno, ECPG_DATE_FORMAT, pval);
return (false);
}
@@ -438,7 +463,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
if ((isarray && *scan_length != ',' && *scan_length != '}')
|| (!isarray && *scan_length != '\0')) /* Garbage left */
{
- ECPGraise(lineno, ECPG_FLOAT_FORMAT, pval);
+ ECPGraise(lineno, ECPG_TIMESTAMP_FORMAT, pval);
return (false);
}