summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql
diff options
context:
space:
mode:
authorMatteo Beccati <mbeccati@php.net>2009-04-23 13:26:10 +0000
committerMatteo Beccati <mbeccati@php.net>2009-04-23 13:26:10 +0000
commit0b576f6f1135479bbc466dbb29da5a352d853161 (patch)
treeb0288acc381f5ed85d9848df4a3656e39ba7f6c1 /ext/pdo_pgsql
parentb7747cf30c7d79ba20030d4dc9b8d897c9d1400c (diff)
downloadphp-git-0b576f6f1135479bbc466dbb29da5a352d853161.tar.gz
MFH:
- Reverted previous fix for bug #46274 and properly fixed it - Fixed bug #48060 # Also added tests for pdo_oci as it's the only other driver currently # using streams: no regression found
Diffstat (limited to 'ext/pdo_pgsql')
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c10
-rw-r--r--ext/pdo_pgsql/tests/bug46274_2.phpt16
2 files changed, 18 insertions, 8 deletions
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index d711ecff29..8a7882ffe4 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -619,8 +619,14 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned
return 0;
} else {
*ptr = php_pdo_pgsql_unescape_bytea(*ptr, &tmp_len);
- *len = tmp_len;
- *caller_frees = 1;
+ if (!tmp_len) {
+ /* Empty string, return as empty stream */
+ *ptr = (char *)php_stream_memory_open(TEMP_STREAM_READONLY, "", 0);
+ *len = 0;
+ } else {
+ *len = tmp_len;
+ *caller_frees = 1;
+ }
}
break;
case PDO_PARAM_NULL:
diff --git a/ext/pdo_pgsql/tests/bug46274_2.phpt b/ext/pdo_pgsql/tests/bug46274_2.phpt
index 5e35556880..eb675afe9e 100644
--- a/ext/pdo_pgsql/tests/bug46274_2.phpt
+++ b/ext/pdo_pgsql/tests/bug46274_2.phpt
@@ -47,11 +47,13 @@ $res = $db->query("SELECT blob1 from test_one_blob");
var_dump($x = $res->fetch());
var_dump(fread($x['blob1'], 10));
-// Empty string
+// Resource
var_dump($res->fetch());
+var_dump(fread($x['blob1'], 10));
-// Empty string
+// Resource
var_dump($res->fetch());
+var_dump(fread($x['blob1'], 10));
// NULL
var_dump($res->fetch());
@@ -69,16 +71,18 @@ array(2) {
string(3) "foo"
array(2) {
["blob1"]=>
- string(0) ""
+ resource(%d) of type (stream)
[0]=>
- string(0) ""
+ resource(%d) of type (stream)
}
+string(0) ""
array(2) {
["blob1"]=>
- string(0) ""
+ resource(%d) of type (stream)
[0]=>
- string(0) ""
+ resource(%d) of type (stream)
}
+string(0) ""
array(2) {
["blob1"]=>
NULL