diff options
author | Matteo Beccati <mbeccati@php.net> | 2009-04-23 13:26:10 +0000 |
---|---|---|
committer | Matteo Beccati <mbeccati@php.net> | 2009-04-23 13:26:10 +0000 |
commit | 0b576f6f1135479bbc466dbb29da5a352d853161 (patch) | |
tree | b0288acc381f5ed85d9848df4a3656e39ba7f6c1 /ext/pdo_pgsql | |
parent | b7747cf30c7d79ba20030d4dc9b8d897c9d1400c (diff) | |
download | php-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.c | 10 | ||||
-rw-r--r-- | ext/pdo_pgsql/tests/bug46274_2.phpt | 16 |
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 |