diff options
Diffstat (limited to 'sql/sql_priv.h')
-rw-r--r-- | sql/sql_priv.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/sql/sql_priv.h b/sql/sql_priv.h index 39976e1a430..345556a0b7f 100644 --- a/sql/sql_priv.h +++ b/sql/sql_priv.h @@ -153,6 +153,41 @@ #define OPTION_ALLOW_BATCH (ULL(1) << 36) // THD, intern (slave) #define OPTION_SKIP_REPLICATION (ULL(1) << 37) // THD, user +/* + Check how many bytes are available on buffer. + + @param buf_start Pointer to buffer start. + @param buf_current Pointer to the current position on buffer. + @param buf_len Buffer length. + + @return Number of bytes available on event buffer. +*/ +template <class T> T available_buffer(const char* buf_start, + const char* buf_current, + T buf_len) +{ + return buf_len - (buf_current - buf_start); +} + +/* + Check if jump value is within buffer limits. + + @param jump Number of positions we want to advance. + @param buf_start Pointer to buffer start + @param buf_current Pointer to the current position on buffer. + @param buf_len Buffer length. + + @return True If jump value is within buffer limits. + False Otherwise. +*/ +template <class T> bool valid_buffer_range(T jump, + const char* buf_start, + const char* buf_current, + T buf_len) +{ + return (jump <= available_buffer(buf_start, buf_current, buf_len)); +} + /* The rest of the file is included in the server only */ #ifndef MYSQL_CLIENT |