+
+static zval *object_param_to_string(php_pq_params_t *p, zval *zobj, Oid type TSRMLS_DC)
+{
+ zval *return_value = NULL;
+ smart_str str = {0};
+
+ switch (type) {
+#ifdef PHP_PQ_OID_JSON
+# ifdef PHP_PQ_OID_JSONB
+ case PHP_PQ_OID_JSONB:
+# endif
+ case PHP_PQ_OID_JSON:
+ php_json_encode(&str, zobj, PHP_JSON_UNESCAPED_UNICODE TSRMLS_CC);
+ smart_str_0(&str);
+ break;
+#endif
+
+ case PHP_PQ_OID_DATE:
+ php_pqdt_to_string(zobj, "Y-m-d", &str.c, &str.len TSRMLS_CC);
+ break;
+
+ case PHP_PQ_OID_ABSTIME:
+ php_pqdt_to_string(zobj, "Y-m-d H:i:s", &str.c, &str.len TSRMLS_CC);
+ break;
+
+ case PHP_PQ_OID_TIMESTAMP:
+ php_pqdt_to_string(zobj, "Y-m-d H:i:s.u", &str.c, &str.len TSRMLS_CC);
+ break;
+
+ case PHP_PQ_OID_TIMESTAMPTZ:
+ php_pqdt_to_string(zobj, "Y-m-d H:i:s.uO", &str.c, &str.len TSRMLS_CC);
+ break;
+
+ default:
+ SEPARATE_ZVAL(&zobj);
+ convert_to_string(zobj);
+ return_value = zobj;
+ break;
+ }
+
+ if (str.c) {
+ MAKE_STD_ZVAL(return_value);
+ RETVAL_STRINGL(str.c, str.len, 0);
+ }
+
+ return return_value;
+}
+
+static int apply_to_param_from_array(void *ptr TSRMLS_DC, int argc, va_list argv, zend_hash_key *key)