Browse Source

MFH

- Fixed bug #48060 (pdo_pgsql - large objects are returned as empty)
# Backported from 5.3.0, per gripe from Konstantin Ryabitsev
# Permission granted by Ilia
PHP-5.2.1RC1
Matteo Beccati 17 years ago
parent
commit
2acedb40e6
  1. 1
      NEWS
  2. 3
      ext/pdo/pdo_stmt.c
  3. 10
      ext/pdo_pgsql/pgsql_statement.c
  4. 16
      ext/pdo_pgsql/tests/bug46274_2.phpt

1
NEWS

@ -1,6 +1,7 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0? Sep 2009, PHP 5.2.11
- Fixed bug #48060 (pdo_pgsql - large objects are returned as empty). (Matteo)
03 Sep 2009, PHP 5.2.11RC2

3
ext/pdo/pdo_stmt.c

@ -587,9 +587,8 @@ static inline void fetch_value(pdo_stmt_t *stmt, zval *dest, int colno, int *typ
case PDO_PARAM_LOB:
if (value == NULL) {
ZVAL_NULL(dest);
} else if (value[0] == '\0') {
ZVAL_EMPTY_STRING(dest);
} else if (value_len == 0) {
/* Warning, empty strings need to be passed as stream */
if (stmt->dbh->stringify || new_type == PDO_PARAM_STR) {
char *buf = NULL;
size_t len;

10
ext/pdo_pgsql/pgsql_statement.c

@ -599,8 +599,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:

16
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

Loading…
Cancel
Save