diff --git a/include/ma_pvio.h b/include/ma_pvio.h index 05a0748f..b6ced92f 100644 --- a/include/ma_pvio.h +++ b/include/ma_pvio.h @@ -84,6 +84,8 @@ struct st_ma_pvio { PVIO_METHODS *methods; void (*set_error)(MYSQL *mysql, unsigned int error_nr, const char *sqlstate, const char *format, ...); void (*callback)(MARIADB_PVIO *pvio, my_bool is_read, const uchar *buffer, size_t length); + size_t bytes_read; + size_t bytes_sent; }; typedef struct st_ma_pvio_cinfo diff --git a/include/mysql.h b/include/mysql.h index 5e74b7e7..8a3884c0 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -285,7 +285,9 @@ extern const char *SQLSTATE_UNKNOWN; MARIADB_CONNECTION_SERVER_STATUS, MARIADB_CONNECTION_SERVER_CAPABILITIES, MARIADB_CONNECTION_EXTENDED_SERVER_CAPABILITIES, - MARIADB_CONNECTION_CLIENT_CAPABILITIES + MARIADB_CONNECTION_CLIENT_CAPABILITIES, + MARIADB_CONNECTION_BYTES_READ, + MARIADB_CONNECTION_BYTES_SENT }; enum mysql_status { MYSQL_STATUS_READY, diff --git a/libmariadb/ma_pvio.c b/libmariadb/ma_pvio.c index 12569b03..b142add2 100644 --- a/libmariadb/ma_pvio.c +++ b/libmariadb/ma_pvio.c @@ -265,6 +265,8 @@ end: p= p->next; } } + if (r > 0) + pvio->bytes_read+= r; return r; } /* }}} */ @@ -391,6 +393,8 @@ end: p= p->next; } } + if (r > 0) + pvio->bytes_sent+= r; return r; } /* }}} */ diff --git a/libmariadb/mariadb_lib.c b/libmariadb/mariadb_lib.c index c2a110cf..092e68ed 100644 --- a/libmariadb/mariadb_lib.c +++ b/libmariadb/mariadb_lib.c @@ -4495,6 +4495,12 @@ my_bool mariadb_get_infov(MYSQL *mysql, enum mariadb_value value, void *arg, ... else goto error; break; + case MARIADB_CONNECTION_BYTES_READ: + *((size_t *)arg)= mysql->net.pvio->bytes_read; + break; + case MARIADB_CONNECTION_BYTES_SENT: + *((size_t *)arg)= mysql->net.pvio->bytes_sent; + break; default: va_end(ap); return(-1);