diff options
Diffstat (limited to 'ext/mysqlnd/mysqlnd.h')
-rw-r--r-- | ext/mysqlnd/mysqlnd.h | 165 |
1 files changed, 59 insertions, 106 deletions
diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index 3b3f637e0..1b51c4f14 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -17,13 +17,13 @@ | Ulf Wendel <uwendel@mysql.com> | +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd.h 289630 2009-10-14 13:51:25Z johannes $ */ +/* $Id: mysqlnd.h 294543 2010-02-04 20:28:55Z johannes $ */ #ifndef MYSQLND_H #define MYSQLND_H -#define MYSQLND_VERSION "mysqlnd 5.0.5-dev - 081106 - $Revision: 289630 $" -#define MYSQLND_VERSION_ID 50005 +#define MYSQLND_VERSION "mysqlnd 5.0.7-dev - 091210 - $Revision: 294543 $" +#define MYSQLND_VERSION_ID 50007 /* This forces inlining of some accessor functions */ #define MYSQLND_USE_OPTIMISATIONS 0 @@ -40,7 +40,7 @@ on production systems, if of course measured performance degradation is not minimal. */ -#if PHP_DEBUG +#if A0 && PHP_DEBUG #define MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND 1 #endif @@ -59,11 +59,24 @@ #include "mysqlnd_structs.h" +/* Library related */ +PHPAPI void mysqlnd_library_init(TSRMLS_D); +PHPAPI void mysqlnd_library_end(TSRMLS_D); +PHPAPI unsigned int mysqlnd_plugin_register(); +PHPAPI unsigned int mysqlnd_plugin_count(); +PHPAPI void ** _mysqlnd_plugin_get_plugin_connection_data(const MYSQLND * conn, unsigned int plugin_id TSRMLS_DC); +#define mysqlnd_plugin_get_plugin_connection_data(c, p_id) _mysqlnd_plugin_get_plugin_connection_data((c), (p_id) TSRMLS_CC) + +PHPAPI void ** _mysqlnd_plugin_get_plugin_result_data(const MYSQLND_RES * result, unsigned int plugin_id TSRMLS_DC); +#define mysqlnd_plugin_get_plugin_result_data(r, p_id) _mysqlnd_plugin_get_plugin_result_data((r), (p_id) TSRMLS_CC) + +PHPAPI void ** _mysqlnd_plugin_get_plugin_stmt_data(const MYSQLND_STMT * stmt, unsigned int plugin_id TSRMLS_DC); +#define mysqlnd_plugin_get_plugin_stmt_data(s, p_id) _mysqlnd_plugin_get_plugin_stmt_data((s), (p_id) TSRMLS_CC) + +PHPAPI void ** _mysqlnd_plugin_get_plugin_protocol_data(const MYSQLND_PROTOCOL * protocol, unsigned int plugin_id TSRMLS_DC); +#define mysqlnd_plugin_get_plugin_protocol_data(p, p_id) _mysqlnd_plugin_get_plugin_protocol_data((p), (p_id) TSRMLS_CC) -/* Library related */ -void mysqlnd_library_init(TSRMLS_D); -void mysqlnd_library_end(TSRMLS_D); PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods(); PHPAPI void mysqlnd_conn_set_methods(struct st_mysqlnd_conn_methods *methods); @@ -72,8 +85,8 @@ PHPAPI struct st_mysqlnd_stmt_methods * mysqlnd_stmt_get_methods(); PHPAPI void mysqlnd_stmt_set_methods(struct st_mysqlnd_stmt_methods *methods); -#define mysqlnd_restart_psession(conn, cache) _mysqlnd_restart_psession((conn), (cache) TSRMLS_CC) -PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn, MYSQLND_THD_ZVAL_PCACHE *cache TSRMLS_DC); +#define mysqlnd_restart_psession(conn) _mysqlnd_restart_psession((conn) TSRMLS_CC) +PHPAPI void _mysqlnd_restart_psession(MYSQLND * conn TSRMLS_DC); #define mysqlnd_end_psession(conn) _mysqlnd_end_psession((conn) TSRMLS_CC) PHPAPI void _mysqlnd_end_psession(MYSQLND *conn TSRMLS_DC); PHPAPI void mysqlnd_minfo_print_hash(zval *values); @@ -92,11 +105,10 @@ PHPAPI MYSQLND * mysqlnd_connect(MYSQLND *conn, const char *db, unsigned int db_len, unsigned int port, const char *socket, - unsigned int mysql_flags, - MYSQLND_THD_ZVAL_PCACHE *zval_cache + unsigned int mysql_flags TSRMLS_DC); -#define mysqlnd_change_user(conn, user, passwd, db) (conn)->m->change_user((conn), (user), (passwd), (db) TSRMLS_CC) +#define mysqlnd_change_user(conn, user, passwd, db, silent) (conn)->m->change_user((conn), (user), (passwd), (db), (silent) TSRMLS_CC) #define mysqlnd_debug(x) _mysqlnd_debug((x) TSRMLS_CC) PHPAPI void _mysqlnd_debug(const char *mode TSRMLS_DC); @@ -120,7 +132,6 @@ PHPAPI enum_func_status _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQ #define mysqlnd_use_result(conn) (conn)->m->use_result((conn) TSRMLS_CC) #define mysqlnd_store_result(conn) (conn)->m->store_result((conn) TSRMLS_CC) -#define mysqlnd_bg_store_result(conn) (conn)->m->background_store_result((conn) TSRMLS_CC) #define mysqlnd_next_result(conn) (conn)->m->next_result((conn) TSRMLS_CC) #define mysqlnd_more_results(conn) (conn)->m->more_results((conn) TSRMLS_CC) #define mysqlnd_free_result(r,e_or_i) ((MYSQLND_RES*)r)->m.free_result(((MYSQLND_RES*)(r)), (e_or_i) TSRMLS_CC) @@ -151,7 +162,7 @@ PHPAPI enum_func_status _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQ #define mysqlnd_num_rows(result) ((result)->stored_data? (result)->stored_data->row_count:0) #define mysqlnd_num_fields(result) (result)->field_count -#define mysqlnd_fetch_lengths(result) ((result)->m.fetch_lengths? (result)->m.fetch_lengths((result)):NULL) +#define mysqlnd_fetch_lengths(result) ((result)->m.fetch_lengths? (result)->m.fetch_lengths((result) TSRMLS_CC) : NULL) #define mysqlnd_field_seek(result, ofs) (result)->m.seek_field((result), (ofs)) #define mysqlnd_field_tell(result) ((result)->meta? (result)->meta->current_field:0) @@ -181,31 +192,32 @@ PHPAPI enum_func_status _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQ /*****************************************************************************************************/ /* Errors */ -#define mysqlnd_errno(conn) (conn)->m->get_error_no((conn)) -#define mysqlnd_error(conn) (conn)->m->get_error_str((conn)) -#define mysqlnd_sqlstate(conn) (conn)->m->get_sqlstate((conn)) +#define mysqlnd_errno(conn) (conn)->m->get_error_no((conn) TSRMLS_CC) +#define mysqlnd_error(conn) (conn)->m->get_error_str((conn) TSRMLS_CC) +#define mysqlnd_sqlstate(conn) (conn)->m->get_sqlstate((conn) TSRMLS_CC) /* Charset */ -#define mysqlnd_character_set_name(conn) (conn)->m->charset_name((conn)) +#define mysqlnd_character_set_name(conn) (conn)->m->charset_name((conn) TSRMLS_CC) /* Simple metadata */ -#define mysqlnd_field_count(conn) (conn)->m->get_field_count((conn)) -#define mysqlnd_insert_id(conn) (conn)->m->get_last_insert_id((conn)) -#define mysqlnd_affected_rows(conn) (conn)->m->get_affected_rows((conn)) -#define mysqlnd_warning_count(conn) (conn)->m->get_warning_count((conn)) -#define mysqlnd_info(conn) (conn)->m->get_last_message((conn)) -#define mysqlnd_get_server_info(conn) (conn)->m->get_server_information((conn)) -#define mysqlnd_get_host_info(conn) (conn)->m->get_host_information((conn)) -#define mysqlnd_get_proto_info(conn) (conn)->m->get_protocol_information((conn)) -#define mysqlnd_thread_id(conn) (conn)->m->get_thread_id((conn)) - -#define mysqlnd_num_rows(result) (result)->m.num_rows((result)) -#define mysqlnd_num_fields(result) (result)->m.num_fields((result)) - -PHPAPI unsigned long * mysqlnd_fetch_lengths(MYSQLND_RES * const result); - -#define mysqlnd_field_seek(result, ofs) (result)->m.seek_field((result), (ofs)) -#define mysqlnd_field_tell(result) (result)->m.field_tell((result)) +#define mysqlnd_field_count(conn) (conn)->m->get_field_count((conn) TSRMLS_CC) +#define mysqlnd_insert_id(conn) (conn)->m->get_last_insert_id((conn) TSRMLS_CC) +#define mysqlnd_affected_rows(conn) (conn)->m->get_affected_rows((conn) TSRMLS_CC) +#define mysqlnd_warning_count(conn) (conn)->m->get_warning_count((conn) TSRMLS_CC) +#define mysqlnd_info(conn) (conn)->m->get_last_message((conn) TSRMLS_CC) +#define mysqlnd_get_server_info(conn) (conn)->m->get_server_information((conn) TSRMLS_CC) +#define mysqlnd_get_host_info(conn) (conn)->m->get_host_information((conn) TSRMLS_CC) +#define mysqlnd_get_proto_info(conn) (conn)->m->get_protocol_information((conn) TSRMLS_CC) +#define mysqlnd_thread_id(conn) (conn)->m->get_thread_id((conn) TSRMLS_CC) + +#define mysqlnd_num_rows(result) (result)->m.num_rows((result) TSRMLS_CC) +#define mysqlnd_num_fields(result) (result)->m.num_fields((result) TSRMLS_CC) + +#define mysqlnd_fetch_lengths(result) _mysqlnd_fetch_lengths((result) TSRMLS_CC) +PHPAPI unsigned long * _mysqlnd_fetch_lengths(MYSQLND_RES * const result TSRMLS_DC); + +#define mysqlnd_field_seek(result, ofs) (result)->m.seek_field((result), (ofs) TSRMLS_CC) +#define mysqlnd_field_tell(result) (result)->m.field_tell((result) TSRMLS_CC) #define mysqlnd_fetch_field(result) (result)->m.fetch_field((result) TSRMLS_CC) #define mysqlnd_fetch_field_direct(result,fnr) (result)->m.fetch_field_direct((result), (fnr) TSRMLS_CC) #define mysqlnd_fetch_fields(result) (result)->m.fetch_fields((result) TSRMLS_CC) @@ -215,15 +227,15 @@ PHPAPI const char * mysqlnd_get_client_info(); PHPAPI unsigned int mysqlnd_get_client_version(); /* PS */ -#define mysqlnd_stmt_insert_id(stmt) (stmt)->m->get_last_insert_id((stmt)) -#define mysqlnd_stmt_affected_rows(stmt) (stmt)->m->get_affected_rows((stmt)) -#define mysqlnd_stmt_num_rows(stmt) (stmt)->m->get_num_rows((stmt)) -#define mysqlnd_stmt_param_count(stmt) (stmt)->m->get_param_count((stmt)) -#define mysqlnd_stmt_field_count(stmt) (stmt)->m->get_field_count((stmt)) -#define mysqlnd_stmt_warning_count(stmt) (stmt)->m->get_warning_count((stmt)) -#define mysqlnd_stmt_errno(stmt) (stmt)->m->get_error_no((stmt)) -#define mysqlnd_stmt_error(stmt) (stmt)->m->get_error_str((stmt)) -#define mysqlnd_stmt_sqlstate(stmt) (stmt)->m->get_sqlstate((stmt)) +#define mysqlnd_stmt_insert_id(stmt) (stmt)->m->get_last_insert_id((stmt) TSRMLS_CC) +#define mysqlnd_stmt_affected_rows(stmt) (stmt)->m->get_affected_rows((stmt) TSRMLS_CC) +#define mysqlnd_stmt_num_rows(stmt) (stmt)->m->get_num_rows((stmt) TSRMLS_CC) +#define mysqlnd_stmt_param_count(stmt) (stmt)->m->get_param_count((stmt) TSRMLS_CC) +#define mysqlnd_stmt_field_count(stmt) (stmt)->m->get_field_count((stmt) TSRMLS_CC) +#define mysqlnd_stmt_warning_count(stmt) (stmt)->m->get_warning_count((stmt) TSRMLS_CC) +#define mysqlnd_stmt_errno(stmt) (stmt)->m->get_error_no((stmt) TSRMLS_CC) +#define mysqlnd_stmt_error(stmt) (stmt)->m->get_error_str((stmt) TSRMLS_CC) +#define mysqlnd_stmt_sqlstate(stmt) (stmt)->m->get_sqlstate((stmt) TSRMLS_CC) #endif /* MYSQLND_USE_OPTIMISATIONS */ /*****************************************************************************************************/ @@ -252,7 +264,7 @@ PHPAPI void mysqlnd_set_local_infile_handler(MYSQLND * const conn, const char * #define mysqlnd_kill(conn, pid) (conn)->m->kill_connection((conn), (pid) TSRMLS_CC) #define mysqlnd_refresh(conn, options) (conn)->m->refresh_server((conn), (options) TSRMLS_CC) #define mysqlnd_shutdown(conn, level) (conn)->m->shutdown_server((conn), (level) TSRMLS_CC) -#define mysqlnd_get_server_version(conn) (conn)->m->get_server_version((conn)) +#define mysqlnd_get_server_version(conn) (conn)->m->get_server_version((conn) TSRMLS_CC) #define mysqlnd_set_character_set(conn, cs) (conn)->m->set_charset((conn), (cs) TSRMLS_CC) #define mysqlnd_stat(conn, msg, msg_len) (conn)->m->get_server_statistics((conn), (msg), (msg_len) TSRMLS_CC) #define mysqlnd_options(conn, opt, value) (conn)->m->set_client_option((conn), (opt), (value) TSRMLS_CC) @@ -270,7 +282,6 @@ PHPAPI ulong mysqlnd_old_escape_string(char *newstr, const char *escapestr, size /* PS */ #define mysqlnd_stmt_init(conn) (conn)->m->stmt_init((conn) TSRMLS_CC) #define mysqlnd_stmt_store_result(stmt) (!mysqlnd_stmt_field_count((stmt)) ? PASS:((stmt)->m->store_result((stmt) TSRMLS_CC)? PASS:FAIL)) -#define mysqlnd_stmt_bg_store_result(stmt) (!mysqlnd_stmt_field_count((stmt)) ? PASS:((stmt)->m->background_store_result((stmt) TSRMLS_CC)? PASS:FAIL)) #define mysqlnd_stmt_get_result(stmt) (stmt)->m->get_result((stmt) TSRMLS_CC) #define mysqlnd_stmt_more_results(stmt) (stmt)->m->more_results((stmt) TSRMLS_CC) #define mysqlnd_stmt_next_result(stmt) (stmt)->m->next_result((stmt) TSRMLS_CC) @@ -302,63 +313,6 @@ PHPAPI ulong mysqlnd_old_escape_string(char *newstr, const char *escapestr, size /* Performance statistics */ PHPAPI void _mysqlnd_get_client_stats(zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC); -/* Persistent caching zval allocator */ -#define mysqlnd_palloc_init_cache(size) _mysqlnd_palloc_init_cache((size) TSRMLS_CC) -#define mysqlnd_palloc_free_cache(cache) _mysqlnd_palloc_free_cache((cache) TSRMLS_CC) -PHPAPI MYSQLND_ZVAL_PCACHE* _mysqlnd_palloc_init_cache(unsigned int cache_size TSRMLS_DC); -PHPAPI void _mysqlnd_palloc_free_cache(MYSQLND_ZVAL_PCACHE *cache TSRMLS_DC); -PHPAPI void mysqlnd_palloc_stats(const MYSQLND_ZVAL_PCACHE * const cache, - zval *return_value); - -#define mysqlnd_palloc_rinit(cache) _mysqlnd_palloc_rinit((cache) TSRMLS_CC) -#define mysqlnd_palloc_rshutdown(cache) _mysqlnd_palloc_rshutdown((cache) TSRMLS_CC) -PHPAPI MYSQLND_THD_ZVAL_PCACHE * _mysqlnd_palloc_rinit(MYSQLND_ZVAL_PCACHE * cache TSRMLS_DC); -PHPAPI void _mysqlnd_palloc_rshutdown(MYSQLND_THD_ZVAL_PCACHE * cache TSRMLS_DC); - - -#define mysqlnd_palloc_init_thd_cache(cache) _mysqlnd_palloc_init_thd_cache((cache) TSRMLS_CC) -#define mysqlnd_palloc_free_thd_cache_reference(cache) _mysqlnd_palloc_free_thd_cache_reference((cache) TSRMLS_CC) -#define mysqlnd_palloc_get_thd_cache_reference(cache) _mysqlnd_palloc_get_thd_cache_reference((cache) TSRMLS_CC) - -PHPAPI MYSQLND_THD_ZVAL_PCACHE* _mysqlnd_palloc_init_thd_cache(MYSQLND_ZVAL_PCACHE * const cache TSRMLS_DC); -MYSQLND_THD_ZVAL_PCACHE* _mysqlnd_palloc_get_thd_cache_reference(MYSQLND_THD_ZVAL_PCACHE * const cache TSRMLS_DC); -PHPAPI void _mysqlnd_palloc_free_thd_cache_reference(MYSQLND_THD_ZVAL_PCACHE **cache TSRMLS_DC); - - -/* There two should not be used from outside */ -void * mysqlnd_palloc_get_zval(MYSQLND_THD_ZVAL_PCACHE * const cache, zend_bool *allocated TSRMLS_DC); -void mysqlnd_palloc_zval_ptr_dtor(zval **zv, MYSQLND_THD_ZVAL_PCACHE * const cache, - enum_mysqlnd_res_type type, zend_bool *copy_ctor_called TSRMLS_DC); - - - -/* ---------------------- QUERY CACHE ---------------*/ -struct st_mysqlnd_qcache { - HashTable *ht; - unsigned int references; -#ifdef ZTS - MUTEX_T LOCK_access; -#endif -}; - - -typedef struct st_mysqlnd_qcache_element { - MYSQLND_RES_BUFFERED *data; - MYSQLND_RES_METADATA *meta; - const char * query; - size_t query_len; -} MYSQLND_QCACHE_ELEMENT; - - -PHPAPI MYSQLND_QCACHE * mysqlnd_qcache_init_cache(); -PHPAPI MYSQLND_QCACHE * mysqlnd_qcache_get_cache_reference(MYSQLND_QCACHE * const cache); -PHPAPI void mysqlnd_qcache_free_cache_reference(MYSQLND_QCACHE **cache); -PHPAPI void mysqlnd_qcache_stats(const MYSQLND_QCACHE * const cache, zval *return_value); -MYSQLND_RES * mysqlnd_qcache_get(MYSQLND_QCACHE * const cache, const char * query, - size_t query_len); -void mysqlnd_qcache_put(MYSQLND_QCACHE * const cache, char * query, size_t query_len, - MYSQLND_RES_BUFFERED * const result, MYSQLND_RES_METADATA * const meta); - /* double check the class name to avoid naming conflicts when using these: */ #define MYSQLND_METHOD(class, method) php_##class##_##method##_pub #define MYSQLND_METHOD_PRIVATE(class, method) php_##class##_##method##_priv @@ -371,9 +325,6 @@ ZEND_BEGIN_MODULE_GLOBALS(mysqlnd) long net_cmd_buffer_size; long net_read_buffer_size; long log_mask; -#ifdef MYSQLND_THREADED - THREAD_T thread_id; -#endif long net_read_timeout; ZEND_END_MODULE_GLOBALS(mysqlnd) @@ -386,6 +337,8 @@ ZEND_EXTERN_MODULE_GLOBALS(mysqlnd); #endif +PHPAPI void mysqlnd_minfo_print_hash(zval *values); + #endif /* MYSQLND_H */ |