}
} else {
zval *zv;
+ Oid typ = PQftype(res, c);
char *val = PQgetvalue(res, row, c);
int len = PQgetlength(res, row, c);
MAKE_STD_ZVAL(zv);
- switch (PQftype(res, c)) {
+ switch (typ) {
#ifdef HAVE_PHP_PQ_TYPE_H
# undef PHP_PQ_TYPE
# include "php_pq_type.h"
break;
#endif
default:
- ZVAL_STRINGL(zv, val, len, 1);
+ if (PHP_PQ_TYPE_IS_ARRAY(typ) && (Z_ARRVAL_P(zv) = php_pq_parse_array(val, len TSRMLS_CC))) {
+ Z_TYPE_P(zv) = IS_ARRAY;
+ } else {
+ ZVAL_STRINGL(zv, val, len, 1);
+ }
break;
}