+ MAKE_STD_ZVAL(zv);
+
+ switch (PQftype(res, c)) {
+#ifdef HAVE_PHP_PQ_TYPE_H
+# undef PHP_PQ_TYPE
+# include "php_pq_type.h"
+ case PHP_PQ_OID_BOOL:
+ ZVAL_BOOL(zv, *val == 't');
+ break;
+#if SIZEOF_LONG >= 8
+ case PHP_PQ_OID_INT8:
+ case PHP_PQ_OID_TID:
+#endif
+ case PHP_PQ_OID_INT4:
+ case PHP_PQ_OID_INT2:
+ case PHP_PQ_OID_XID:
+ case PHP_PQ_OID_OID:
+ ZVAL_LONG(zv, zend_atol(val, len));
+ break;
+
+ case PHP_PQ_OID_FLOAT4:
+ case PHP_PQ_OID_FLOAT8:
+ ZVAL_DOUBLE(zv, zend_strtod(val, NULL));
+ break;
+
+ case PHP_PQ_OID_ABSTIME:
+ case PHP_PQ_OID_DATE:
+ case PHP_PQ_OID_TIMESTAMP:
+ case PHP_PQ_OID_TIMESTAMPTZ:
+ php_pq_date_from_string(val, len, zv TSRMLS_CC);
+ break;
+
+
+#else
+ case 18: /* BOOL */
+ ZVAL_BOOL(zv, *val == 't');
+ break;
+#endif
+ default:
+ ZVAL_STRINGL(zv, val, len, 1);
+ break;
+ }
+