211 lines
6.3 KiB
C
211 lines
6.3 KiB
C
#pragma once
|
|
#ifndef _BLR_DEFINES_H
|
|
#define _BLR_DEFINES_H
|
|
/*
|
|
* Copyright (c) 2016 MariaDB Corporation Ab
|
|
*
|
|
* Use of this software is governed by the Business Source License included
|
|
* in the LICENSE.TXT file and at www.mariadb.com/bsl11.
|
|
*
|
|
* Change Date: 2019-07-01
|
|
*
|
|
* On the date above, in accordance with the Business Source License, use
|
|
* of this software will be governed by version 2 or later of the General
|
|
* Public License.
|
|
*/
|
|
|
|
/**
|
|
* @file blr_defines.h - Various definitions for binlogrouter
|
|
|
|
* @verbatim
|
|
* Revision History
|
|
*
|
|
* 26/04/16 Massimiliano Pinto Added MariaDB 10.0 and 10.1 GTID event flags detection
|
|
* @endverbatim
|
|
*/
|
|
|
|
#include <maxscale/cdefs.h>
|
|
|
|
MXS_BEGIN_DECLS
|
|
|
|
#define BINLOG_FNAMELEN 255
|
|
#define BLR_PROTOCOL "MySQLBackend"
|
|
#define BINLOG_MAGIC { 0xfe, 0x62, 0x69, 0x6e }
|
|
#define BINLOG_MAGIC_SIZE 4
|
|
#define BINLOG_NAMEFMT "%s.%06d"
|
|
#define BINLOG_NAME_ROOT "mysql-bin"
|
|
|
|
#define BINLOG_EVENT_HDR_LEN 19
|
|
|
|
/**
|
|
* Binlog event types
|
|
*/
|
|
#define START_EVENT_V3 0x01
|
|
#define QUERY_EVENT 0x02
|
|
#define STOP_EVENT 0x03
|
|
#define ROTATE_EVENT 0x04
|
|
#define INTVAR_EVENT 0x05
|
|
#define LOAD_EVENT 0x06
|
|
#define SLAVE_EVENT 0x07
|
|
#define CREATE_FILE_EVENT 0x08
|
|
#define APPEND_BLOCK_EVENT 0x09
|
|
#define EXEC_LOAD_EVENT 0x0A
|
|
#define DELETE_FILE_EVENT 0x0B
|
|
#define NEW_LOAD_EVENT 0x0C
|
|
#define RAND_EVENT 0x0D
|
|
#define USER_VAR_EVENT 0x0E
|
|
#define FORMAT_DESCRIPTION_EVENT 0x0F
|
|
#define XID_EVENT 0x10
|
|
#define BEGIN_LOAD_QUERY_EVENT 0x11
|
|
#define EXECUTE_LOAD_QUERY_EVENT 0x12
|
|
#define TABLE_MAP_EVENT 0x13
|
|
#define WRITE_ROWS_EVENTv0 0x14
|
|
#define UPDATE_ROWS_EVENTv0 0x15
|
|
#define DELETE_ROWS_EVENTv0 0x16
|
|
#define WRITE_ROWS_EVENTv1 0x17
|
|
#define UPDATE_ROWS_EVENTv1 0x18
|
|
#define DELETE_ROWS_EVENTv1 0x19
|
|
#define INCIDENT_EVENT 0x1A
|
|
#define HEARTBEAT_EVENT 0x1B
|
|
#define IGNORABLE_EVENT 0x1C
|
|
#define ROWS_QUERY_EVENT 0x1D
|
|
#define WRITE_ROWS_EVENTv2 0x1E
|
|
#define UPDATE_ROWS_EVENTv2 0x1F
|
|
#define DELETE_ROWS_EVENTv2 0x20
|
|
#define GTID_EVENT 0x21
|
|
#define ANONYMOUS_GTID_EVENT 0x22
|
|
#define PREVIOUS_GTIDS_EVENT 0x23
|
|
|
|
#define MAX_EVENT_TYPE 0x23
|
|
|
|
/* New MariaDB event numbers start from 0xa0 */
|
|
#define MARIADB_NEW_EVENTS_BEGIN 0xa0
|
|
#define MARIADB_ANNOTATE_ROWS_EVENT 0xa0
|
|
/* New MariaDB 10 event numbers start from here */
|
|
#define MARIADB10_BINLOG_CHECKPOINT_EVENT 0xa1
|
|
#define MARIADB10_GTID_EVENT 0xa2
|
|
#define MARIADB10_GTID_GTID_LIST_EVENT 0xa3
|
|
|
|
#define MAX_EVENT_TYPE_MARIADB10 0xa3
|
|
|
|
/* Maximum event type so far */
|
|
#define MAX_EVENT_TYPE_END MAX_EVENT_TYPE_MARIADB10
|
|
|
|
/**
|
|
* Binlog event flags
|
|
*/
|
|
#define LOG_EVENT_BINLOG_IN_USE_F 0x0001
|
|
#define LOG_EVENT_FORCED_ROTATE_F 0x0002
|
|
#define LOG_EVENT_THREAD_SPECIFIC_F 0x0004
|
|
#define LOG_EVENT_SUPPRESS_USE_F 0x0008
|
|
#define LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F 0x0010
|
|
#define LOG_EVENT_ARTIFICIAL_F 0x0020
|
|
#define LOG_EVENT_RELAY_LOG_F 0x0040
|
|
#define LOG_EVENT_IGNORABLE_F 0x0080
|
|
#define LOG_EVENT_NO_FILTER_F 0x0100
|
|
#define LOG_EVENT_MTS_ISOLATE_F 0x0200
|
|
|
|
/**
|
|
* How often to call the binlog status function (seconds)
|
|
*/
|
|
#define BLR_STATS_FREQ 60
|
|
#define BLR_NSTATS_MINUTES 30
|
|
|
|
/**
|
|
* High and Low water marks for the slave dcb. These values can be overriden
|
|
* by the router options highwater and lowwater.
|
|
*/
|
|
#define DEF_LOW_WATER 1000
|
|
#define DEF_HIGH_WATER 10000
|
|
|
|
/**
|
|
* Default burst sizes for slave catchup
|
|
*/
|
|
#define DEF_SHORT_BURST 15
|
|
#define DEF_LONG_BURST 500
|
|
#define DEF_BURST_SIZE 1024000 /* 1 Mb */
|
|
|
|
/**
|
|
* master reconnect backoff constants
|
|
* BLR_MASTER_BACKOFF_TIME The increments of the back off time (seconds)
|
|
* BLR_MAX_BACKOFF Maximum number of increments to backoff to
|
|
*/
|
|
#define BLR_MASTER_BACKOFF_TIME 10
|
|
#define BLR_MAX_BACKOFF 60
|
|
|
|
/* max size for error message returned to client */
|
|
#define BINLOG_ERROR_MSG_LEN 385
|
|
|
|
/* network latency extra wait tme for heartbeat check */
|
|
#define BLR_NET_LATENCY_WAIT_TIME 1
|
|
|
|
/* default heartbeat interval in seconds */
|
|
#define BLR_HEARTBEAT_DEFAULT_INTERVAL 300
|
|
|
|
/* strings and numbers in SQL replies */
|
|
#define BLR_TYPE_STRING 0xf
|
|
#define BLR_TYPE_INT 0x03
|
|
|
|
/* string len for COM_STATISTICS output */
|
|
#define BLRM_COM_STATISTICS_SIZE 1000
|
|
|
|
/* string len for strerror_r message */
|
|
#define BLRM_STRERROR_R_MSG_SIZE 128
|
|
|
|
/* string len for task message name */
|
|
#define BLRM_TASK_NAME_LEN 80
|
|
|
|
/* string len for temp binlog filename */
|
|
#define BLRM_BINLOG_NAME_STR_LEN 80
|
|
|
|
/* string len for temp binlog filename */
|
|
#define BLRM_SET_HEARTBEAT_QUERY_LEN 80
|
|
|
|
/* string len for master registration query */
|
|
#define BLRM_MASTER_REGITRATION_QUERY_LEN 255
|
|
|
|
/* Read Binlog position states */
|
|
#define SLAVE_POS_READ_OK 0x00
|
|
#define SLAVE_POS_READ_ERR 0xff
|
|
#define SLAVE_POS_READ_UNSAFE 0xfe
|
|
#define SLAVE_POS_BAD_FD 0xfd
|
|
#define SLAVE_POS_BEYOND_EOF 0xfc
|
|
|
|
/* MariadDB 10 GTID event flags */
|
|
#define MARIADB_FL_DDL 32
|
|
#define MARIADB_FL_STANDALONE 1
|
|
|
|
/**
|
|
* Some useful macros for examining the MySQL Response packets
|
|
*/
|
|
#define MYSQL_RESPONSE_OK(buf) (*((uint8_t *)GWBUF_DATA(buf) + 4) == 0x00)
|
|
#define MYSQL_RESPONSE_EOF(buf) (*((uint8_t *)GWBUF_DATA(buf) + 4) == 0xfe)
|
|
#define MYSQL_RESPONSE_ERR(buf) (*((uint8_t *)GWBUF_DATA(buf) + 4) == 0xff)
|
|
#define MYSQL_ERROR_CODE(buf) ((uint8_t *)GWBUF_DATA(buf) + 5)
|
|
#define MYSQL_ERROR_MSG(buf) ((uint8_t *)GWBUF_DATA(buf) + 7)
|
|
#define MYSQL_COMMAND(buf) (*((uint8_t *)GWBUF_DATA(buf) + 4))
|
|
|
|
/**
|
|
* Macros to extract common fields
|
|
*/
|
|
#define INLINE_EXTRACT 1 /* Set to 0 for debug purposes */
|
|
|
|
#if INLINE_EXTRACT
|
|
#define EXTRACT16(x) (*(uint8_t *)(x) | (*((uint8_t *)(x) + 1) << 8))
|
|
#define EXTRACT24(x) (*(uint8_t *)(x) | \
|
|
(*((uint8_t *)(x) + 1) << 8) | \
|
|
(*((uint8_t *)(x) + 2) << 16))
|
|
#define EXTRACT32(x) (*(uint8_t *)(x) | \
|
|
(*((uint8_t *)(x) + 1) << 8) | \
|
|
(*((uint8_t *)(x) + 2) << 16) | \
|
|
(*((uint8_t *)(x) + 3) << 24))
|
|
#else
|
|
#define EXTRACT16(x) extract_field((x), 16)
|
|
#define EXTRACT24(x) extract_field((x), 24)
|
|
#define EXTRACT32(x) extract_field((x), 32)
|
|
#endif
|
|
|
|
MXS_END_DECLS
|
|
|
|
#endif
|