mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix the incorrect data type of float values in PDO query results
Close GH-12476
This commit is contained in:
parent
8372da71eb
commit
6d10a69898
3 changed files with 153 additions and 0 deletions
|
@ -51,6 +51,10 @@
|
|||
#define TIMESTAMPOID 1114
|
||||
#define VARCHARLABEL "varchar"
|
||||
#define VARCHAROID 1043
|
||||
#define FLOAT4LABEL "float4"
|
||||
#define FLOAT4OID 700
|
||||
#define FLOAT8LABEL "float8"
|
||||
#define FLOAT8OID 701
|
||||
|
||||
|
||||
|
||||
|
@ -513,6 +517,18 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, zval *result, enum pd
|
|||
#endif
|
||||
ZVAL_LONG(result, ZEND_ATOL(ptr));
|
||||
break;
|
||||
case FLOAT4OID:
|
||||
case FLOAT8OID:
|
||||
if (strncmp(ptr, "Infinity", len) == 0) {
|
||||
ZVAL_DOUBLE(result, ZEND_INFINITY);
|
||||
} else if (strncmp(ptr, "-Infinity", len) == 0) {
|
||||
ZVAL_DOUBLE(result, -ZEND_INFINITY);
|
||||
} else if (strncmp(ptr, "NaN", len) == 0) {
|
||||
ZVAL_DOUBLE(result, ZEND_NAN);
|
||||
} else {
|
||||
ZVAL_DOUBLE(result, zend_strtod(ptr, NULL));
|
||||
}
|
||||
break;
|
||||
|
||||
case OIDOID: {
|
||||
char *end_ptr;
|
||||
|
@ -632,6 +648,12 @@ static int pgsql_stmt_get_column_meta(pdo_stmt_t *stmt, zend_long colno, zval *r
|
|||
case INT4OID:
|
||||
add_assoc_string(return_value, "native_type", INT4LABEL);
|
||||
break;
|
||||
case FLOAT4OID:
|
||||
add_assoc_string(return_value, "native_type", FLOAT4LABEL);
|
||||
break;
|
||||
case FLOAT8OID:
|
||||
add_assoc_string(return_value, "native_type", FLOAT8LABEL);
|
||||
break;
|
||||
case TEXTOID:
|
||||
add_assoc_string(return_value, "native_type", TEXTLABEL);
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue