|
51 | 51 | #define TIMESTAMPOID 1114 |
52 | 52 | #define VARCHARLABEL "varchar" |
53 | 53 | #define VARCHAROID 1043 |
| 54 | +#define FLOAT4LABEL "float4" |
| 55 | +#define FLOAT4OID 700 |
| 56 | +#define FLOAT8LABEL "float8" |
| 57 | +#define FLOAT8OID 701 |
54 | 58 |
|
55 | 59 |
|
56 | 60 |
|
@@ -513,6 +517,18 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, zval *result, enum pd |
513 | 517 | #endif |
514 | 518 | ZVAL_LONG(result, ZEND_ATOL(ptr)); |
515 | 519 | break; |
| 520 | + case FLOAT4OID: |
| 521 | + case FLOAT8OID: |
| 522 | + if (strncmp(ptr, "Infinity", len) == 0) { |
| 523 | + ZVAL_DOUBLE(result, ZEND_INFINITY); |
| 524 | + } else if (strncmp(ptr, "-Infinity", len) == 0) { |
| 525 | + ZVAL_DOUBLE(result, -ZEND_INFINITY); |
| 526 | + } else if (strncmp(ptr, "NaN", len) == 0) { |
| 527 | + ZVAL_DOUBLE(result, ZEND_NAN); |
| 528 | + } else { |
| 529 | + ZVAL_DOUBLE(result, zend_strtod(ptr, NULL)); |
| 530 | + } |
| 531 | + break; |
516 | 532 |
|
517 | 533 | case OIDOID: { |
518 | 534 | char *end_ptr; |
@@ -632,6 +648,12 @@ static int pgsql_stmt_get_column_meta(pdo_stmt_t *stmt, zend_long colno, zval *r |
632 | 648 | case INT4OID: |
633 | 649 | add_assoc_string(return_value, "native_type", INT4LABEL); |
634 | 650 | break; |
| 651 | + case FLOAT4OID: |
| 652 | + add_assoc_string(return_value, "native_type", FLOAT4LABEL); |
| 653 | + break; |
| 654 | + case FLOAT8OID: |
| 655 | + add_assoc_string(return_value, "native_type", FLOAT8LABEL); |
| 656 | + break; |
635 | 657 | case TEXTOID: |
636 | 658 | add_assoc_string(return_value, "native_type", TEXTLABEL); |
637 | 659 | break; |
|
0 commit comments