From 8792edcf761cdd4714c83069854b3b076596921c Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Thu, 22 Oct 2009 14:30:51 +0000 Subject: [PATCH] Count number of affected_rows for normal and PS queries --- ext/mysqlnd/mysqlnd.c | 4 ++++ ext/mysqlnd/mysqlnd_enum_n_def.h | 2 ++ ext/mysqlnd/mysqlnd_ps.c | 7 ++++++- ext/mysqlnd/mysqlnd_statistics.c | 3 +++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index c5e3350cbb..14b7df9784 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -885,6 +885,10 @@ MYSQLND_METHOD(mysqlnd_conn, query)(MYSQLND *conn, const char *query, unsigned i information from the ok packet. We will fetch it ourselves. */ ret = mysqlnd_query_read_result_set_header(conn, NULL TSRMLS_CC); + if (ret == PASS && conn->last_query_type == QUERY_UPSERT && conn->upsert_status.affected_rows) { + MYSQLND_INC_CONN_STATISTIC_W_VALUE(&conn->stats, STAT_ROWS_AFFECTED_NORMAL, conn->upsert_status.affected_rows); + } + DBG_RETURN(ret); } /* }}} */ diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h index f955d7221d..be1dce4785 100644 --- a/ext/mysqlnd/mysqlnd_enum_n_def.h +++ b/ext/mysqlnd/mysqlnd_enum_n_def.h @@ -354,6 +354,8 @@ typedef enum mysqlnd_collected_stats STAT_ROWS_FETCHED_FROM_CLIENT_PS_BUF, STAT_ROWS_FETCHED_FROM_CLIENT_PS_UNBUF, STAT_ROWS_FETCHED_FROM_CLIENT_PS_CURSOR, + STAT_ROWS_AFFECTED_NORMAL, + STAT_ROWS_AFFECTED_PS, STAT_ROWS_SKIPPED_NORMAL, STAT_ROWS_SKIPPED_PS, STAT_COPY_ON_WRITE_SAVED, diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index a980e960af..c788fdcd4d 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -701,7 +701,12 @@ MYSQLND_METHOD(mysqlnd_stmt, execute)(MYSQLND_STMT * const stmt TSRMLS_DC) } stmt->execute_count++; - DBG_RETURN(mysqlnd_stmt_execute_parse_response(stmt TSRMLS_CC)); + ret = mysqlnd_stmt_execute_parse_response(stmt TSRMLS_CC); + + if (ret == PASS && conn->last_query_type == QUERY_UPSERT && stmt->upsert_status.affected_rows) { + MYSQLND_INC_CONN_STATISTIC_W_VALUE(&conn->stats, STAT_ROWS_AFFECTED_PS, stmt->upsert_status.affected_rows); + } + DBG_RETURN(ret); } /* }}} */ diff --git a/ext/mysqlnd/mysqlnd_statistics.c b/ext/mysqlnd/mysqlnd_statistics.c index 8b8a220e5a..d65c8c1883 100644 --- a/ext/mysqlnd/mysqlnd_statistics.c +++ b/ext/mysqlnd/mysqlnd_statistics.c @@ -76,6 +76,9 @@ const MYSQLND_STRING mysqlnd_stats_values_names[STAT_LAST] = { STR_W_LEN("rows_fetched_from_client_ps_buffered") }, { STR_W_LEN("rows_fetched_from_client_ps_unbuffered") }, { STR_W_LEN("rows_fetched_from_client_ps_cursor") }, + { STR_W_LEN("rows_affected_normal") }, + { STR_W_LEN("rows_affected_ps") }, + { STR_W_LEN("rows_skipped_normal") }, { STR_W_LEN("rows_skipped_normal") }, { STR_W_LEN("rows_skipped_ps") }, { STR_W_LEN("copy_on_write_saved") }, -- 2.40.0