Return to mysqlnd.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / mysqlnd |
1.1 ! misho 1: /* ! 2: +----------------------------------------------------------------------+ ! 3: | PHP Version 5 | ! 4: +----------------------------------------------------------------------+ ! 5: | Copyright (c) 2006-2012 The PHP Group | ! 6: +----------------------------------------------------------------------+ ! 7: | This source file is subject to version 3.01 of the PHP license, | ! 8: | that is bundled with this package in the file LICENSE, and is | ! 9: | available through the world-wide-web at the following url: | ! 10: | http://www.php.net/license/3_01.txt | ! 11: | If you did not receive a copy of the PHP license and are unable to | ! 12: | obtain it through the world-wide-web, please send a note to | ! 13: | license@php.net so we can mail you a copy immediately. | ! 14: +----------------------------------------------------------------------+ ! 15: | Authors: Georg Richter <georg@mysql.com> | ! 16: | Andrey Hristov <andrey@mysql.com> | ! 17: | Ulf Wendel <uwendel@mysql.com> | ! 18: +----------------------------------------------------------------------+ ! 19: */ ! 20: /* $Id: mysqlnd.h 321634 2012-01-01 13:15:04Z felipe $ */ ! 21: ! 22: #ifndef MYSQLND_H ! 23: #define MYSQLND_H ! 24: ! 25: #define MYSQLND_VERSION "mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $" ! 26: #define MYSQLND_VERSION_ID 50008 ! 27: ! 28: /* This forces inlining of some accessor functions */ ! 29: #define MYSQLND_USE_OPTIMISATIONS 0 ! 30: #define AUTOCOMMIT_TX_COMMIT_ROLLBACK ! 31: ! 32: #define MYSQLND_STRING_TO_INT_CONVERSION ! 33: /* ! 34: This force mysqlnd to do a single (or more depending on ammount of data) ! 35: non-blocking read() calls before sending a command to the server. Useful ! 36: for debugging, if previous function hasn't consumed all the output sent ! 37: to it - like stmt_send_long_data() error because the data was larger that ! 38: max_allowed_packet_size, and COM_STMT_SEND_LONG_DATA by protocol doesn't ! 39: use response packets, thus letting the next command to fail miserably, if ! 40: the connector implementor is not aware of this deficiency. Should be off ! 41: on production systems, if of course measured performance degradation is not ! 42: minimal. ! 43: */ ! 44: #if A0 && PHP_DEBUG ! 45: #define MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND 1 ! 46: #endif ! 47: ! 48: #if PHP_DEBUG ! 49: #define MYSQLND_DBG_ENABLED 1 ! 50: #else ! 51: #define MYSQLND_DBG_ENABLED 0 ! 52: #endif ! 53: ! 54: #if defined(MYSQLND_COMPRESSION_WANTED) && defined(HAVE_ZLIB) ! 55: #define MYSQLND_COMPRESSION_ENABLED 1 ! 56: #endif ! 57: ! 58: #ifdef ZTS ! 59: #include "TSRM.h" ! 60: #endif ! 61: ! 62: #include "mysqlnd_portability.h" ! 63: #include "mysqlnd_enum_n_def.h" ! 64: #include "mysqlnd_structs.h" ! 65: ! 66: ! 67: /* Library related */ ! 68: PHPAPI void mysqlnd_library_init(TSRMLS_D); ! 69: PHPAPI void mysqlnd_library_end(TSRMLS_D); ! 70: ! 71: PHPAPI unsigned int mysqlnd_plugin_register(); ! 72: PHPAPI unsigned int mysqlnd_plugin_count(); ! 73: PHPAPI void ** _mysqlnd_plugin_get_plugin_connection_data(const MYSQLND * conn, unsigned int plugin_id TSRMLS_DC); ! 74: #define mysqlnd_plugin_get_plugin_connection_data(c, p_id) _mysqlnd_plugin_get_plugin_connection_data((c), (p_id) TSRMLS_CC) ! 75: ! 76: PHPAPI void ** _mysqlnd_plugin_get_plugin_result_data(const MYSQLND_RES * result, unsigned int plugin_id TSRMLS_DC); ! 77: #define mysqlnd_plugin_get_plugin_result_data(r, p_id) _mysqlnd_plugin_get_plugin_result_data((r), (p_id) TSRMLS_CC) ! 78: ! 79: PHPAPI void ** _mysqlnd_plugin_get_plugin_stmt_data(const MYSQLND_STMT * stmt, unsigned int plugin_id TSRMLS_DC); ! 80: #define mysqlnd_plugin_get_plugin_stmt_data(s, p_id) _mysqlnd_plugin_get_plugin_stmt_data((s), (p_id) TSRMLS_CC) ! 81: ! 82: PHPAPI void ** _mysqlnd_plugin_get_plugin_protocol_data(const MYSQLND_PROTOCOL * protocol, unsigned int plugin_id TSRMLS_DC); ! 83: #define mysqlnd_plugin_get_plugin_protocol_data(p, p_id) _mysqlnd_plugin_get_plugin_protocol_data((p), (p_id) TSRMLS_CC) ! 84: ! 85: ! 86: PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods(); ! 87: PHPAPI void mysqlnd_conn_set_methods(struct st_mysqlnd_conn_methods *methods); ! 88: ! 89: PHPAPI struct st_mysqlnd_stmt_methods * mysqlnd_stmt_get_methods(); ! 90: PHPAPI void mysqlnd_stmt_set_methods(struct st_mysqlnd_stmt_methods *methods); ! 91: ! 92: ! 93: #define mysqlnd_restart_psession(conn) (conn)->m->restart_psession((conn) TSRMLS_CC) ! 94: #define mysqlnd_end_psession(conn) (conn)->m->end_psession((conn) TSRMLS_CC) ! 95: PHPAPI void mysqlnd_minfo_print_hash(zval *values); ! 96: #define mysqlnd_thread_safe() TRUE ! 97: ! 98: PHPAPI const MYSQLND_CHARSET * mysqlnd_find_charset_nr(unsigned int charsetno); ! 99: PHPAPI const MYSQLND_CHARSET * mysqlnd_find_charset_name(const char * const charsetname); ! 100: ! 101: ! 102: /* Connect */ ! 103: #define mysqlnd_init(persistent) _mysqlnd_init((persistent) TSRMLS_CC) ! 104: PHPAPI MYSQLND * _mysqlnd_init(zend_bool persistent TSRMLS_DC); ! 105: PHPAPI MYSQLND * mysqlnd_connect(MYSQLND *conn, ! 106: const char *host, const char *user, ! 107: const char *passwd, unsigned int passwd_len, ! 108: const char *db, unsigned int db_len, ! 109: unsigned int port, ! 110: const char *socket_or_pipe, ! 111: unsigned int mysql_flags ! 112: TSRMLS_DC); ! 113: ! 114: #define mysqlnd_change_user(conn, user, passwd, db, silent) (conn)->m->change_user((conn), (user), (passwd), (db), (silent) TSRMLS_CC) ! 115: ! 116: #define mysqlnd_debug(x) _mysqlnd_debug((x) TSRMLS_CC) ! 117: PHPAPI void _mysqlnd_debug(const char *mode TSRMLS_DC); ! 118: ! 119: /* Query */ ! 120: #define mysqlnd_fetch_into(result, flags, ret_val, ext) (result)->m.fetch_into((result), (flags), (ret_val), (ext) TSRMLS_CC ZEND_FILE_LINE_CC) ! 121: #define mysqlnd_fetch_row_c(result) (result)->m.fetch_row_c((result) TSRMLS_CC) ! 122: #define mysqlnd_fetch_all(result, flags, return_value) (result)->m.fetch_all((result), (flags), (return_value) TSRMLS_CC ZEND_FILE_LINE_CC) ! 123: #define mysqlnd_result_fetch_field_data(res,offset,ret) (res)->m.fetch_field_data((res), (offset), (ret) TSRMLS_CC) ! 124: #define mysqlnd_get_connection_stats(conn, values) (conn)->m->get_statistics((conn), (values) TSRMLS_CC ZEND_FILE_LINE_CC) ! 125: #define mysqlnd_get_client_stats(values) _mysqlnd_get_client_stats((values) TSRMLS_CC ZEND_FILE_LINE_CC) ! 126: ! 127: #define mysqlnd_close(conn,is_forced) (conn)->m->close((conn), (is_forced) TSRMLS_CC) ! 128: #define mysqlnd_query(conn, query_str, query_len) (conn)->m->query((conn), (query_str), (query_len) TSRMLS_CC) ! 129: #define mysqlnd_async_query(conn, query_str, query_len) (conn)->m->send_query((conn), (query_str), (query_len) TSRMLS_CC) ! 130: #define mysqlnd_poll(r, err, d_pull,sec,usec,desc_num) _mysqlnd_poll((r), (err), (d_pull), (sec), (usec), (desc_num) TSRMLS_CC) ! 131: #define mysqlnd_reap_async_query(conn) (conn)->m->reap_query((conn) TSRMLS_CC) ! 132: #define mysqlnd_unbuffered_skip_result(result) (result)->m.skip_result((result) TSRMLS_CC) ! 133: ! 134: PHPAPI enum_func_status _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll, long sec, long usec, uint * desc_num TSRMLS_DC); ! 135: ! 136: #define mysqlnd_use_result(conn) (conn)->m->use_result((conn) TSRMLS_CC) ! 137: #define mysqlnd_store_result(conn) (conn)->m->store_result((conn) TSRMLS_CC) ! 138: #define mysqlnd_next_result(conn) (conn)->m->next_result((conn) TSRMLS_CC) ! 139: #define mysqlnd_more_results(conn) (conn)->m->more_results((conn) TSRMLS_CC) ! 140: #define mysqlnd_free_result(r,e_or_i) ((MYSQLND_RES*)r)->m.free_result(((MYSQLND_RES*)(r)), (e_or_i) TSRMLS_CC) ! 141: #define mysqlnd_data_seek(result, row) (result)->m.seek_data((result), (row) TSRMLS_CC) ! 142: ! 143: /* Errors */ ! 144: #define mysqlnd_errno(conn) (conn)->m->get_error_no((conn) TSRMLS_CC) ! 145: #define mysqlnd_error(conn) (conn)->m->get_error_str((conn) TSRMLS_CC) ! 146: #define mysqlnd_sqlstate(conn) (conn)->m->get_sqlstate((conn) TSRMLS_CC) ! 147: ! 148: /* Charset */ ! 149: #define mysqlnd_character_set_name(conn) (conn)->m->charset_name((conn) TSRMLS_CC) ! 150: ! 151: /* Simple metadata */ ! 152: #define mysqlnd_field_count(conn) (conn)->m->get_field_count((conn) TSRMLS_CC) ! 153: #define mysqlnd_insert_id(conn) (conn)->m->get_last_insert_id((conn) TSRMLS_CC) ! 154: #define mysqlnd_affected_rows(conn) (conn)->m->get_affected_rows((conn) TSRMLS_CC) ! 155: #define mysqlnd_warning_count(conn) (conn)->m->get_warning_count((conn) TSRMLS_CC) ! 156: #define mysqlnd_info(conn) (conn)->m->get_last_message((conn) TSRMLS_CC) ! 157: #define mysqlnd_get_server_info(conn) (conn)->m->get_server_information((conn) TSRMLS_CC) ! 158: #define mysqlnd_get_host_info(conn) (conn)->m->get_host_information((conn) TSRMLS_CC) ! 159: #define mysqlnd_get_proto_info(conn) (conn)->m->get_protocol_information((conn) TSRMLS_CC) ! 160: #define mysqlnd_thread_id(conn) (conn)->m->get_thread_id((conn) TSRMLS_CC) ! 161: ! 162: #define mysqlnd_num_rows(result) (result)->m.num_rows((result) TSRMLS_CC) ! 163: #define mysqlnd_num_fields(result) (result)->m.num_fields((result) TSRMLS_CC) ! 164: ! 165: #define mysqlnd_fetch_lengths(result) _mysqlnd_fetch_lengths((result) TSRMLS_CC) ! 166: PHPAPI unsigned long * _mysqlnd_fetch_lengths(MYSQLND_RES * const result TSRMLS_DC); ! 167: ! 168: #define mysqlnd_field_seek(result, ofs) (result)->m.seek_field((result), (ofs) TSRMLS_CC) ! 169: #define mysqlnd_field_tell(result) (result)->m.field_tell((result) TSRMLS_CC) ! 170: #define mysqlnd_fetch_field(result) (result)->m.fetch_field((result) TSRMLS_CC) ! 171: #define mysqlnd_fetch_field_direct(result,fnr) (result)->m.fetch_field_direct((result), (fnr) TSRMLS_CC) ! 172: #define mysqlnd_fetch_fields(result) (result)->m.fetch_fields((result) TSRMLS_CC) ! 173: ! 174: /* mysqlnd metadata */ ! 175: PHPAPI const char * mysqlnd_get_client_info(); ! 176: PHPAPI unsigned int mysqlnd_get_client_version(); ! 177: ! 178: #define mysqlnd_ssl_set(conn, key, cert, ca, capath, cipher) (conn)->m->ssl_set((conn), (key), (cert), (ca), (capath), (cipher) TSRMLS_CC) ! 179: ! 180: /* PS */ ! 181: #define mysqlnd_stmt_insert_id(stmt) (stmt)->m->get_last_insert_id((stmt) TSRMLS_CC) ! 182: #define mysqlnd_stmt_affected_rows(stmt) (stmt)->m->get_affected_rows((stmt) TSRMLS_CC) ! 183: #define mysqlnd_stmt_num_rows(stmt) (stmt)->m->get_num_rows((stmt) TSRMLS_CC) ! 184: #define mysqlnd_stmt_param_count(stmt) (stmt)->m->get_param_count((stmt) TSRMLS_CC) ! 185: #define mysqlnd_stmt_field_count(stmt) (stmt)->m->get_field_count((stmt) TSRMLS_CC) ! 186: #define mysqlnd_stmt_warning_count(stmt) (stmt)->m->get_warning_count((stmt) TSRMLS_CC) ! 187: #define mysqlnd_stmt_server_status(stmt) (stmt)->m->get_server_status((stmt) TSRMLS_CC) ! 188: #define mysqlnd_stmt_errno(stmt) (stmt)->m->get_error_no((stmt) TSRMLS_CC) ! 189: #define mysqlnd_stmt_error(stmt) (stmt)->m->get_error_str((stmt) TSRMLS_CC) ! 190: #define mysqlnd_stmt_sqlstate(stmt) (stmt)->m->get_sqlstate((stmt) TSRMLS_CC) ! 191: ! 192: ! 193: PHPAPI void mysqlnd_efree_param_bind_dtor(MYSQLND_PARAM_BIND * param_bind TSRMLS_DC); ! 194: PHPAPI void mysqlnd_efree_result_bind_dtor(MYSQLND_RESULT_BIND * result_bind TSRMLS_DC); ! 195: PHPAPI void mysqlnd_free_param_bind_dtor(MYSQLND_PARAM_BIND * param_bind TSRMLS_DC); ! 196: PHPAPI void mysqlnd_free_result_bind_dtor(MYSQLND_RESULT_BIND * result_bind TSRMLS_DC); ! 197: ! 198: ! 199: PHPAPI const char * mysqlnd_field_type_name(enum mysqlnd_field_types field_type); ! 200: ! 201: /* LOAD DATA LOCAL */ ! 202: PHPAPI void mysqlnd_local_infile_default(MYSQLND *conn); ! 203: PHPAPI void mysqlnd_set_local_infile_handler(MYSQLND * const conn, const char * const funcname); ! 204: ! 205: /* Simple commands */ ! 206: #ifdef AUTOCOMMIT_TX_COMMIT_ROLLBACK ! 207: #define mysqlnd_autocommit(conn, mode) (conn)->m->set_autocommit((conn), (mode) TSRMLS_CC) ! 208: #define mysqlnd_commit(conn) (conn)->m->tx_commit((conn) TSRMLS_CC) ! 209: #define mysqlnd_rollback(conn) (conn)->m->tx_rollback((conn) TSRMLS_CC) ! 210: #else ! 211: #define mysqlnd_autocommit(conn, mode) (conn)->m->query((conn),(mode) ? "SET AUTOCOMMIT=1":"SET AUTOCOMMIT=0", 16 TSRMLS_CC) ! 212: #define mysqlnd_commit(conn) (conn)->m->query((conn), "COMMIT", sizeof("COMMIT")-1 TSRMLS_CC) ! 213: #define mysqlnd_rollback(conn) (conn)->m->query((conn), "ROLLBACK", sizeof("ROLLBACK")-1 TSRMLS_CC) ! 214: #endif ! 215: #define mysqlnd_list_dbs(conn, wild) (conn)->m->list_method((conn), wild? "SHOW DATABASES LIKE %s":"SHOW DATABASES", (wild), NULL TSRMLS_CC) ! 216: #define mysqlnd_list_fields(conn, tab,wild) (conn)->m->list_fields((conn), (tab), (wild) TSRMLS_CC) ! 217: #define mysqlnd_list_processes(conn) (conn)->m->list_method((conn), "SHOW PROCESSLIST", NULL, NULL TSRMLS_CC) ! 218: #define mysqlnd_list_tables(conn, wild) (conn)->m->list_method((conn), wild? "SHOW TABLES LIKE %s":"SHOW TABLES", (wild), NULL TSRMLS_CC) ! 219: #define mysqlnd_dump_debug_info(conn) (conn)->m->server_dump_debug_information((conn) TSRMLS_CC) ! 220: #define mysqlnd_select_db(conn, db, db_len) (conn)->m->select_db((conn), (db), (db_len) TSRMLS_CC) ! 221: #define mysqlnd_ping(conn) (conn)->m->ping((conn) TSRMLS_CC) ! 222: #define mysqlnd_kill(conn, pid) (conn)->m->kill_connection((conn), (pid) TSRMLS_CC) ! 223: #define mysqlnd_refresh(conn, options) (conn)->m->refresh_server((conn), (options) TSRMLS_CC) ! 224: #define mysqlnd_shutdown(conn, level) (conn)->m->shutdown_server((conn), (level) TSRMLS_CC) ! 225: #define mysqlnd_get_server_version(conn) (conn)->m->get_server_version((conn) TSRMLS_CC) ! 226: #define mysqlnd_set_character_set(conn, cs) (conn)->m->set_charset((conn), (cs) TSRMLS_CC) ! 227: #define mysqlnd_stat(conn, msg, msg_len) (conn)->m->get_server_statistics((conn), (msg), (msg_len) TSRMLS_CC) ! 228: #define mysqlnd_options(conn, opt, value) (conn)->m->set_client_option((conn), (opt), (value) TSRMLS_CC) ! 229: #define mysqlnd_set_server_option(conn, op) (conn)->m->set_server_option((conn), (op) TSRMLS_CC) ! 230: ! 231: /* Escaping */ ! 232: #define mysqlnd_real_escape_string(conn, newstr, escapestr, escapestr_len) \ ! 233: (conn)->m->escape_string((conn), (newstr), (escapestr), (escapestr_len) TSRMLS_CC) ! 234: #define mysqlnd_escape_string(newstr, escapestr, escapestr_len) \ ! 235: mysqlnd_old_escape_string((newstr), (escapestr), (escapestr_len) TSRMLS_CC) ! 236: ! 237: PHPAPI ulong mysqlnd_old_escape_string(char *newstr, const char *escapestr, size_t escapestr_len TSRMLS_DC); ! 238: ! 239: ! 240: /* PS */ ! 241: #define mysqlnd_stmt_init(conn) (conn)->m->stmt_init((conn) TSRMLS_CC) ! 242: #define mysqlnd_stmt_store_result(stmt) (!mysqlnd_stmt_field_count((stmt)) ? PASS:((stmt)->m->store_result((stmt) TSRMLS_CC)? PASS:FAIL)) ! 243: #define mysqlnd_stmt_get_result(stmt) (stmt)->m->get_result((stmt) TSRMLS_CC) ! 244: #define mysqlnd_stmt_more_results(stmt) (stmt)->m->more_results((stmt) TSRMLS_CC) ! 245: #define mysqlnd_stmt_next_result(stmt) (stmt)->m->next_result((stmt) TSRMLS_CC) ! 246: #define mysqlnd_stmt_data_seek(stmt, row) (stmt)->m->seek_data((stmt), (row) TSRMLS_CC) ! 247: #define mysqlnd_stmt_prepare(stmt, q, qlen) (stmt)->m->prepare((stmt), (q), (qlen) TSRMLS_CC) ! 248: #define mysqlnd_stmt_execute(stmt) (stmt)->m->execute((stmt) TSRMLS_CC) ! 249: #define mysqlnd_stmt_send_long_data(stmt,p,d,l) (stmt)->m->send_long_data((stmt), (p), (d), (l) TSRMLS_CC) ! 250: #define mysqlnd_stmt_alloc_param_bind(stmt) (stmt)->m->alloc_parameter_bind((stmt) TSRMLS_CC) ! 251: #define mysqlnd_stmt_free_param_bind(stmt,bind) (stmt)->m->free_parameter_bind((stmt), (bind) TSRMLS_CC) ! 252: #define mysqlnd_stmt_bind_param(stmt,bind) (stmt)->m->bind_parameters((stmt), (bind) TSRMLS_CC) ! 253: #define mysqlnd_stmt_bind_one_param(stmt,n,z,t) (stmt)->m->bind_one_parameter((stmt), (n), (z), (t) TSRMLS_CC) ! 254: #define mysqlnd_stmt_refresh_bind_param(s) (s)->m->refresh_bind_param((s) TSRMLS_CC) ! 255: #define mysqlnd_stmt_alloc_result_bind(stmt) (stmt)->m->alloc_result_bind((stmt) TSRMLS_CC) ! 256: #define mysqlnd_stmt_free_result_bind(stmt,bind) (stmt)->m->free_result_bind((stmt), (bind) TSRMLS_CC) ! 257: #define mysqlnd_stmt_bind_result(stmt,bind) (stmt)->m->bind_result((stmt), (bind) TSRMLS_CC) ! 258: #define mysqlnd_stmt_bind_one_result(s,no) (s)->m->bind_one_result((s), (no) TSRMLS_CC) ! 259: #define mysqlnd_stmt_param_metadata(stmt) (stmt)->m->get_parameter_metadata((stmt)) ! 260: #define mysqlnd_stmt_result_metadata(stmt) (stmt)->m->get_result_metadata((stmt) TSRMLS_CC) ! 261: ! 262: #define mysqlnd_stmt_free_result(stmt) (stmt)->m->free_result((stmt) TSRMLS_CC) ! 263: #define mysqlnd_stmt_close(stmt, implicit) (stmt)->m->dtor((stmt), (implicit) TSRMLS_CC) ! 264: #define mysqlnd_stmt_reset(stmt) (stmt)->m->reset((stmt) TSRMLS_CC) ! 265: ! 266: ! 267: #define mysqlnd_stmt_attr_get(stmt, attr, value) (stmt)->m->get_attribute((stmt), (attr), (value) TSRMLS_CC) ! 268: #define mysqlnd_stmt_attr_set(stmt, attr, value) (stmt)->m->set_attribute((stmt), (attr), (value) TSRMLS_CC) ! 269: ! 270: #define mysqlnd_stmt_fetch(stmt, fetched) (stmt)->m->fetch((stmt), (fetched) TSRMLS_CC) ! 271: ! 272: ! 273: /* Performance statistics */ ! 274: PHPAPI void _mysqlnd_get_client_stats(zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC); ! 275: ! 276: /* double check the class name to avoid naming conflicts when using these: */ ! 277: #define MYSQLND_METHOD(class, method) php_##class##_##method##_pub ! 278: #define MYSQLND_METHOD_PRIVATE(class, method) php_##class##_##method##_priv ! 279: ! 280: ZEND_BEGIN_MODULE_GLOBALS(mysqlnd) ! 281: zend_bool collect_statistics; ! 282: zend_bool collect_memory_statistics; ! 283: char* debug; /* The actual string */ ! 284: MYSQLND_DEBUG *dbg; /* The DBG object */ ! 285: long net_cmd_buffer_size; ! 286: long net_read_buffer_size; ! 287: long log_mask; ! 288: long net_read_timeout; ! 289: long mempool_default_size; ! 290: long debug_emalloc_fail_threshold; ! 291: long debug_ecalloc_fail_threshold; ! 292: long debug_erealloc_fail_threshold; ! 293: long debug_malloc_fail_threshold; ! 294: long debug_calloc_fail_threshold; ! 295: long debug_realloc_fail_threshold; ! 296: ZEND_END_MODULE_GLOBALS(mysqlnd) ! 297: ! 298: PHPAPI ZEND_EXTERN_MODULE_GLOBALS(mysqlnd) ! 299: ! 300: #ifdef ZTS ! 301: #define MYSQLND_G(v) TSRMG(mysqlnd_globals_id, zend_mysqlnd_globals *, v) ! 302: #else ! 303: #define MYSQLND_G(v) (mysqlnd_globals.v) ! 304: #endif ! 305: ! 306: ! 307: PHPAPI void mysqlnd_minfo_print_hash(zval *values); ! 308: ! 309: #endif /* MYSQLND_H */ ! 310: ! 311: ! 312: /* ! 313: * Local variables: ! 314: * tab-width: 4 ! 315: * c-basic-offset: 4 ! 316: * End: ! 317: * vim600: noet sw=4 ts=4 fdm=marker ! 318: * vim<600: noet sw=4 ts=4 ! 319: */