From: Andrey Hristov Date: Wed, 7 May 2008 15:14:26 +0000 (+0000) Subject: Update mysqlnd X-Git-Tag: BEFORE_NEW_PARAMETER_PARSE~267 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=825627254090ba7480cc3ee29b5bc9db74e106d9;p=php Update mysqlnd --- diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index 988b5e0745..6394e0f06a 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -1390,7 +1390,7 @@ MYSQLND_METHOD(mysqlnd_conn, info)(const MYSQLND * const conn) } /* }}} */ - +#if !defined(MYSQLND_USE_OPTIMISATIONS) || MYSQLND_USE_OPTIMISATIONS == 0 /* {{{ mysqlnd_get_client_info */ PHPAPI const char * mysqlnd_get_client_info() { @@ -1405,7 +1405,7 @@ PHPAPI unsigned int mysqlnd_get_client_version() return MYSQLND_VERSION_ID; } /* }}} */ - +#endif /* {{{ mysqlnd_conn::get_server_info */ static const char * diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index d41a66fca8..9e6c0e665d 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -23,8 +23,8 @@ #ifndef MYSQLND_H #define MYSQLND_H -#define MYSQLND_VERSION "mysqlnd 5.0.3-dev - 080129 - $Revision$" -#define MYSQLND_VERSION_ID 50002 +#define MYSQLND_VERSION "mysqlnd 5.0.4-dev - 080501 - $Revision$" +#define MYSQLND_VERSION_ID 50004 /* This forces inlining of some accessor functions */ #define MYSQLND_USE_OPTIMISATIONS 0 @@ -138,13 +138,13 @@ PHPAPI void _mysqlnd_debug(const char *mode TSRMLS_DC); #define mysqlnd_get_proto_info(conn) (conn)->protocol_version #define mysqlnd_thread_id(conn) (conn)->thread_id -#define mysqlnd_num_rows(result) ((result)->data? (result)->data->row_count:0) +#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_field_seek(result, ofs) (result)->m.seek_field((result), (ofs)) -#define mysqlnd_field_tell(result) (result)->meta? (result)->meta->current_field:0) +#define mysqlnd_field_tell(result) ((result)->meta? (result)->meta->current_field:0) #define mysqlnd_fetch_field(result) (result)->m.fetch_field((result) TSRMLS_CC) #define mysqlnd_fetch_field_direct(result,fnr) ((result)->meta? &((result)->meta->fields[(fnr)]):NULL) #define mysqlnd_fetch_fields(result) ((result)->meta? (result)->meta->fields: NULL) @@ -358,6 +358,7 @@ ZEND_BEGIN_MODULE_GLOBALS(mysqlnd) MYSQLND_DEBUG *dbg; /* The DBG object */ long net_cmd_buffer_size; long net_read_buffer_size; + long log_mask; #ifdef MYSQLND_THREADED THREAD_T thread_id; #endif diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h index 9c97cf7796..f08faef826 100644 --- a/ext/mysqlnd/mysqlnd_enum_n_def.h +++ b/ext/mysqlnd/mysqlnd_enum_n_def.h @@ -31,8 +31,8 @@ #define SERVER_STATUS_IN_TRANS 1 /* Transaction has started */ #define SERVER_STATUS_AUTOCOMMIT 2 /* Server in auto_commit mode */ #define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */ -#define MYSQLND_SERVER_QUERY_NO_GOOD_INDEX_USED 16 -#define MYSQLND_SERVER_QUERY_NO_INDEX_USED 32 +#define SERVER_QUERY_NO_GOOD_INDEX_USED 16 +#define SERVER_QUERY_NO_INDEX_USED 32 /* The server was able to fulfill the clients request and opened a read-only non-scrollable cursor for a query. This flag comes @@ -48,7 +48,6 @@ #define SERVER_STATUS_NO_BACKSLASH_ESCAPES 512 #define SERVER_QUERY_WAS_SLOW 1024 - #define MYSQLND_NO_DATA 100 #define MYSQLND_DATA_TRUNCATED 101 @@ -316,6 +315,7 @@ typedef enum mysqlnd_collected_stats STAT_NON_RSET_QUERY, STAT_NO_INDEX_USED, STAT_BAD_INDEX_USED, + STAT_QUERY_WAS_SLOW, STAT_BUFFERED_SETS, STAT_UNBUFFERED_SETS, STAT_PS_BUFFERED_SETS, diff --git a/ext/mysqlnd/mysqlnd_libmysql_compat.h b/ext/mysqlnd/mysqlnd_libmysql_compat.h index 52477e4b6b..662cc45af3 100644 --- a/ext/mysqlnd/mysqlnd_libmysql_compat.h +++ b/ext/mysqlnd/mysqlnd_libmysql_compat.h @@ -38,10 +38,6 @@ #define MYSQL_ERRMSG_SIZE MYSQLND_ERRMSG_SIZE #define SQLSTATE_LENGTH MYSQLND_SQLSTATE_LENGTH -#define SERVER_QUERY_NO_GOOD_INDEX_USED MYSQLND_SERVER_QUERY_NO_GOOD_INDEX_USED -#define SERVER_QUERY_NO_INDEX_USED MYSQLND_SERVER_QUERY_NO_INDEX_USED - - /* functions */ #define mysql_affected_rows(r) mysqlnd_affected_rows((r)) #define mysql_autocommit(r,m) mysqlnd_autocommit((r),(m)) diff --git a/ext/mysqlnd/mysqlnd_palloc.c b/ext/mysqlnd/mysqlnd_palloc.c index f64500b5bf..33ee402cca 100644 --- a/ext/mysqlnd/mysqlnd_palloc.c +++ b/ext/mysqlnd/mysqlnd_palloc.c @@ -132,7 +132,6 @@ PHPAPI MYSQLND_THD_ZVAL_PCACHE* _mysqlnd_palloc_init_thd_cache(MYSQLND_ZVAL_PCAC MYSQLND_THD_ZVAL_PCACHE *ret = calloc(1, sizeof(MYSQLND_THD_ZVAL_PCACHE)); DBG_ENTER("_mysqlnd_palloc_init_thd_cache"); DBG_INF_FMT("ret = %p", ret); - ret->parent = mysqlnd_palloc_get_cache_reference(cache); #ifdef ZTS diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c index b30f90409f..7b5f3d6af4 100644 --- a/ext/mysqlnd/mysqlnd_result.c +++ b/ext/mysqlnd/mysqlnd_result.c @@ -583,6 +583,8 @@ mysqlnd_query_read_result_set_header(MYSQLND *conn, MYSQLND_STMT *stmt TSRMLS_DC stmt->state = MYSQLND_STMT_INITTED; } } else { + unsigned int to_log = MYSQLND_G(log_mask); + to_log &= fields_eof.server_status; DBG_INF_FMT("warnings=%u server_status=%u", fields_eof.warning_count, fields_eof.server_status); conn->upsert_status.warning_count = fields_eof.warning_count; /* @@ -593,12 +595,14 @@ mysqlnd_query_read_result_set_header(MYSQLND *conn, MYSQLND_STMT *stmt TSRMLS_DC of every result set (the EOF packet). */ conn->upsert_status.server_status = fields_eof.server_status; - if (fields_eof.server_status & MYSQLND_SERVER_QUERY_NO_GOOD_INDEX_USED) { + if (fields_eof.server_status & SERVER_QUERY_NO_GOOD_INDEX_USED) { stat = STAT_BAD_INDEX_USED; - } else if (fields_eof.server_status & MYSQLND_SERVER_QUERY_NO_INDEX_USED) { + } else if (fields_eof.server_status & SERVER_QUERY_NO_INDEX_USED) { stat = STAT_NO_INDEX_USED; + } else if (fields_eof.server_status & SERVER_QUERY_WAS_SLOW) { + stat = STAT_QUERY_WAS_SLOW; } - if (stat != STAT_LAST) { + if (to_log) { #if A0 char *backtrace = mysqlnd_get_backtrace(TSRMLS_C); php_log_err(backtrace TSRMLS_CC); @@ -706,14 +710,14 @@ unsigned long * mysqlnd_fetch_lengths_unbuffered(MYSQLND_RES * const result) } /* }}} */ - +#if !defined(MYSQLND_USE_OPTIMISATIONS) || MYSQLND_USE_OPTIMISATIONS == 0 /* {{{ mysqlnd_res::fetch_lengths */ PHPAPI unsigned long * mysqlnd_fetch_lengths(MYSQLND_RES * const result) { return result->m.fetch_lengths? result->m.fetch_lengths(result):NULL; } /* }}} */ - +#endif /* {{{ mysqlnd_fetch_row_unbuffered_c */ static MYSQLND_ROW_C diff --git a/ext/mysqlnd/mysqlnd_statistics.c b/ext/mysqlnd/mysqlnd_statistics.c index 7aaf30ca94..eb8645b132 100644 --- a/ext/mysqlnd/mysqlnd_statistics.c +++ b/ext/mysqlnd/mysqlnd_statistics.c @@ -42,6 +42,7 @@ const MYSQLND_STRING mysqlnd_stats_values_names[STAT_LAST] = { STR_W_LEN("non_result_set_queries") }, { STR_W_LEN("no_index_used") }, { STR_W_LEN("bad_index_used") }, + { STR_W_LEN("slow_queries") }, { STR_W_LEN("buffered_sets") }, { STR_W_LEN("unbuffered_sets") }, { STR_W_LEN("ps_buffered_sets") }, diff --git a/ext/mysqlnd/php_mysqlnd.c b/ext/mysqlnd/php_mysqlnd.c index e232d48ac9..40155ed31e 100644 --- a/ext/mysqlnd/php_mysqlnd.c +++ b/ext/mysqlnd/php_mysqlnd.c @@ -26,6 +26,7 @@ #include "mysqlnd_debug.h" #include "ext/standard/info.h" + /* {{{ mysqlnd_functions[] * * Every user visible function must have an entry in mysqlnd_functions[]. @@ -138,6 +139,7 @@ static PHP_GINIT_FUNCTION(mysqlnd) mysqlnd_globals->dbg = NULL; /* The DBG object*/ mysqlnd_globals->net_cmd_buffer_size = 2048; mysqlnd_globals->net_read_buffer_size = 32768; + mysqlnd_globals->log_mask = 0; } /* }}} */ @@ -150,6 +152,7 @@ PHP_INI_BEGIN() STD_PHP_INI_ENTRY("mysqlnd.debug", NULL, PHP_INI_SYSTEM, OnUpdateString, debug, zend_mysqlnd_globals, mysqlnd_globals) STD_PHP_INI_ENTRY("mysqlnd.net_cmd_buffer_size", "2048", PHP_INI_ALL, OnUpdateLong, net_cmd_buffer_size, zend_mysqlnd_globals, mysqlnd_globals) STD_PHP_INI_ENTRY("mysqlnd.net_read_buffer_size", "32768",PHP_INI_ALL, OnUpdateLong, net_read_buffer_size, zend_mysqlnd_globals, mysqlnd_globals) + STD_PHP_INI_ENTRY("mysqlnd.log_mask", "0", PHP_INI_ALL, OnUpdateLong, log_mask, zend_mysqlnd_globals, mysqlnd_globals) PHP_INI_END() /* }}} */