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: 2020-01-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
 | 
