aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/lib/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/ecpg/lib/data.c')
-rw-r--r--src/interfaces/ecpg/lib/data.c394
1 files changed, 197 insertions, 197 deletions
diff --git a/src/interfaces/ecpg/lib/data.c b/src/interfaces/ecpg/lib/data.c
index b7398caf6d7..1b97478e20d 100644
--- a/src/interfaces/ecpg/lib/data.c
+++ b/src/interfaces/ecpg/lib/data.c
@@ -8,11 +8,11 @@
bool
get_data(PGresult *results, int act_tuple, int act_field, int lineno,
- enum ECPGttype type, enum ECPGttype ind_type,
- void *var, void *ind, long varcharsize, long offset,
- bool isarray)
+ enum ECPGttype type, enum ECPGttype ind_type,
+ void *var, void *ind, long varcharsize, long offset,
+ bool isarray)
{
- char *pval = (char *)PQgetvalue(results, act_tuple, act_field);
+ char *pval = (char *) PQgetvalue(results, act_tuple, act_field);
ECPGlog("get_data line %d: RESULT: %s\n", lineno, pval ? pval : "");
@@ -20,20 +20,20 @@ get_data(PGresult *results, int act_tuple, int act_field, int lineno,
/* let's check is it really is an array if it should be */
if (isarray)
{
- if (*pval != '{')
+ if (*pval != '{')
{
ECPGlog("get_data data entry does not look like an array in line %d\n", lineno);
ECPGraise(lineno, ECPG_DATA_NOT_ARRAY, NULL);
- return(false);
+ return (false);
}
- else ++pval;
+ else
+ ++pval;
}
/* We will have to decode the value */
/*
- * check for null value and set indicator
- * accordingly
+ * check for null value and set indicator accordingly
*/
switch (ind_type)
{
@@ -61,226 +61,226 @@ get_data(PGresult *results, int act_tuple, int act_field, int lineno,
return (false);
break;
}
-
+
do
- {
- switch (type)
- {
- long res;
- unsigned long ures;
- double dres;
- char *scan_length;
+ {
+ switch (type)
+ {
+ long res;
+ unsigned long ures;
+ double dres;
+ char *scan_length;
- case ECPGt_short:
- case ECPGt_int:
- case ECPGt_long:
- if (pval)
- {
- res = strtol(pval, &scan_length, 10);
- if ((isarray && *scan_length != ',' && *scan_length != '}')
- || (!isarray && *scan_length != '\0')) /* Garbage left */
+ case ECPGt_short:
+ case ECPGt_int:
+ case ECPGt_long:
+ if (pval)
{
- ECPGraise(lineno, ECPG_INT_FORMAT, pval);
- return (false);
- res = 0L;
+ res = strtol(pval, &scan_length, 10);
+ if ((isarray && *scan_length != ',' && *scan_length != '}')
+ || (!isarray && *scan_length != '\0')) /* Garbage left */
+ {
+ ECPGraise(lineno, ECPG_INT_FORMAT, pval);
+ return (false);
+ res = 0L;
+ }
}
- }
- else
- res = 0L;
-
- switch (type)
- {
- case ECPGt_short:
- ((short *) var)[act_tuple] = (short) res;
- break;
- case ECPGt_int:
- ((int *) var)[act_tuple] = (int) res;
- break;
- case ECPGt_long:
- ((long *) var)[act_tuple] = res;
- break;
- default:
- /* Cannot happen */
- break;
- }
- break;
+ else
+ res = 0L;
- case ECPGt_unsigned_short:
- case ECPGt_unsigned_int:
- case ECPGt_unsigned_long:
- if (pval)
- {
- ures = strtoul(pval, &scan_length, 10);
- if ((isarray && *scan_length != ',' && *scan_length != '}')
- || (!isarray && *scan_length != '\0')) /* Garbage left */
+ switch (type)
{
- ECPGraise(lineno, ECPG_UINT_FORMAT, pval);
- return (false);
- ures = 0L;
+ case ECPGt_short:
+ ((short *) var)[act_tuple] = (short) res;
+ break;
+ case ECPGt_int:
+ ((int *) var)[act_tuple] = (int) res;
+ break;
+ case ECPGt_long:
+ ((long *) var)[act_tuple] = res;
+ break;
+ default:
+ /* Cannot happen */
+ break;
}
- }
- else
- ures = 0L;
-
- switch (type)
- {
- case ECPGt_unsigned_short:
- ((unsigned short *) var)[act_tuple] = (unsigned short) ures;
- break;
- case ECPGt_unsigned_int:
- ((unsigned int *) var)[act_tuple] = (unsigned int) ures;
- break;
- case ECPGt_unsigned_long:
- ((unsigned long *) var)[act_tuple] = ures;
- break;
- default:
- /* Cannot happen */
- break;
- }
- break;
+ break;
+ case ECPGt_unsigned_short:
+ case ECPGt_unsigned_int:
+ case ECPGt_unsigned_long:
+ if (pval)
+ {
+ ures = strtoul(pval, &scan_length, 10);
+ if ((isarray && *scan_length != ',' && *scan_length != '}')
+ || (!isarray && *scan_length != '\0')) /* Garbage left */
+ {
+ ECPGraise(lineno, ECPG_UINT_FORMAT, pval);
+ return (false);
+ ures = 0L;
+ }
+ }
+ else
+ ures = 0L;
- case ECPGt_float:
- case ECPGt_double:
- if (pval)
- {
- dres = strtod(pval, &scan_length);
- if ((isarray && *scan_length != ',' && *scan_length != '}')
- || (!isarray && *scan_length != '\0')) /* Garbage left */
+ switch (type)
{
- ECPGraise(lineno, ECPG_FLOAT_FORMAT, pval);
- return (false);
- dres = 0.0;
+ case ECPGt_unsigned_short:
+ ((unsigned short *) var)[act_tuple] = (unsigned short) ures;
+ break;
+ case ECPGt_unsigned_int:
+ ((unsigned int *) var)[act_tuple] = (unsigned int) ures;
+ break;
+ case ECPGt_unsigned_long:
+ ((unsigned long *) var)[act_tuple] = ures;
+ break;
+ default:
+ /* Cannot happen */
+ break;
}
- }
- else
- dres = 0.0;
+ break;
- switch (type)
- {
- case ECPGt_float:
- ((float *) var)[act_tuple] = dres;
- break;
- case ECPGt_double:
- ((double *) var)[act_tuple] = dres;
- break;
- default:
- /* Cannot happen */
- break;
- }
- break;
- case ECPGt_bool:
- if (pval)
- {
- if (pval[0] == 'f' && pval[1] == '\0')
+ case ECPGt_float:
+ case ECPGt_double:
+ if (pval)
{
- ((char *) var)[act_tuple] = false;
- break;
+ dres = strtod(pval, &scan_length);
+ if ((isarray && *scan_length != ',' && *scan_length != '}')
+ || (!isarray && *scan_length != '\0')) /* Garbage left */
+ {
+ ECPGraise(lineno, ECPG_FLOAT_FORMAT, pval);
+ return (false);
+ dres = 0.0;
+ }
}
- else if (pval[0] == 't' && pval[1] == '\0')
+ else
+ dres = 0.0;
+
+ switch (type)
{
- ((char *) var)[act_tuple] = true;
- break;
+ case ECPGt_float:
+ ((float *) var)[act_tuple] = dres;
+ break;
+ case ECPGt_double:
+ ((double *) var)[act_tuple] = dres;
+ break;
+ default:
+ /* Cannot happen */
+ break;
}
- else if (pval[0] == '\0' && PQgetisnull(results, act_tuple, act_field))
+ break;
+
+ case ECPGt_bool:
+ if (pval)
{
- /* NULL is valid */
- break;
+ if (pval[0] == 'f' && pval[1] == '\0')
+ {
+ ((char *) var)[act_tuple] = false;
+ break;
+ }
+ else if (pval[0] == 't' && pval[1] == '\0')
+ {
+ ((char *) var)[act_tuple] = true;
+ break;
+ }
+ else if (pval[0] == '\0' && PQgetisnull(results, act_tuple, act_field))
+ {
+ /* NULL is valid */
+ break;
+ }
}
- }
- ECPGraise(lineno, ECPG_CONVERT_BOOL, pval);
- return (false);
- break;
+ ECPGraise(lineno, ECPG_CONVERT_BOOL, pval);
+ return (false);
+ break;
- case ECPGt_char:
- case ECPGt_unsigned_char:
- {
- strncpy((char *) ((long) var + offset * act_tuple), pval, varcharsize);
- if (varcharsize && varcharsize < strlen(pval))
+ case ECPGt_char:
+ case ECPGt_unsigned_char:
{
- /* truncation */
- switch (ind_type)
+ strncpy((char *) ((long) var + offset * act_tuple), pval, varcharsize);
+ if (varcharsize && varcharsize < strlen(pval))
{
- case ECPGt_short:
- case ECPGt_unsigned_short:
- ((short *) ind)[act_tuple] = varcharsize;
- break;
- case ECPGt_int:
- case ECPGt_unsigned_int:
- ((int *) ind)[act_tuple] = varcharsize;
- break;
- case ECPGt_long:
- case ECPGt_unsigned_long:
- ((long *) ind)[act_tuple] = varcharsize;
- break;
- default:
- break;
+ /* truncation */
+ switch (ind_type)
+ {
+ case ECPGt_short:
+ case ECPGt_unsigned_short:
+ ((short *) ind)[act_tuple] = varcharsize;
+ break;
+ case ECPGt_int:
+ case ECPGt_unsigned_int:
+ ((int *) ind)[act_tuple] = varcharsize;
+ break;
+ case ECPGt_long:
+ case ECPGt_unsigned_long:
+ ((long *) ind)[act_tuple] = varcharsize;
+ break;
+ default:
+ break;
+ }
+ sqlca.sqlwarn[0] = sqlca.sqlwarn[1] = 'W';
}
- sqlca.sqlwarn[0] = sqlca.sqlwarn[1] = 'W';
}
- }
- break;
+ break;
- case ECPGt_varchar:
- {
- struct ECPGgeneric_varchar *variable =
- (struct ECPGgeneric_varchar *) ((long) var + offset * act_tuple);
+ case ECPGt_varchar:
+ {
+ struct ECPGgeneric_varchar *variable =
+ (struct ECPGgeneric_varchar *) ((long) var + offset * act_tuple);
- if (varcharsize == 0)
- strncpy(variable->arr, pval, strlen(pval));
- else
- strncpy(variable->arr, pval, varcharsize);
+ if (varcharsize == 0)
+ strncpy(variable->arr, pval, strlen(pval));
+ else
+ strncpy(variable->arr, pval, varcharsize);
- variable->len = strlen(pval);
- if (varcharsize > 0 && variable->len > varcharsize)
- {
- /* truncation */
- switch (ind_type)
+ variable->len = strlen(pval);
+ if (varcharsize > 0 && variable->len > varcharsize)
{
- case ECPGt_short:
- case ECPGt_unsigned_short:
- ((short *) ind)[act_tuple] = varcharsize;
- break;
- case ECPGt_int:
- case ECPGt_unsigned_int:
- ((int *) ind)[act_tuple] = varcharsize;
- break;
- case ECPGt_long:
- case ECPGt_unsigned_long:
- ((long *) ind)[act_tuple] = varcharsize;
- break;
- default:
- break;
- }
- sqlca.sqlwarn[0] = sqlca.sqlwarn[1] = 'W';
+ /* truncation */
+ switch (ind_type)
+ {
+ case ECPGt_short:
+ case ECPGt_unsigned_short:
+ ((short *) ind)[act_tuple] = varcharsize;
+ break;
+ case ECPGt_int:
+ case ECPGt_unsigned_int:
+ ((int *) ind)[act_tuple] = varcharsize;
+ break;
+ case ECPGt_long:
+ case ECPGt_unsigned_long:
+ ((long *) ind)[act_tuple] = varcharsize;
+ break;
+ default:
+ break;
+ }
+ sqlca.sqlwarn[0] = sqlca.sqlwarn[1] = 'W';
- variable->len = varcharsize;
+ variable->len = varcharsize;
+ }
}
- }
- break;
+ break;
- default:
- ECPGraise(lineno, ECPG_UNSUPPORTED, ECPGtype_name(type));
- return (false);
- break;
- }
- if (isarray)
- {
- bool string = false;
-
- /* set array to next entry */
- ++act_tuple;
-
- /* set pval to the next entry */
- for (; string || (*pval != ',' && *pval != '}'); ++pval)
- if (*pval == '"')
- string = string ? false : true;
-
- if (*pval == ',')
- ++pval;
- }
+ default:
+ ECPGraise(lineno, ECPG_UNSUPPORTED, ECPGtype_name(type));
+ return (false);
+ break;
+ }
+ if (isarray)
+ {
+ bool string = false;
+
+ /* set array to next entry */
+ ++act_tuple;
+
+ /* set pval to the next entry */
+ for (; string || (*pval != ',' && *pval != '}'); ++pval)
+ if (*pval == '"')
+ string = string ? false : true;
+
+ if (*pval == ',')
+ ++pval;
+ }
} while (isarray && *pval != '}');
return (true);