const.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. package replication
  2. const (
  3. //we only support MySQL 5.0.0+ binlog format, maybe???
  4. MinBinlogVersion = 4
  5. )
  6. var (
  7. //binlog header [ fe `bin` ]
  8. BinLogFileHeader []byte = []byte{0xfe, 0x62, 0x69, 0x6e}
  9. SemiSyncIndicator byte = 0xef
  10. )
  11. const (
  12. LOG_EVENT_BINLOG_IN_USE_F uint16 = 0x0001
  13. LOG_EVENT_FORCED_ROTATE_F uint16 = 0x0002
  14. LOG_EVENT_THREAD_SPECIFIC_F uint16 = 0x0004
  15. LOG_EVENT_SUPPRESS_USE_F uint16 = 0x0008
  16. LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F uint16 = 0x0010
  17. LOG_EVENT_ARTIFICIAL_F uint16 = 0x0020
  18. LOG_EVENT_RELAY_LOG_F uint16 = 0x0040
  19. LOG_EVENT_IGNORABLE_F uint16 = 0x0080
  20. LOG_EVENT_NO_FILTER_F uint16 = 0x0100
  21. LOG_EVENT_MTS_ISOLATE_F uint16 = 0x0200
  22. )
  23. const (
  24. BINLOG_DUMP_NEVER_STOP uint16 = 0x00
  25. BINLOG_DUMP_NON_BLOCK uint16 = 0x01
  26. BINLOG_SEND_ANNOTATE_ROWS_EVENT uint16 = 0x02
  27. BINLOG_THROUGH_POSITION uint16 = 0x02
  28. BINLOG_THROUGH_GTID uint16 = 0x04
  29. )
  30. const (
  31. BINLOG_ROW_IMAGE_FULL = "FULL"
  32. BINLOG_ROW_IAMGE_MINIMAL = "MINIMAL"
  33. BINLOG_ROW_IMAGE_NOBLOB = "NOBLOB"
  34. )
  35. const (
  36. BINLOG_MARIADB_FL_STANDALONE = 1 << iota /*1 - FL_STANDALONE is set when there is no terminating COMMIT event*/
  37. BINLOG_MARIADB_FL_GROUP_COMMIT_ID /*2 - FL_GROUP_COMMIT_ID is set when event group is part of a group commit on the master. Groups with same commit_id are part of the same group commit.*/
  38. BINLOG_MARIADB_FL_TRANSACTIONAL /*4 - FL_TRANSACTIONAL is set for an event group that can be safely rolled back (no MyISAM, eg.).*/
  39. BINLOG_MARIADB_FL_ALLOW_PARALLEL /*8 - FL_ALLOW_PARALLEL reflects the (negation of the) value of @@SESSION.skip_parallel_replication at the time of commit*/
  40. BINLOG_MARIADB_FL_WAITED /*16 = FL_WAITED is set if a row lock wait (or other wait) is detected during the execution of the transaction*/
  41. BINLOG_MARIADB_FL_DDL /*32 - FL_DDL is set for event group containing DDL*/
  42. )
  43. type EventType byte
  44. const (
  45. UNKNOWN_EVENT EventType = iota
  46. START_EVENT_V3
  47. QUERY_EVENT
  48. STOP_EVENT
  49. ROTATE_EVENT
  50. INTVAR_EVENT
  51. LOAD_EVENT
  52. SLAVE_EVENT
  53. CREATE_FILE_EVENT
  54. APPEND_BLOCK_EVENT
  55. EXEC_LOAD_EVENT
  56. DELETE_FILE_EVENT
  57. NEW_LOAD_EVENT
  58. RAND_EVENT
  59. USER_VAR_EVENT
  60. FORMAT_DESCRIPTION_EVENT
  61. XID_EVENT
  62. BEGIN_LOAD_QUERY_EVENT
  63. EXECUTE_LOAD_QUERY_EVENT
  64. TABLE_MAP_EVENT
  65. WRITE_ROWS_EVENTv0
  66. UPDATE_ROWS_EVENTv0
  67. DELETE_ROWS_EVENTv0
  68. WRITE_ROWS_EVENTv1
  69. UPDATE_ROWS_EVENTv1
  70. DELETE_ROWS_EVENTv1
  71. INCIDENT_EVENT
  72. HEARTBEAT_EVENT
  73. IGNORABLE_EVENT
  74. ROWS_QUERY_EVENT
  75. WRITE_ROWS_EVENTv2
  76. UPDATE_ROWS_EVENTv2
  77. DELETE_ROWS_EVENTv2
  78. GTID_EVENT
  79. ANONYMOUS_GTID_EVENT
  80. PREVIOUS_GTIDS_EVENT
  81. TRANSACTION_CONTEXT_EVENT
  82. VIEW_CHANGE_EVENT
  83. XA_PREPARE_LOG_EVENT
  84. )
  85. const (
  86. // MariaDB event starts from 160
  87. MARIADB_ANNOTATE_ROWS_EVENT EventType = 160 + iota
  88. MARIADB_BINLOG_CHECKPOINT_EVENT
  89. MARIADB_GTID_EVENT
  90. MARIADB_GTID_LIST_EVENT
  91. )
  92. func (e EventType) String() string {
  93. switch e {
  94. case UNKNOWN_EVENT:
  95. return "UnknownEvent"
  96. case START_EVENT_V3:
  97. return "StartEventV3"
  98. case QUERY_EVENT:
  99. return "QueryEvent"
  100. case STOP_EVENT:
  101. return "StopEvent"
  102. case ROTATE_EVENT:
  103. return "RotateEvent"
  104. case INTVAR_EVENT:
  105. return "IntVarEvent"
  106. case LOAD_EVENT:
  107. return "LoadEvent"
  108. case SLAVE_EVENT:
  109. return "SlaveEvent"
  110. case CREATE_FILE_EVENT:
  111. return "CreateFileEvent"
  112. case APPEND_BLOCK_EVENT:
  113. return "AppendBlockEvent"
  114. case EXEC_LOAD_EVENT:
  115. return "ExecLoadEvent"
  116. case DELETE_FILE_EVENT:
  117. return "DeleteFileEvent"
  118. case NEW_LOAD_EVENT:
  119. return "NewLoadEvent"
  120. case RAND_EVENT:
  121. return "RandEvent"
  122. case USER_VAR_EVENT:
  123. return "UserVarEvent"
  124. case FORMAT_DESCRIPTION_EVENT:
  125. return "FormatDescriptionEvent"
  126. case XID_EVENT:
  127. return "XIDEvent"
  128. case BEGIN_LOAD_QUERY_EVENT:
  129. return "BeginLoadQueryEvent"
  130. case EXECUTE_LOAD_QUERY_EVENT:
  131. return "ExectueLoadQueryEvent"
  132. case TABLE_MAP_EVENT:
  133. return "TableMapEvent"
  134. case WRITE_ROWS_EVENTv0:
  135. return "WriteRowsEventV0"
  136. case UPDATE_ROWS_EVENTv0:
  137. return "UpdateRowsEventV0"
  138. case DELETE_ROWS_EVENTv0:
  139. return "DeleteRowsEventV0"
  140. case WRITE_ROWS_EVENTv1:
  141. return "WriteRowsEventV1"
  142. case UPDATE_ROWS_EVENTv1:
  143. return "UpdateRowsEventV1"
  144. case DELETE_ROWS_EVENTv1:
  145. return "DeleteRowsEventV1"
  146. case INCIDENT_EVENT:
  147. return "IncidentEvent"
  148. case HEARTBEAT_EVENT:
  149. return "HeartbeatEvent"
  150. case IGNORABLE_EVENT:
  151. return "IgnorableEvent"
  152. case ROWS_QUERY_EVENT:
  153. return "RowsQueryEvent"
  154. case WRITE_ROWS_EVENTv2:
  155. return "WriteRowsEventV2"
  156. case UPDATE_ROWS_EVENTv2:
  157. return "UpdateRowsEventV2"
  158. case DELETE_ROWS_EVENTv2:
  159. return "DeleteRowsEventV2"
  160. case GTID_EVENT:
  161. return "GTIDEvent"
  162. case ANONYMOUS_GTID_EVENT:
  163. return "AnonymousGTIDEvent"
  164. case PREVIOUS_GTIDS_EVENT:
  165. return "PreviousGTIDsEvent"
  166. case MARIADB_ANNOTATE_ROWS_EVENT:
  167. return "MariadbAnnotateRowsEvent"
  168. case MARIADB_BINLOG_CHECKPOINT_EVENT:
  169. return "MariadbBinLogCheckPointEvent"
  170. case MARIADB_GTID_EVENT:
  171. return "MariadbGTIDEvent"
  172. case MARIADB_GTID_LIST_EVENT:
  173. return "MariadbGTIDListEvent"
  174. case TRANSACTION_CONTEXT_EVENT:
  175. return "TransactionContextEvent"
  176. case VIEW_CHANGE_EVENT:
  177. return "ViewChangeEvent"
  178. case XA_PREPARE_LOG_EVENT:
  179. return "XAPrepareLogEvent"
  180. default:
  181. return "UnknownEvent"
  182. }
  183. }
  184. const (
  185. BINLOG_CHECKSUM_ALG_OFF byte = 0 // Events are without checksum though its generator
  186. // is checksum-capable New Master (NM).
  187. BINLOG_CHECKSUM_ALG_CRC32 byte = 1 // CRC32 of zlib algorithm.
  188. // BINLOG_CHECKSUM_ALG_ENUM_END, // the cut line: valid alg range is [1, 0x7f].
  189. BINLOG_CHECKSUM_ALG_UNDEF byte = 255 // special value to tag undetermined yet checksum
  190. // or events from checksum-unaware servers
  191. )
  192. // These are TABLE_MAP_EVENT's optional metadata field type, from: libbinlogevents/include/rows_event.h
  193. const (
  194. TABLE_MAP_OPT_META_SIGNEDNESS byte = iota + 1
  195. TABLE_MAP_OPT_META_DEFAULT_CHARSET
  196. TABLE_MAP_OPT_META_COLUMN_CHARSET
  197. TABLE_MAP_OPT_META_COLUMN_NAME
  198. TABLE_MAP_OPT_META_SET_STR_VALUE
  199. TABLE_MAP_OPT_META_ENUM_STR_VALUE
  200. TABLE_MAP_OPT_META_GEOMETRY_TYPE
  201. TABLE_MAP_OPT_META_SIMPLE_PRIMARY_KEY
  202. TABLE_MAP_OPT_META_PRIMARY_KEY_WITH_PREFIX
  203. TABLE_MAP_OPT_META_ENUM_AND_SET_DEFAULT_CHARSET
  204. TABLE_MAP_OPT_META_ENUM_AND_SET_COLUMN_CHARSET
  205. )
  206. type IntVarEventType byte
  207. const (
  208. INVALID IntVarEventType = iota
  209. LAST_INSERT_ID
  210. INSERT_ID
  211. )