MXS-1543: Log a warning if STATEMENT or MIXED is used
If avrorouter suspects that statement based or mixed replication formats are being used, it logs a warning.
This commit is contained in:
@ -31,6 +31,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "avrorouter.h"
|
#include "avrorouter.h"
|
||||||
|
#include <maxscale/query_classifier.h>
|
||||||
|
|
||||||
#include <binlog_common.h>
|
#include <binlog_common.h>
|
||||||
#include <blr_constants.h>
|
#include <blr_constants.h>
|
||||||
@ -1046,6 +1047,25 @@ void handle_query_event(AVRO_INSTANCE *router, REP_HEADER *hdr, int *pending_tra
|
|||||||
len = tmpsz;
|
len = tmpsz;
|
||||||
unify_whitespace(sql, len);
|
unify_whitespace(sql, len);
|
||||||
|
|
||||||
|
static bool warn_not_row_format = true;
|
||||||
|
|
||||||
|
if (warn_not_row_format)
|
||||||
|
{
|
||||||
|
GWBUF* buffer = gwbuf_alloc(len + 5);
|
||||||
|
gw_mysql_set_byte3(GWBUF_DATA(buffer), len + 1);
|
||||||
|
GWBUF_DATA(buffer)[4] = 0x03;
|
||||||
|
memcpy(GWBUF_DATA(buffer) + 5, sql, len);
|
||||||
|
qc_query_op_t op = qc_get_operation(buffer);
|
||||||
|
gwbuf_free(buffer);
|
||||||
|
|
||||||
|
if (op == QUERY_OP_UPDATE || op == QUERY_OP_INSERT || op == QUERY_OP_DELETE)
|
||||||
|
{
|
||||||
|
MXS_WARNING("Possible STATEMENT or MIXED format binary log. Check that "
|
||||||
|
"'binlog_format' is set to ROW on the master.");
|
||||||
|
warn_not_row_format = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (is_create_table_statement(router, sql, len))
|
if (is_create_table_statement(router, sql, len))
|
||||||
{
|
{
|
||||||
TABLE_CREATE *created = NULL;
|
TABLE_CREATE *created = NULL;
|
||||||
|
Reference in New Issue
Block a user