]> granicus.if.org Git - php/commitdiff
Count number of affected_rows for normal and PS queries
authorAndrey Hristov <andrey@php.net>
Thu, 22 Oct 2009 14:30:51 +0000 (14:30 +0000)
committerAndrey Hristov <andrey@php.net>
Thu, 22 Oct 2009 14:30:51 +0000 (14:30 +0000)
ext/mysqlnd/mysqlnd.c
ext/mysqlnd/mysqlnd_enum_n_def.h
ext/mysqlnd/mysqlnd_ps.c
ext/mysqlnd/mysqlnd_statistics.c

index c5e3350cbb5cc6cc439e92b0026064b35633c550..14b7df97848e35d067ab7535a648af2adc2fceb8 100644 (file)
@@ -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);
 }
 /* }}} */
index f955d7221d495c8a8db8e2795cebd5781ba9263b..be1dce478590a2f5adbb994c5d2c6be4d50fe748 100644 (file)
@@ -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,
index a980e960afc94cde47757199842b5c4a39c3a4ef..c788fdcd4df1106fb06b6f902bff270e7068b6f3 100644 (file)
@@ -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);
 }
 /* }}} */
 
index 8b8a220e5a4bdc0e325a01fcbe6178332232bec4..d65c8c1883030cb341563e706e7b562296bafc3e 100644 (file)
@@ -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") },