diff options
Diffstat (limited to 'src/interfaces/ecpg/lib/data.c')
-rw-r--r-- | src/interfaces/ecpg/lib/data.c | 394 |
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); |