Skip to content

Commit 9084922

Browse files
committed
Fix #78855: Native PHP types in database fetches - float added
1 parent 9c22ba8 commit 9084922

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

‎ext/pgsql/pgsql.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@
7979
#define INT8OID 20
8080
#define TEXTOID 25
8181
#define OIDOID 26
82+
#define FLOAT4OID 700
83+
#define FLOAT8OID 701
8284

8385
#if ZEND_LONG_MAX < UINT_MAX
8486
#define PGSQL_RETURN_OID(oid) do { \
@@ -2742,6 +2744,10 @@ static inline void php_pgsql_get_field_value(zval *value, PGresult *pgsql_result
27422744
case BOOLOID:
27432745
ZVAL_BOOL(value, *element == 't');
27442746
break;
2747+
case FLOAT4OID:
2748+
case FLOAT8OID:
2749+
ZVAL_DOUBLE(value, zend_strtod(element, NULL));
2750+
break;
27452751
case OIDOID:
27462752
case INT2OID:
27472753
case INT4OID:

‎ext/pgsql/tests/bug78855.phpt

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ include 'config.inc';
1212

1313
$db = pg_connect($conn_str);
1414

15-
$res = pg_query($db, "SELECT null, true, false, 1::smallint, 2::int, 3::oid, 'text', '\\x3031'::bytea");
15+
$res = pg_query($db, "SELECT null, true, false, 1::smallint, 2::int, 3::oid, 1.1::real, 1.2::float, 'text', '\\x3031'::bytea");
1616
var_dump(pg_fetch_array($res, 0, PGSQL_NUM));
1717
var_dump(pg_fetch_array($res, 0, PGSQL_NUM|PGSQL_TYPED));
1818

@@ -21,7 +21,7 @@ var_dump(pg_fetch_all($res, PGSQL_NUM|PGSQL_TYPED));
2121

2222
?>
2323
--EXPECTF--
24-
array(8) {
24+
array(10) {
2525
[0]=>
2626
NULL
2727
[1]=>
@@ -35,11 +35,15 @@ array(8) {
3535
[5]=>
3636
string(1) "3"
3737
[6]=>
38-
string(4) "text"
38+
string(3) "1.1"
3939
[7]=>
40+
string(3) "1.2"
41+
[8]=>
42+
string(4) "text"
43+
[9]=>
4044
string(6) "\x3031"
4145
}
42-
array(8) {
46+
array(10) {
4347
[0]=>
4448
NULL
4549
[1]=>
@@ -53,13 +57,17 @@ array(8) {
5357
[5]=>
5458
int(3)
5559
[6]=>
56-
string(4) "text"
60+
float(1.1)
5761
[7]=>
62+
float(1.2)
63+
[8]=>
64+
string(4) "text"
65+
[9]=>
5866
string(2) "01"
5967
}
6068
array(1) {
6169
[0]=>
62-
array(8) {
70+
array(10) {
6371
[0]=>
6472
NULL
6573
[1]=>
@@ -73,14 +81,18 @@ array(1) {
7381
[5]=>
7482
string(1) "3"
7583
[6]=>
76-
string(4) "text"
84+
string(3) "1.1"
7785
[7]=>
86+
string(3) "1.2"
87+
[8]=>
88+
string(4) "text"
89+
[9]=>
7890
string(6) "\x3031"
7991
}
8092
}
8193
array(1) {
8294
[0]=>
83-
array(8) {
95+
array(10) {
8496
[0]=>
8597
NULL
8698
[1]=>
@@ -94,8 +106,12 @@ array(1) {
94106
[5]=>
95107
int(3)
96108
[6]=>
97-
string(4) "text"
109+
float(1.1)
98110
[7]=>
111+
float(1.2)
112+
[8]=>
113+
string(4) "text"
114+
[9]=>
99115
string(2) "01"
100116
}
101117
}

0 commit comments

Comments
 (0)