]> granicus.if.org Git - php/commitdiff
Update mysqlnd
authorAndrey Hristov <andrey@php.net>
Wed, 7 May 2008 15:14:26 +0000 (15:14 +0000)
committerAndrey Hristov <andrey@php.net>
Wed, 7 May 2008 15:14:26 +0000 (15:14 +0000)
ext/mysqlnd/mysqlnd.c
ext/mysqlnd/mysqlnd.h
ext/mysqlnd/mysqlnd_enum_n_def.h
ext/mysqlnd/mysqlnd_libmysql_compat.h
ext/mysqlnd/mysqlnd_palloc.c
ext/mysqlnd/mysqlnd_result.c
ext/mysqlnd/mysqlnd_statistics.c
ext/mysqlnd/php_mysqlnd.c

index 988b5e07458572c4c179fb76cd05be9e6c75e061..6394e0f06a26de7139cfe1ad5afab7604c968e92 100644 (file)
@@ -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 *
index d41a66fca8a7f9bacb29aea34a40b3c2f098ca2e..9e6c0e665d7a096a21eecefbad4fc9734ed9d3d9 100644 (file)
@@ -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
index 9c97cf779635cd95c58aafcf6a308b54ae2baa72..f08faef826bc144f965c7bd38888b05c47798e6a 100644 (file)
@@ -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,
index 52477e4b6ba9580142592e06689f209e7a3bff17..662cc45af359df14768bdb1aa6f7fac6106c48c2 100644 (file)
 #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))
index f64500b5bf628f0356cf93aba37bff6425942b4b..33ee402ccaeb84f08317ebc6c398c555c30032b3 100644 (file)
@@ -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
index b30f90409f844e1e22a41170f2d375f435562230..7b5f3d6af4365dfc4454c2678d2936b79107f20b 100644 (file)
@@ -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
index 7aaf30ca94210b4bf9de86ecdfd802e362400f59..eb8645b132a7b97dff6a1ce4dd2968644fa11e74 100644 (file)
@@ -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") },
index e232d48ac9b9183b5ffc99933590c84951ba0a24..40155ed31e83324da3688c73e720361ae7f70002 100644 (file)
@@ -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()
 /* }}} */