]> granicus.if.org Git - php/commitdiff
result_meta local storage
authorAndrey Hristov <andrey@php.net>
Fri, 14 May 2010 16:42:17 +0000 (16:42 +0000)
committerAndrey Hristov <andrey@php.net>
Fri, 14 May 2010 16:42:17 +0000 (16:42 +0000)
ext/mysqlnd/mysqlnd_result_meta.c
ext/mysqlnd/mysqlnd_result_meta.h

index 7c4c529b8e78acd6cf2818fc6ebead1b463191f5..323d9de177517f253aebe8d8533568ea5bc3a930 100644 (file)
@@ -442,14 +442,14 @@ MYSQLND_CLASS_METHODS_END;
 PHPAPI MYSQLND_RES_METADATA *
 mysqlnd_result_meta_init(unsigned int field_count, zend_bool persistent TSRMLS_DC)
 {
-       MYSQLND_RES_METADATA *ret;
+       size_t alloc_size = sizeof(MYSQLND_RES_METADATA) + mysqlnd_plugin_count() * sizeof(void *);
+       MYSQLND_RES_METADATA *ret = mnd_pecalloc(1, alloc_size, persistent);
        DBG_ENTER("mysqlnd_result_meta_init");
        DBG_INF_FMT("persistent=%d", persistent);
 
-       /* +1 is to have empty marker at the end */
-       ret = mnd_pecalloc(1, sizeof(MYSQLND_RES_METADATA), persistent);
        ret->persistent = persistent;
        ret->field_count = field_count;
+       /* +1 is to have empty marker at the end */
        ret->fields = mnd_pecalloc(field_count + 1, sizeof(MYSQLND_FIELD), ret->persistent);
        ret->zend_hash_keys = mnd_pecalloc(field_count, sizeof(struct mysqlnd_field_hash_key), ret->persistent);
 
@@ -468,6 +468,19 @@ mysqlnd_result_metadata_get_methods()
 /* }}} */
 
 
+/* {{{ _mysqlnd_plugin_get_plugin_result_metadata_data */
+PHPAPI void **
+_mysqlnd_plugin_get_plugin_result_metadata_data(const MYSQLND_RES_METADATA * meta, unsigned int plugin_id TSRMLS_DC)
+{
+       DBG_ENTER("_mysqlnd_plugin_get_plugin_result_metadata_data");
+       DBG_INF_FMT("plugin_id=%u", plugin_id);
+       if (!meta || plugin_id >= mysqlnd_plugin_count()) {
+               return NULL;
+       }
+       DBG_RETURN((void *)((char *)meta + sizeof(MYSQLND_RES_METADATA) + plugin_id * sizeof(void *)));
+}
+/* }}} */
+
 /*
  * Local variables:
  * tab-width: 4
index 6c1e3b970868032bdac3022e10ccf5f1d4436f80..84d848ddcb07a9c8710476ef185ce359b320d4f2 100644 (file)
@@ -25,6 +25,7 @@
 
 PHPAPI MYSQLND_RES_METADATA * mysqlnd_result_meta_init(unsigned int field_count, zend_bool persistent TSRMLS_DC);
 PHPAPI struct st_mysqlnd_res_meta_methods * mysqlnd_result_metadata_get_methods();
+PHPAPI void ** _mysqlnd_plugin_get_plugin_result_metadata_data(const MYSQLND_RES_METADATA * meta, unsigned int plugin_id TSRMLS_DC);
 
 #endif /* MYSQLND_RESULT_META_H */