Fix float parsing in ecpg INFORMIX mode.

This commit is contained in:
Michael Meskes 2017-11-02 20:46:34 +01:00
parent 4b0fbfdf81
commit 6976a4f05f

View File

@ -57,7 +57,7 @@ garbage_left(enum ARRAY_TYPE isarray, char **scan_length, enum COMPAT_MODE compa
/* skip invalid characters */ /* skip invalid characters */
do { do {
(*scan_length)++; (*scan_length)++;
} while (**scan_length != ' ' && **scan_length != '\0' && isdigit(**scan_length)); } while (isdigit(**scan_length));
return false; return false;
} }
@ -401,7 +401,8 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
if (isarray && *scan_length == '"') if (isarray && *scan_length == '"')
scan_length++; scan_length++;
if (garbage_left(isarray, &scan_length, compat)) /* no special INFORMIX treatment for floats */
if (garbage_left(isarray, &scan_length, ECPG_COMPAT_PGSQL))
{ {
ecpg_raise(lineno, ECPG_FLOAT_FORMAT, ecpg_raise(lineno, ECPG_FLOAT_FORMAT,
ECPG_SQLSTATE_DATATYPE_MISMATCH, pval); ECPG_SQLSTATE_DATATYPE_MISMATCH, pval);