PHP-7.4 compat
[m6w6/ext-pq] / src / php_pqtypes.c
index ef169d36556020525fb4969fa4af15ce8189c3fc..323883c778b264ab852c3c5465f650e674be694f 100644 (file)
@@ -143,6 +143,16 @@ static zval *php_pqtypes_object_read_dimension(zval *object, zval *member, int t
        return data;
 }
 
+static void php_pqtypes_object_write_dimension(zval *object, zval *offset, zval *value)
+{
+       throw_exce(EX_RUNTIME, "pq\\Types object must not be modified");
+}
+
+static void php_pqtypes_object_unset_dimension(zval *object, zval *offset)
+{
+       throw_exce(EX_RUNTIME, "pq\\Types object must not be modified");
+}
+
 ZEND_BEGIN_ARG_INFO_EX(ai_pqtypes_construct, 0, 0, 1)
        ZEND_ARG_OBJ_INFO(0, connection, pq\\Connection, 0)
        ZEND_ARG_ARRAY_INFO(0, namespaces, 1)
@@ -181,8 +191,7 @@ static PHP_METHOD(pqtypes, __construct) {
 #define PHP_PQ_TYPES_QUERY \
        "select t.oid, t.* " \
        "from pg_type t join pg_namespace n on t.typnamespace=n.oid " \
-       "where typisdefined " \
-       "and typrelid=0"
+       "where typisdefined"
 #ifndef PHP_PQ_OID_TEXT
 # define PHP_PQ_OID_TEXT 25
 #endif
@@ -230,17 +239,17 @@ static PHP_METHOD(pqtypes, refresh) {
                        PGresult *res;
 
                        if (!nsp || !zend_hash_num_elements(nsp)) {
-                               res = PQexec(obj->intern->conn->intern->conn, PHP_PQ_TYPES_QUERY " and nspname in ('public', 'pg_catalog')");
+                               res = php_pq_exec(obj->intern->conn->intern->conn, PHP_PQ_TYPES_QUERY " and nspname in ('public', 'pg_catalog')");
                        } else {
                                smart_str str = {0};
                                php_pq_params_t *params = php_pq_params_init(&obj->intern->conn->intern->converters, NULL, NULL);
 
                                smart_str_appends(&str, PHP_PQ_TYPES_QUERY " and nspname in(");
-                               zend_hash_apply_with_arguments(nsp TSRMLS_CC, apply_nsp, 2, params, &str);
+                               zend_hash_apply_with_arguments(nsp, apply_nsp, 2, params, &str);
                                smart_str_appendc(&str, ')');
                                smart_str_0(&str);
 
-                               res = PQexecParams(obj->intern->conn->intern->conn, smart_str_v(&str), params->param.count, params->type.oids, (const char *const*) params->param.strings, NULL, NULL, 0);
+                               res = php_pq_exec_params(obj->intern->conn->intern->conn, smart_str_v(&str), params->param.count, params->type.oids, (const char *const*) params->param.strings, NULL, NULL, 0);
 
                                smart_str_free(&str);
                                php_pq_params_free(&params);
@@ -264,7 +273,7 @@ static PHP_METHOD(pqtypes, refresh) {
                                        }
                                }
 
-                               PHP_PQclear(res);
+                               php_pqres_clear(res);
                                php_pqconn_notify_listeners(obj->intern->conn);
                        }
                }
@@ -272,7 +281,7 @@ static PHP_METHOD(pqtypes, refresh) {
 }
 
 static zend_function_entry php_pqtypes_methods[] = {
-       PHP_ME(pqtypes, __construct, ai_pqtypes_construct, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
+       PHP_ME(pqtypes, __construct, ai_pqtypes_construct, ZEND_ACC_PUBLIC)
        PHP_ME(pqtypes, refresh, ai_pqtypes_refresh, ZEND_ACC_PUBLIC)
        {0}
 };
@@ -293,7 +302,7 @@ PHP_MINIT_FUNCTION(pqtypes)
        php_pqtypes_class_entry->create_object = php_pqtypes_create_object;
 
        /*
-       zend_class_implements(php_pqtypes_class_entry TSRMLS_CC, 1, zend_ce_arrayaccess);
+       zend_class_implements(php_pqtypes_class_entry, 1, zend_ce_arrayaccess);
        */
 
        memcpy(&php_pqtypes_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
@@ -302,14 +311,14 @@ PHP_MINIT_FUNCTION(pqtypes)
        php_pqtypes_object_handlers.read_property = php_pq_object_read_prop;
        php_pqtypes_object_handlers.write_property = php_pq_object_write_prop;
        php_pqtypes_object_handlers.clone_obj = NULL;
-       php_pqtypes_object_handlers.get_property_ptr_ptr = NULL;
+       php_pqtypes_object_handlers.get_property_ptr_ptr = php_pq_object_get_prop_ptr_null;
        php_pqtypes_object_handlers.get_gc = php_pq_object_get_gc;
        php_pqtypes_object_handlers.get_properties = php_pq_object_properties;
        php_pqtypes_object_handlers.get_debug_info = php_pq_object_debug_info;
        php_pqtypes_object_handlers.has_dimension = php_pqtypes_object_has_dimension;
        php_pqtypes_object_handlers.read_dimension = php_pqtypes_object_read_dimension;
-       php_pqtypes_object_handlers.unset_dimension = NULL;
-       php_pqtypes_object_handlers.write_dimension = NULL;
+       php_pqtypes_object_handlers.unset_dimension = php_pqtypes_object_unset_dimension;
+       php_pqtypes_object_handlers.write_dimension = php_pqtypes_object_write_dimension;
 
        zend_hash_init(&php_pqtypes_object_prophandlers, 1, NULL, php_pq_object_prophandler_dtor, 1);