+static void cur_open(INTERNAL_FUNCTION_PARAMETERS, zend_bool async)
+{
+ zend_error_handling zeh;
+ ZEND_RESULT_CODE rv;
+ php_pqcur_object_t *obj;
+
+ zend_replace_error_handling(EH_THROW, exce(EX_INVALID_ARGUMENT), &zeh TSRMLS_CC);
+ rv = zend_parse_parameters_none();
+ zend_restore_error_handling(&zeh TSRMLS_CC);
+
+ if (rv == FAILURE) {
+ return;
+ }
+
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ if (!obj->intern) {
+ throw_exce(EX_UNINITIALIZED TSRMLS_CC, "pq\\Cursor not initialized");
+ return;
+ } else if (obj->intern->open) {
+ return;
+ }
+
+ if (async) {
+ rv = php_pqconn_declare_async(NULL, obj->intern->conn, obj->intern->decl TSRMLS_CC);
+ } else {
+ rv = php_pqconn_declare(NULL, obj->intern->conn, obj->intern->decl TSRMLS_CC);
+ }
+
+ if (rv == SUCCESS) {
+ obj->intern->open = 1;
+ }
+}
+