MXS-199: Support Causal Read in Read Write Splitting (#164)

* MXS-199: Support Causal Read in Read Write Splitting

* move most causal read logic into rwsplit router and get server type from monitor

* misc fix: remove new line

* refactor, move config to right place, replace ltrim with gwbuf_consume

* refacter a little for previous commit

* fix code style
This commit is contained in:
dapeng
2018-02-05 15:09:18 +08:00
committed by Johan Wikman
parent 0696f3f60a
commit 8a0c8e63f2
9 changed files with 222 additions and 3 deletions

View File

@ -883,6 +883,24 @@ size_t gwbuf_copy_data(const GWBUF *buffer, size_t offset, size_t bytes, uint8_t
return bytes_read;
}
uint8_t *gwbuf_byte_pointer(GWBUF *buffer, size_t offset)
{
uint8_t *rval = NULL;
// Ignore NULL buffer and walk past empty or too short buffers.
while (buffer && (GWBUF_LENGTH(buffer) <= offset))
{
offset -= GWBUF_LENGTH(buffer);
buffer = buffer->next;
}
if (buffer != NULL)
{
rval = (GWBUF_DATA(buffer) + offset);
}
return rval;
}
static std::string dump_one_buffer(GWBUF* buffer)
{
std::string rval;

View File

@ -366,5 +366,14 @@ void mxs_mysql_set_server_version(MYSQL* mysql, SERVER* server)
unsigned long version = mysql_get_server_version(mysql);
server_set_version(server, version_string, version);
if (strcasestr(version_string, "mariadb") != NULL)
{
server->server_type = SERVER_TYPE_MARIADB;
}
else
{
server->server_type = SERVER_TYPE_MYSQL;
}
}
}