Back to index

php5  5.3.10
mysqlnd.h
Go to the documentation of this file.
00001 /*
00002   +----------------------------------------------------------------------+
00003   | PHP Version 5                                                        |
00004   +----------------------------------------------------------------------+
00005   | Copyright (c) 2006-2012 The PHP Group                                |
00006   +----------------------------------------------------------------------+
00007   | This source file is subject to version 3.01 of the PHP license,      |
00008   | that is bundled with this package in the file LICENSE, and is        |
00009   | available through the world-wide-web at the following url:           |
00010   | http://www.php.net/license/3_01.txt                                  |
00011   | If you did not receive a copy of the PHP license and are unable to   |
00012   | obtain it through the world-wide-web, please send a note to          |
00013   | license@php.net so we can mail you a copy immediately.               |
00014   +----------------------------------------------------------------------+
00015   | Authors: Georg Richter <georg@mysql.com>                             |
00016   |          Andrey Hristov <andrey@mysql.com>                           |
00017   |          Ulf Wendel <uwendel@mysql.com>                              |
00018   +----------------------------------------------------------------------+
00019 */
00020 /* $Id: mysqlnd.h 321634 2012-01-01 13:15:04Z felipe $ */
00021 
00022 #ifndef MYSQLND_H
00023 #define MYSQLND_H
00024 
00025 #define MYSQLND_VERSION "mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $"
00026 #define MYSQLND_VERSION_ID 50008
00027 
00028 /* This forces inlining of some accessor functions */
00029 #define MYSQLND_USE_OPTIMISATIONS 0
00030 #define AUTOCOMMIT_TX_COMMIT_ROLLBACK
00031 
00032 #define MYSQLND_STRING_TO_INT_CONVERSION
00033 /*
00034   This force mysqlnd to do a single (or more depending on ammount of data)
00035   non-blocking read() calls before sending a command to the server. Useful
00036   for debugging, if previous function hasn't consumed all the output sent
00037   to it - like stmt_send_long_data() error because the data was larger that
00038   max_allowed_packet_size, and COM_STMT_SEND_LONG_DATA by protocol doesn't
00039   use response packets, thus letting the next command to fail miserably, if
00040   the connector implementor is not aware of this deficiency. Should be off
00041   on production systems, if of course measured performance degradation is not
00042   minimal.
00043 */
00044 #if A0 && PHP_DEBUG
00045 #define MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND 1
00046 #endif
00047 
00048 #if PHP_DEBUG
00049 #define MYSQLND_DBG_ENABLED 1
00050 #else
00051 #define MYSQLND_DBG_ENABLED 0
00052 #endif
00053 
00054 #if defined(MYSQLND_COMPRESSION_WANTED) && defined(HAVE_ZLIB)
00055 #define MYSQLND_COMPRESSION_ENABLED 1
00056 #endif
00057 
00058 #ifdef ZTS
00059 #include "TSRM.h"
00060 #endif
00061 
00062 #include "mysqlnd_portability.h"
00063 #include "mysqlnd_enum_n_def.h"
00064 #include "mysqlnd_structs.h"
00065 
00066 
00067 /* Library related */
00068 PHPAPI void mysqlnd_library_init(TSRMLS_D);
00069 PHPAPI void mysqlnd_library_end(TSRMLS_D);
00070 
00071 PHPAPI unsigned int mysqlnd_plugin_register();
00072 PHPAPI unsigned int mysqlnd_plugin_count();
00073 PHPAPI void ** _mysqlnd_plugin_get_plugin_connection_data(const MYSQLND * conn, unsigned int plugin_id TSRMLS_DC);
00074 #define mysqlnd_plugin_get_plugin_connection_data(c, p_id) _mysqlnd_plugin_get_plugin_connection_data((c), (p_id) TSRMLS_CC)
00075 
00076 PHPAPI void ** _mysqlnd_plugin_get_plugin_result_data(const MYSQLND_RES * result, unsigned int plugin_id TSRMLS_DC);
00077 #define mysqlnd_plugin_get_plugin_result_data(r, p_id) _mysqlnd_plugin_get_plugin_result_data((r), (p_id) TSRMLS_CC)
00078 
00079 PHPAPI void ** _mysqlnd_plugin_get_plugin_stmt_data(const MYSQLND_STMT * stmt, unsigned int plugin_id TSRMLS_DC);
00080 #define mysqlnd_plugin_get_plugin_stmt_data(s, p_id) _mysqlnd_plugin_get_plugin_stmt_data((s), (p_id) TSRMLS_CC)
00081 
00082 PHPAPI void ** _mysqlnd_plugin_get_plugin_protocol_data(const MYSQLND_PROTOCOL * protocol, unsigned int plugin_id TSRMLS_DC);
00083 #define mysqlnd_plugin_get_plugin_protocol_data(p, p_id) _mysqlnd_plugin_get_plugin_protocol_data((p), (p_id) TSRMLS_CC)
00084 
00085 
00086 PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods();
00087 PHPAPI void mysqlnd_conn_set_methods(struct st_mysqlnd_conn_methods *methods);
00088 
00089 PHPAPI struct st_mysqlnd_stmt_methods * mysqlnd_stmt_get_methods();
00090 PHPAPI void mysqlnd_stmt_set_methods(struct st_mysqlnd_stmt_methods *methods);
00091 
00092 
00093 #define mysqlnd_restart_psession(conn)    (conn)->m->restart_psession((conn) TSRMLS_CC)
00094 #define mysqlnd_end_psession(conn)        (conn)->m->end_psession((conn) TSRMLS_CC)
00095 PHPAPI void mysqlnd_minfo_print_hash(zval *values);
00096 #define mysqlnd_thread_safe()      TRUE
00097 
00098 PHPAPI const MYSQLND_CHARSET * mysqlnd_find_charset_nr(unsigned int charsetno);
00099 PHPAPI const MYSQLND_CHARSET * mysqlnd_find_charset_name(const char * const charsetname);
00100 
00101 
00102 /* Connect */
00103 #define mysqlnd_init(persistent) _mysqlnd_init((persistent) TSRMLS_CC)
00104 PHPAPI MYSQLND * _mysqlnd_init(zend_bool persistent TSRMLS_DC);
00105 PHPAPI MYSQLND * mysqlnd_connect(MYSQLND *conn,
00106                                             const char *host, const char *user,
00107                                             const char *passwd, unsigned int passwd_len,
00108                                             const char *db, unsigned int db_len,
00109                                             unsigned int port,
00110                                             const char *socket_or_pipe,
00111                                             unsigned int mysql_flags
00112                                             TSRMLS_DC);
00113 
00114 #define mysqlnd_change_user(conn, user, passwd, db, silent)           (conn)->m->change_user((conn), (user), (passwd), (db), (silent) TSRMLS_CC)
00115 
00116 #define mysqlnd_debug(x)                                                     _mysqlnd_debug((x) TSRMLS_CC)
00117 PHPAPI void _mysqlnd_debug(const char *mode TSRMLS_DC);
00118 
00119 /* Query */
00120 #define mysqlnd_fetch_into(result, flags, ret_val, ext) (result)->m.fetch_into((result), (flags), (ret_val), (ext) TSRMLS_CC ZEND_FILE_LINE_CC)
00121 #define mysqlnd_fetch_row_c(result)                                          (result)->m.fetch_row_c((result) TSRMLS_CC)
00122 #define mysqlnd_fetch_all(result, flags, return_value)  (result)->m.fetch_all((result), (flags), (return_value) TSRMLS_CC ZEND_FILE_LINE_CC)
00123 #define mysqlnd_result_fetch_field_data(res,offset,ret) (res)->m.fetch_field_data((res), (offset), (ret) TSRMLS_CC)
00124 #define mysqlnd_get_connection_stats(conn, values)             (conn)->m->get_statistics((conn),  (values) TSRMLS_CC ZEND_FILE_LINE_CC)
00125 #define mysqlnd_get_client_stats(values)                       _mysqlnd_get_client_stats((values) TSRMLS_CC ZEND_FILE_LINE_CC)
00126 
00127 #define mysqlnd_close(conn,is_forced)                                 (conn)->m->close((conn), (is_forced) TSRMLS_CC)
00128 #define mysqlnd_query(conn, query_str, query_len)              (conn)->m->query((conn), (query_str), (query_len) TSRMLS_CC)
00129 #define mysqlnd_async_query(conn, query_str, query_len) (conn)->m->send_query((conn), (query_str), (query_len) TSRMLS_CC)
00130 #define mysqlnd_poll(r, err, d_pull,sec,usec,desc_num)  _mysqlnd_poll((r), (err), (d_pull), (sec), (usec), (desc_num) TSRMLS_CC)
00131 #define mysqlnd_reap_async_query(conn)                                (conn)->m->reap_query((conn) TSRMLS_CC)
00132 #define mysqlnd_unbuffered_skip_result(result)                 (result)->m.skip_result((result) TSRMLS_CC)
00133 
00134 PHPAPI enum_func_status _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll, long sec, long usec, uint * desc_num TSRMLS_DC);
00135 
00136 #define mysqlnd_use_result(conn)          (conn)->m->use_result((conn) TSRMLS_CC)
00137 #define mysqlnd_store_result(conn)        (conn)->m->store_result((conn) TSRMLS_CC)
00138 #define mysqlnd_next_result(conn)         (conn)->m->next_result((conn) TSRMLS_CC)
00139 #define mysqlnd_more_results(conn)        (conn)->m->more_results((conn) TSRMLS_CC)
00140 #define mysqlnd_free_result(r,e_or_i)     ((MYSQLND_RES*)r)->m.free_result(((MYSQLND_RES*)(r)), (e_or_i) TSRMLS_CC)
00141 #define mysqlnd_data_seek(result, row)    (result)->m.seek_data((result), (row) TSRMLS_CC)
00142 
00143 /* Errors */
00144 #define mysqlnd_errno(conn)                      (conn)->m->get_error_no((conn) TSRMLS_CC)
00145 #define mysqlnd_error(conn)                      (conn)->m->get_error_str((conn) TSRMLS_CC)
00146 #define mysqlnd_sqlstate(conn)            (conn)->m->get_sqlstate((conn) TSRMLS_CC)
00147 
00148 /* Charset */
00149 #define mysqlnd_character_set_name(conn) (conn)->m->charset_name((conn) TSRMLS_CC)
00150 
00151 /* Simple metadata */
00152 #define mysqlnd_field_count(conn)         (conn)->m->get_field_count((conn) TSRMLS_CC)
00153 #define mysqlnd_insert_id(conn)                  (conn)->m->get_last_insert_id((conn) TSRMLS_CC)
00154 #define mysqlnd_affected_rows(conn)              (conn)->m->get_affected_rows((conn) TSRMLS_CC)
00155 #define mysqlnd_warning_count(conn)              (conn)->m->get_warning_count((conn) TSRMLS_CC)
00156 #define mysqlnd_info(conn)                       (conn)->m->get_last_message((conn) TSRMLS_CC)
00157 #define mysqlnd_get_server_info(conn)     (conn)->m->get_server_information((conn) TSRMLS_CC)
00158 #define mysqlnd_get_host_info(conn)              (conn)->m->get_host_information((conn) TSRMLS_CC)
00159 #define mysqlnd_get_proto_info(conn)      (conn)->m->get_protocol_information((conn) TSRMLS_CC)
00160 #define mysqlnd_thread_id(conn)                  (conn)->m->get_thread_id((conn) TSRMLS_CC)
00161 
00162 #define mysqlnd_num_rows(result)          (result)->m.num_rows((result) TSRMLS_CC)
00163 #define mysqlnd_num_fields(result)        (result)->m.num_fields((result) TSRMLS_CC)
00164 
00165 #define mysqlnd_fetch_lengths(result)     _mysqlnd_fetch_lengths((result) TSRMLS_CC)
00166 PHPAPI unsigned long * _mysqlnd_fetch_lengths(MYSQLND_RES * const result  TSRMLS_DC);
00167 
00168 #define mysqlnd_field_seek(result, ofs)                 (result)->m.seek_field((result), (ofs) TSRMLS_CC)
00169 #define mysqlnd_field_tell(result)                      (result)->m.field_tell((result) TSRMLS_CC)
00170 #define mysqlnd_fetch_field(result)                            (result)->m.fetch_field((result) TSRMLS_CC)
00171 #define mysqlnd_fetch_field_direct(result,fnr)   (result)->m.fetch_field_direct((result), (fnr) TSRMLS_CC)
00172 #define mysqlnd_fetch_fields(result)                    (result)->m.fetch_fields((result) TSRMLS_CC)
00173 
00174 /* mysqlnd metadata */
00175 PHPAPI const char *  mysqlnd_get_client_info();
00176 PHPAPI unsigned int  mysqlnd_get_client_version();
00177 
00178 #define mysqlnd_ssl_set(conn, key, cert, ca, capath, cipher) (conn)->m->ssl_set((conn), (key), (cert), (ca), (capath), (cipher) TSRMLS_CC)
00179 
00180 /* PS */
00181 #define mysqlnd_stmt_insert_id(stmt)             (stmt)->m->get_last_insert_id((stmt) TSRMLS_CC)
00182 #define mysqlnd_stmt_affected_rows(stmt)  (stmt)->m->get_affected_rows((stmt) TSRMLS_CC)
00183 #define mysqlnd_stmt_num_rows(stmt)                     (stmt)->m->get_num_rows((stmt) TSRMLS_CC)
00184 #define mysqlnd_stmt_param_count(stmt)           (stmt)->m->get_param_count((stmt) TSRMLS_CC)
00185 #define mysqlnd_stmt_field_count(stmt)           (stmt)->m->get_field_count((stmt) TSRMLS_CC)
00186 #define mysqlnd_stmt_warning_count(stmt)  (stmt)->m->get_warning_count((stmt) TSRMLS_CC)
00187 #define mysqlnd_stmt_server_status(stmt)  (stmt)->m->get_server_status((stmt) TSRMLS_CC)
00188 #define mysqlnd_stmt_errno(stmt)                 (stmt)->m->get_error_no((stmt) TSRMLS_CC)
00189 #define mysqlnd_stmt_error(stmt)                 (stmt)->m->get_error_str((stmt) TSRMLS_CC)
00190 #define mysqlnd_stmt_sqlstate(stmt)                     (stmt)->m->get_sqlstate((stmt) TSRMLS_CC)
00191 
00192 
00193 PHPAPI void mysqlnd_efree_param_bind_dtor(MYSQLND_PARAM_BIND * param_bind TSRMLS_DC);
00194 PHPAPI void mysqlnd_efree_result_bind_dtor(MYSQLND_RESULT_BIND * result_bind TSRMLS_DC);
00195 PHPAPI void mysqlnd_free_param_bind_dtor(MYSQLND_PARAM_BIND * param_bind TSRMLS_DC);
00196 PHPAPI void mysqlnd_free_result_bind_dtor(MYSQLND_RESULT_BIND * result_bind TSRMLS_DC);
00197 
00198 
00199 PHPAPI const char * mysqlnd_field_type_name(enum mysqlnd_field_types field_type);
00200 
00201 /* LOAD DATA LOCAL */
00202 PHPAPI void mysqlnd_local_infile_default(MYSQLND *conn);
00203 PHPAPI void mysqlnd_set_local_infile_handler(MYSQLND * const conn, const char * const funcname);
00204 
00205 /* Simple commands */
00206 #ifdef AUTOCOMMIT_TX_COMMIT_ROLLBACK
00207 #define mysqlnd_autocommit(conn, mode)           (conn)->m->set_autocommit((conn), (mode) TSRMLS_CC)
00208 #define mysqlnd_commit(conn)                            (conn)->m->tx_commit((conn) TSRMLS_CC)
00209 #define mysqlnd_rollback(conn)                          (conn)->m->tx_rollback((conn) TSRMLS_CC)
00210 #else
00211 #define mysqlnd_autocommit(conn, mode)           (conn)->m->query((conn),(mode) ? "SET AUTOCOMMIT=1":"SET AUTOCOMMIT=0", 16 TSRMLS_CC)
00212 #define mysqlnd_commit(conn)                            (conn)->m->query((conn), "COMMIT", sizeof("COMMIT")-1 TSRMLS_CC)
00213 #define mysqlnd_rollback(conn)                          (conn)->m->query((conn), "ROLLBACK", sizeof("ROLLBACK")-1 TSRMLS_CC)
00214 #endif
00215 #define mysqlnd_list_dbs(conn, wild)             (conn)->m->list_method((conn), wild? "SHOW DATABASES LIKE %s":"SHOW DATABASES", (wild), NULL TSRMLS_CC)
00216 #define mysqlnd_list_fields(conn, tab,wild)      (conn)->m->list_fields((conn), (tab), (wild) TSRMLS_CC)
00217 #define mysqlnd_list_processes(conn)             (conn)->m->list_method((conn), "SHOW PROCESSLIST", NULL, NULL TSRMLS_CC)
00218 #define mysqlnd_list_tables(conn, wild)          (conn)->m->list_method((conn), wild? "SHOW TABLES LIKE %s":"SHOW TABLES", (wild), NULL TSRMLS_CC)
00219 #define mysqlnd_dump_debug_info(conn)            (conn)->m->server_dump_debug_information((conn) TSRMLS_CC)
00220 #define mysqlnd_select_db(conn, db, db_len)      (conn)->m->select_db((conn), (db), (db_len) TSRMLS_CC)
00221 #define mysqlnd_ping(conn)                              (conn)->m->ping((conn) TSRMLS_CC)
00222 #define mysqlnd_kill(conn, pid)                         (conn)->m->kill_connection((conn), (pid) TSRMLS_CC)
00223 #define mysqlnd_refresh(conn, options)           (conn)->m->refresh_server((conn), (options) TSRMLS_CC)
00224 #define mysqlnd_shutdown(conn, level)            (conn)->m->shutdown_server((conn), (level) TSRMLS_CC)
00225 #define mysqlnd_get_server_version(conn)  (conn)->m->get_server_version((conn) TSRMLS_CC)
00226 #define mysqlnd_set_character_set(conn, cs)      (conn)->m->set_charset((conn), (cs) TSRMLS_CC)
00227 #define mysqlnd_stat(conn, msg, msg_len)  (conn)->m->get_server_statistics((conn), (msg), (msg_len) TSRMLS_CC)
00228 #define mysqlnd_options(conn, opt, value) (conn)->m->set_client_option((conn), (opt), (value) TSRMLS_CC)
00229 #define mysqlnd_set_server_option(conn, op)      (conn)->m->set_server_option((conn), (op) TSRMLS_CC)
00230 
00231 /* Escaping */
00232 #define mysqlnd_real_escape_string(conn, newstr, escapestr, escapestr_len) \
00233               (conn)->m->escape_string((conn), (newstr), (escapestr), (escapestr_len) TSRMLS_CC)
00234 #define mysqlnd_escape_string(newstr, escapestr, escapestr_len) \
00235               mysqlnd_old_escape_string((newstr), (escapestr), (escapestr_len) TSRMLS_CC)
00236 
00237 PHPAPI ulong mysqlnd_old_escape_string(char *newstr, const char *escapestr, size_t escapestr_len TSRMLS_DC);
00238 
00239 
00240 /* PS */
00241 #define mysqlnd_stmt_init(conn)                         (conn)->m->stmt_init((conn) TSRMLS_CC)
00242 #define mysqlnd_stmt_store_result(stmt)          (!mysqlnd_stmt_field_count((stmt)) ? PASS:((stmt)->m->store_result((stmt) TSRMLS_CC)? PASS:FAIL))
00243 #define mysqlnd_stmt_get_result(stmt)            (stmt)->m->get_result((stmt) TSRMLS_CC)
00244 #define mysqlnd_stmt_more_results(stmt)          (stmt)->m->more_results((stmt) TSRMLS_CC)
00245 #define mysqlnd_stmt_next_result(stmt)           (stmt)->m->next_result((stmt) TSRMLS_CC)
00246 #define mysqlnd_stmt_data_seek(stmt, row) (stmt)->m->seek_data((stmt), (row) TSRMLS_CC)
00247 #define mysqlnd_stmt_prepare(stmt, q, qlen)      (stmt)->m->prepare((stmt), (q), (qlen) TSRMLS_CC)
00248 #define mysqlnd_stmt_execute(stmt)                      (stmt)->m->execute((stmt) TSRMLS_CC)
00249 #define mysqlnd_stmt_send_long_data(stmt,p,d,l)  (stmt)->m->send_long_data((stmt), (p), (d), (l) TSRMLS_CC)
00250 #define mysqlnd_stmt_alloc_param_bind(stmt)                    (stmt)->m->alloc_parameter_bind((stmt) TSRMLS_CC)
00251 #define mysqlnd_stmt_free_param_bind(stmt,bind)         (stmt)->m->free_parameter_bind((stmt), (bind) TSRMLS_CC)
00252 #define mysqlnd_stmt_bind_param(stmt,bind)                     (stmt)->m->bind_parameters((stmt), (bind) TSRMLS_CC)
00253 #define mysqlnd_stmt_bind_one_param(stmt,n,z,t)         (stmt)->m->bind_one_parameter((stmt), (n), (z), (t) TSRMLS_CC)
00254 #define mysqlnd_stmt_refresh_bind_param(s)                     (s)->m->refresh_bind_param((s) TSRMLS_CC)
00255 #define mysqlnd_stmt_alloc_result_bind(stmt)            (stmt)->m->alloc_result_bind((stmt) TSRMLS_CC)
00256 #define mysqlnd_stmt_free_result_bind(stmt,bind) (stmt)->m->free_result_bind((stmt), (bind) TSRMLS_CC)
00257 #define mysqlnd_stmt_bind_result(stmt,bind)                    (stmt)->m->bind_result((stmt), (bind) TSRMLS_CC)
00258 #define mysqlnd_stmt_bind_one_result(s,no)                     (s)->m->bind_one_result((s), (no) TSRMLS_CC)
00259 #define mysqlnd_stmt_param_metadata(stmt)               (stmt)->m->get_parameter_metadata((stmt))
00260 #define mysqlnd_stmt_result_metadata(stmt)                     (stmt)->m->get_result_metadata((stmt) TSRMLS_CC)
00261 
00262 #define       mysqlnd_stmt_free_result(stmt)            (stmt)->m->free_result((stmt) TSRMLS_CC)
00263 #define       mysqlnd_stmt_close(stmt, implicit) (stmt)->m->dtor((stmt), (implicit) TSRMLS_CC)
00264 #define       mysqlnd_stmt_reset(stmt)                  (stmt)->m->reset((stmt) TSRMLS_CC)
00265 
00266 
00267 #define mysqlnd_stmt_attr_get(stmt, attr, value) (stmt)->m->get_attribute((stmt), (attr), (value) TSRMLS_CC)
00268 #define mysqlnd_stmt_attr_set(stmt, attr, value) (stmt)->m->set_attribute((stmt), (attr), (value) TSRMLS_CC)
00269 
00270 #define mysqlnd_stmt_fetch(stmt, fetched) (stmt)->m->fetch((stmt), (fetched) TSRMLS_CC)
00271 
00272 
00273 /* Performance statistics */
00274 PHPAPI void                 _mysqlnd_get_client_stats(zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC);
00275 
00276 /* double check the class name to avoid naming conflicts when using these: */
00277 #define MYSQLND_METHOD(class, method) php_##class##_##method##_pub
00278 #define MYSQLND_METHOD_PRIVATE(class, method) php_##class##_##method##_priv
00279 
00280 ZEND_BEGIN_MODULE_GLOBALS(mysqlnd)
00281        zend_bool            collect_statistics;
00282        zend_bool            collect_memory_statistics;
00283        char*                debug; /* The actual string */
00284        MYSQLND_DEBUG *dbg;  /* The DBG object */
00285        long                 net_cmd_buffer_size;
00286        long                 net_read_buffer_size;
00287        long                 log_mask;
00288        long                 net_read_timeout;
00289        long                 mempool_default_size;
00290        long                 debug_emalloc_fail_threshold;
00291        long                 debug_ecalloc_fail_threshold;
00292        long                 debug_erealloc_fail_threshold;
00293        long                 debug_malloc_fail_threshold;
00294        long                 debug_calloc_fail_threshold;
00295        long                 debug_realloc_fail_threshold;
00296 ZEND_END_MODULE_GLOBALS(mysqlnd)
00297 
00298 PHPAPI ZEND_EXTERN_MODULE_GLOBALS(mysqlnd)
00299 
00300 #ifdef ZTS
00301 #define MYSQLND_G(v) TSRMG(mysqlnd_globals_id, zend_mysqlnd_globals *, v)
00302 #else
00303 #define MYSQLND_G(v) (mysqlnd_globals.v)
00304 #endif
00305 
00306 
00307 PHPAPI void mysqlnd_minfo_print_hash(zval *values);
00308 
00309 #endif /* MYSQLND_H */
00310 
00311 
00312 /*
00313  * Local variables:
00314  * tab-width: 4
00315  * c-basic-offset: 4
00316  * End:
00317  * vim600: noet sw=4 ts=4 fdm=marker
00318  * vim<600: noet sw=4 ts=4
00319  */