mysql_replicator 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +79 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/LICENSE.txt +21 -0
- data/README.md +115 -0
- data/Rakefile +12 -0
- data/Steepfile +22 -0
- data/docker-compose.yml +13 -0
- data/lib/mysql_replicator/binlog_client.rb +201 -0
- data/lib/mysql_replicator/binlogs/column_parser.rb +425 -0
- data/lib/mysql_replicator/binlogs/constants.rb +74 -0
- data/lib/mysql_replicator/binlogs/event_parser.rb +134 -0
- data/lib/mysql_replicator/binlogs/format_description_event_parser.rb +24 -0
- data/lib/mysql_replicator/binlogs/json_parser.rb +335 -0
- data/lib/mysql_replicator/binlogs/query_event_parser.rb +69 -0
- data/lib/mysql_replicator/binlogs/rotate_event_parser.rb +37 -0
- data/lib/mysql_replicator/binlogs/rows_event_parser.rb +161 -0
- data/lib/mysql_replicator/binlogs/table_map_event_parser.rb +155 -0
- data/lib/mysql_replicator/binlogs/xid_event_parser.rb +25 -0
- data/lib/mysql_replicator/connection.rb +226 -0
- data/lib/mysql_replicator/connections/auth.rb +303 -0
- data/lib/mysql_replicator/connections/handshake.rb +132 -0
- data/lib/mysql_replicator/connections/query.rb +322 -0
- data/lib/mysql_replicator/error.rb +6 -0
- data/lib/mysql_replicator/logger.rb +43 -0
- data/lib/mysql_replicator/string_io_util.rb +199 -0
- data/lib/mysql_replicator/string_util.rb +106 -0
- data/lib/mysql_replicator/version.rb +6 -0
- data/lib/mysql_replicator.rb +51 -0
- data/sig/generated/mysql_replicator/binlog_client.rbs +52 -0
- data/sig/generated/mysql_replicator/binlogs/column_parser.rbs +134 -0
- data/sig/generated/mysql_replicator/binlogs/constants.rbs +69 -0
- data/sig/generated/mysql_replicator/binlogs/event_parser.rbs +35 -0
- data/sig/generated/mysql_replicator/binlogs/format_description_event_parser.rbs +13 -0
- data/sig/generated/mysql_replicator/binlogs/json_parser.rbs +101 -0
- data/sig/generated/mysql_replicator/binlogs/query_event_parser.rbs +14 -0
- data/sig/generated/mysql_replicator/binlogs/rotate_event_parser.rbs +14 -0
- data/sig/generated/mysql_replicator/binlogs/rows_event_parser.rbs +39 -0
- data/sig/generated/mysql_replicator/binlogs/table_map_event_parser.rbs +31 -0
- data/sig/generated/mysql_replicator/binlogs/xid_event_parser.rbs +13 -0
- data/sig/generated/mysql_replicator/connection.rbs +103 -0
- data/sig/generated/mysql_replicator/connections/auth.rbs +76 -0
- data/sig/generated/mysql_replicator/connections/handshake.rbs +21 -0
- data/sig/generated/mysql_replicator/connections/query.rbs +62 -0
- data/sig/generated/mysql_replicator/error.rbs +6 -0
- data/sig/generated/mysql_replicator/logger.rbs +26 -0
- data/sig/generated/mysql_replicator/string_io_util.rbs +75 -0
- data/sig/generated/mysql_replicator/string_util.rbs +45 -0
- data/sig/generated/mysql_replicator/types.rbs +19 -0
- data/sig/generated/mysql_replicator/version.rbs +5 -0
- data/sig/generated/mysql_replicator.rbs +16 -0
- metadata +124 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Generated from lib/mysql_replicator/connection.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module MysqlReplicator
|
|
4
|
+
class Connection
|
|
5
|
+
type packet = { length: Integer, sequence_id: Integer, payload: String }
|
|
6
|
+
|
|
7
|
+
@handshake_info: MysqlReplicator::Connections::Handshake::handshake
|
|
8
|
+
|
|
9
|
+
@socket: TCPSocket
|
|
10
|
+
|
|
11
|
+
@connected: bool
|
|
12
|
+
|
|
13
|
+
@sequence_id: Integer
|
|
14
|
+
|
|
15
|
+
@database: String
|
|
16
|
+
|
|
17
|
+
@password: String
|
|
18
|
+
|
|
19
|
+
@user: String
|
|
20
|
+
|
|
21
|
+
@port: Integer
|
|
22
|
+
|
|
23
|
+
@host: String
|
|
24
|
+
|
|
25
|
+
# @rbs! attr_reader host: String
|
|
26
|
+
# @rbs! attr_reader port: Integer
|
|
27
|
+
# @rbs! attr_reader user: String
|
|
28
|
+
# @rbs! attr_reader password: String
|
|
29
|
+
# @rbs! attr_reader database: String
|
|
30
|
+
attr_reader host: untyped
|
|
31
|
+
|
|
32
|
+
# @rbs! attr_reader host: String
|
|
33
|
+
# @rbs! attr_reader port: Integer
|
|
34
|
+
# @rbs! attr_reader user: String
|
|
35
|
+
# @rbs! attr_reader password: String
|
|
36
|
+
# @rbs! attr_reader database: String
|
|
37
|
+
attr_reader port: untyped
|
|
38
|
+
|
|
39
|
+
# @rbs! attr_reader host: String
|
|
40
|
+
# @rbs! attr_reader port: Integer
|
|
41
|
+
# @rbs! attr_reader user: String
|
|
42
|
+
# @rbs! attr_reader password: String
|
|
43
|
+
# @rbs! attr_reader database: String
|
|
44
|
+
attr_reader user: untyped
|
|
45
|
+
|
|
46
|
+
# @rbs! attr_reader host: String
|
|
47
|
+
# @rbs! attr_reader port: Integer
|
|
48
|
+
# @rbs! attr_reader user: String
|
|
49
|
+
# @rbs! attr_reader password: String
|
|
50
|
+
# @rbs! attr_reader database: String
|
|
51
|
+
attr_reader password: untyped
|
|
52
|
+
|
|
53
|
+
# @rbs! attr_reader host: String
|
|
54
|
+
# @rbs! attr_reader port: Integer
|
|
55
|
+
# @rbs! attr_reader user: String
|
|
56
|
+
# @rbs! attr_reader password: String
|
|
57
|
+
# @rbs! attr_reader database: String
|
|
58
|
+
attr_reader database: untyped
|
|
59
|
+
|
|
60
|
+
# @rbs host: String
|
|
61
|
+
# @rbs port: Integer
|
|
62
|
+
# @rbs user: String
|
|
63
|
+
# @rbs password: String
|
|
64
|
+
# @rbs database: String
|
|
65
|
+
# @rbs return: void
|
|
66
|
+
def initialize: (?host: String, ?port: Integer, ?user: String, ?password: String, ?database: String) -> void
|
|
67
|
+
|
|
68
|
+
# @rbs return: void
|
|
69
|
+
def reset_sequence_id: () -> void
|
|
70
|
+
|
|
71
|
+
# @rbs return: -> bool
|
|
72
|
+
def connected?: () -> untyped
|
|
73
|
+
|
|
74
|
+
# @rbs return: -> void
|
|
75
|
+
def connect: () -> untyped
|
|
76
|
+
|
|
77
|
+
# @rbs sql: String
|
|
78
|
+
# @rbs return: MysqlReplicator::Connections::Query::queryResult | nil
|
|
79
|
+
def query: (String sql) -> (MysqlReplicator::Connections::Query::queryResult | nil)
|
|
80
|
+
|
|
81
|
+
# @rbs return: 'PONG' | 'ERROR'
|
|
82
|
+
def ping: () -> ("PONG" | "ERROR")
|
|
83
|
+
|
|
84
|
+
# @rbs return: void
|
|
85
|
+
def close: () -> void
|
|
86
|
+
|
|
87
|
+
# @rbs return: packet
|
|
88
|
+
def read_packet: () -> packet
|
|
89
|
+
|
|
90
|
+
# @rbs payload: String
|
|
91
|
+
# @rbs return: void
|
|
92
|
+
def send_packet: (String payload) -> void
|
|
93
|
+
|
|
94
|
+
# @rbs return: void
|
|
95
|
+
def flush_socket_buffer: () -> void
|
|
96
|
+
|
|
97
|
+
# @rbs return: Integer
|
|
98
|
+
def connection_id: () -> Integer
|
|
99
|
+
|
|
100
|
+
# @rbs return: MysqlReplicator::Connection
|
|
101
|
+
def dup: () -> MysqlReplicator::Connection
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Generated from lib/mysql_replicator/connections/auth.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module MysqlReplicator
|
|
4
|
+
module Connections
|
|
5
|
+
class Auth
|
|
6
|
+
CLIENT_PLUGIN_AUTH: Integer
|
|
7
|
+
|
|
8
|
+
CLIENT_SECURE_CONNECTION: Integer
|
|
9
|
+
|
|
10
|
+
CLIENT_PROTOCOL_41: Integer
|
|
11
|
+
|
|
12
|
+
CLIENT_CONNECT_WITH_DB: Integer
|
|
13
|
+
|
|
14
|
+
CLIENT_MULTI_STATEMENTS: Integer
|
|
15
|
+
|
|
16
|
+
CLIENT_MULTI_RESULTS: Integer
|
|
17
|
+
|
|
18
|
+
# @rbs connection: MysqlReplicator::Connection
|
|
19
|
+
# @rbs user: String
|
|
20
|
+
# @rbs password: String
|
|
21
|
+
# @rbs database: String
|
|
22
|
+
# @rbs handshake_info: MysqlReplicator::Connections::Handshake::handshake
|
|
23
|
+
# @rbs return: void
|
|
24
|
+
def self.execute: (MysqlReplicator::Connection connection, String user, String password, String database, MysqlReplicator::Connections::Handshake::handshake handshake_info) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs connection: MysqlReplicator::Connection
|
|
27
|
+
# @rbs user: String
|
|
28
|
+
# @rbs password: String
|
|
29
|
+
# @rbs database: String
|
|
30
|
+
# @rbs handshake_info: MysqlReplicator::Connections::Handshake::handshake
|
|
31
|
+
# @rbs return: void
|
|
32
|
+
def self.caching_sha2_password_auth: (MysqlReplicator::Connection connection, String user, String password, String database, MysqlReplicator::Connections::Handshake::handshake handshake_info) -> void
|
|
33
|
+
|
|
34
|
+
# @rbs packet: MysqlReplicator::Connection::packet
|
|
35
|
+
# @rbs return: :success | :challenge
|
|
36
|
+
def self.handle_caching_sha2_password_response: (MysqlReplicator::Connection::packet packet) -> (:success | :challenge)
|
|
37
|
+
|
|
38
|
+
# @rbs user: String
|
|
39
|
+
# @rbs password: String
|
|
40
|
+
# @rbs database: String
|
|
41
|
+
# @rbs handshake_info: MysqlReplicator::Connections::Handshake::handshake
|
|
42
|
+
# @rbs return: String
|
|
43
|
+
def self.build_caching_sha2_password_payload: (String user, String password, String database, MysqlReplicator::Connections::Handshake::handshake handshake_info) -> String
|
|
44
|
+
|
|
45
|
+
# Hash value for caching_sha2_password
|
|
46
|
+
# SHA256(password) XOR SHA256(SHA256(SHA256(password)) + salt)
|
|
47
|
+
#
|
|
48
|
+
# @rbs password: String
|
|
49
|
+
# @rbs salt: String
|
|
50
|
+
# @rbs return: String
|
|
51
|
+
def self.build_caching_sha2_password_hash: (String password, String salt) -> String
|
|
52
|
+
|
|
53
|
+
# @rbs password: String
|
|
54
|
+
# @rbs public_key: String
|
|
55
|
+
# @rbs scramble: String
|
|
56
|
+
# @rbs return: String
|
|
57
|
+
def self.build_rsa_encrypt_password_payload: (String password, String public_key, String scramble) -> String
|
|
58
|
+
|
|
59
|
+
# @rbs payload: String
|
|
60
|
+
# @rbs with_database: bool
|
|
61
|
+
# @rbs return: void
|
|
62
|
+
def self.debug_caching_sha2_password_payload: (String payload, bool with_database) -> void
|
|
63
|
+
|
|
64
|
+
# @rbs connection: MysqlReplicator::Connection
|
|
65
|
+
# @rbs password: String
|
|
66
|
+
# @rbs handshake_info: MysqlReplicator::Connections::Handshake::handshake
|
|
67
|
+
# @return: void
|
|
68
|
+
def self.mysql_native_password_auth: (MysqlReplicator::Connection connection, String password, MysqlReplicator::Connections::Handshake::handshake handshake_info) -> untyped
|
|
69
|
+
|
|
70
|
+
# @rbs password: String
|
|
71
|
+
# @rbs salt: String
|
|
72
|
+
# @rbs return: String
|
|
73
|
+
def self.build_mysql_native_password_payload: (String password, String salt) -> String
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Generated from lib/mysql_replicator/connections/handshake.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module MysqlReplicator
|
|
4
|
+
module Connections
|
|
5
|
+
class Handshake
|
|
6
|
+
type handshake = { protocol_version: Integer, server_version: String, connection_id: Integer, capability_flags: Integer | nil, charset: Integer | nil, status_flags: Integer | nil, auth_plugin_name: String, auth_plugin_data: String }
|
|
7
|
+
|
|
8
|
+
# @rbs connection: MysqlReplicator::Connection
|
|
9
|
+
# @rbs return: handshake
|
|
10
|
+
def self.execute: (MysqlReplicator::Connection connection) -> handshake
|
|
11
|
+
|
|
12
|
+
# @rbs packet: MysqlReplicator::Types::packet
|
|
13
|
+
# @rbs return: handshake
|
|
14
|
+
def self.parse_handshake_response_packet: (MysqlReplicator::Types::packet packet) -> handshake
|
|
15
|
+
|
|
16
|
+
# @rbs handshake_info: handshake
|
|
17
|
+
# @rbs return: void
|
|
18
|
+
def self.debug_handshake_info: (handshake handshake_info) -> void
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Generated from lib/mysql_replicator/connections/query.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module MysqlReplicator
|
|
4
|
+
module Connections
|
|
5
|
+
class Query
|
|
6
|
+
type columnData = { catalog: String, schema: String, table: String, org_table: String, name: String, org_name: String, charset: Integer, column_length: Integer, type: String }
|
|
7
|
+
|
|
8
|
+
type queryResultOk = { affected_rows: Integer | nil, insert_id: Integer | nil, status_flags: Integer | nil, warnings: Integer | nil, info_message: String | nil }
|
|
9
|
+
|
|
10
|
+
type queryResultError = { error_code: Integer, sql_state_marker: String, sql_state: String | nil, error_message: String | nil }
|
|
11
|
+
|
|
12
|
+
type queryResultSet = { columns: Array[columnData], rows: Array[Hash[Symbol, String | nil]], row_count: Integer }
|
|
13
|
+
|
|
14
|
+
type queryResult = queryResultOk | queryResultError | queryResultSet
|
|
15
|
+
|
|
16
|
+
# @rbs connection: MysqlReplicator::Connection
|
|
17
|
+
# @rbs sql: String
|
|
18
|
+
# @rbs return: queryResult
|
|
19
|
+
def self.execute: (MysqlReplicator::Connection connection, String sql) -> queryResult
|
|
20
|
+
|
|
21
|
+
# @rbs payload: String
|
|
22
|
+
# @rbs return: queryResultOk
|
|
23
|
+
def self.parse_ok: (String payload) -> queryResultOk
|
|
24
|
+
|
|
25
|
+
# @rbs payload: String
|
|
26
|
+
# @rbs return: queryResultError
|
|
27
|
+
def self.parse_error: (String payload) -> queryResultError
|
|
28
|
+
|
|
29
|
+
# @rbs connection: MysqlReplicator::Connection
|
|
30
|
+
# @rbs payload: String
|
|
31
|
+
# @rbs return: queryResultSet
|
|
32
|
+
def self.parse_result_set: (MysqlReplicator::Connection connection, String payload) -> queryResultSet
|
|
33
|
+
|
|
34
|
+
# @rbs payload: String
|
|
35
|
+
# @rbs return: columnData
|
|
36
|
+
def self.parse_column_definition: (String payload) -> columnData
|
|
37
|
+
|
|
38
|
+
# @rbs payload: String
|
|
39
|
+
# @rbs columns: Array[columnData]
|
|
40
|
+
# @rbs return: Hash[Symbol, String | nil]
|
|
41
|
+
def self.parse_row_data: (String payload, Array[columnData] columns) -> Hash[Symbol, String | nil]
|
|
42
|
+
|
|
43
|
+
# @rbs payload: String
|
|
44
|
+
# @rbs offset: Integer
|
|
45
|
+
# @rbs return: { value: Integer | nil, bytes_read: Integer }
|
|
46
|
+
def self.length_encoded_integer: (String payload, Integer offset) -> { value: Integer | nil, bytes_read: Integer }
|
|
47
|
+
|
|
48
|
+
# @rbs value: Integer | nil
|
|
49
|
+
# @rbs return: Integer
|
|
50
|
+
def self.length_encoded_integer_size: (Integer | nil value) -> Integer
|
|
51
|
+
|
|
52
|
+
# @rbs payload: String
|
|
53
|
+
# @rbs offset: Integer
|
|
54
|
+
# @rbs return { value: String, bytes_read: Integer }
|
|
55
|
+
def self.length_encoded_string: (String payload, Integer offset) -> { value: String, bytes_read: Integer }
|
|
56
|
+
|
|
57
|
+
# @rbs type: Integer | Float | String | nil
|
|
58
|
+
# @rbs return: String
|
|
59
|
+
def self.type_to_string: (Integer | Float | String | nil type) -> String
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated from lib/mysql_replicator/logger.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module MysqlReplicator
|
|
4
|
+
class Logger
|
|
5
|
+
self.@logger: ::Logger
|
|
6
|
+
|
|
7
|
+
# @rbs logger: ::Logger
|
|
8
|
+
def self.logger=: (::Logger logger) -> untyped
|
|
9
|
+
|
|
10
|
+
# @rbs message: String
|
|
11
|
+
# @rbs return: void
|
|
12
|
+
def self.debug: (String message) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs message: String
|
|
15
|
+
# @rbs return: void
|
|
16
|
+
def self.info: (String message) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs message: String
|
|
19
|
+
# @rbs return: void
|
|
20
|
+
def self.warn: (String message) -> void
|
|
21
|
+
|
|
22
|
+
# @rbs message: String
|
|
23
|
+
# @return: void
|
|
24
|
+
def self.error: (String message) -> untyped
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Generated from lib/mysql_replicator/string_io_util.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module MysqlReplicator
|
|
4
|
+
class StringIOUtil
|
|
5
|
+
# @rbs io: StringIO
|
|
6
|
+
# @rbs return: String
|
|
7
|
+
def self.read_str: (StringIO io, untyped length) -> String
|
|
8
|
+
|
|
9
|
+
# @rbs io: StringIO
|
|
10
|
+
# @rbs return: Integer
|
|
11
|
+
def self.read_packed_integer: (StringIO io) -> Integer
|
|
12
|
+
|
|
13
|
+
# @rbs io: StringIO
|
|
14
|
+
# @rbs return: Integer
|
|
15
|
+
def self.read_int8: (StringIO io) -> Integer
|
|
16
|
+
|
|
17
|
+
# @rbs io: StringIO
|
|
18
|
+
# @rbs return: Integer
|
|
19
|
+
def self.read_uint8: (StringIO io) -> Integer
|
|
20
|
+
|
|
21
|
+
# @rbs io: StringIO
|
|
22
|
+
# @rbs return: Integer
|
|
23
|
+
def self.read_int16: (StringIO io) -> Integer
|
|
24
|
+
|
|
25
|
+
# @rbs io: StringIO
|
|
26
|
+
# @rbs return: Integer
|
|
27
|
+
def self.read_uint16: (StringIO io) -> Integer
|
|
28
|
+
|
|
29
|
+
# @rbs io: StringIO
|
|
30
|
+
# @rbs return: Integer
|
|
31
|
+
def self.read_int24: (StringIO io) -> Integer
|
|
32
|
+
|
|
33
|
+
# @rbs io: StringIO
|
|
34
|
+
# @rbs return: Integer
|
|
35
|
+
def self.read_uint24: (StringIO io) -> Integer
|
|
36
|
+
|
|
37
|
+
# @rbs io: StringIO
|
|
38
|
+
# @rbs return: Integer
|
|
39
|
+
def self.read_int32: (StringIO io) -> Integer
|
|
40
|
+
|
|
41
|
+
# @rbs io: StringIO
|
|
42
|
+
# @rbs return: Integer
|
|
43
|
+
def self.read_uint32: (StringIO io) -> Integer
|
|
44
|
+
|
|
45
|
+
# @rbs io: StringIO
|
|
46
|
+
# @rbs return: Integer
|
|
47
|
+
def self.read_uint32_big_endian: (StringIO io) -> Integer
|
|
48
|
+
|
|
49
|
+
# @rbs io: StringIO
|
|
50
|
+
# @rbs return: Integer
|
|
51
|
+
def self.read_int48: (StringIO io) -> Integer
|
|
52
|
+
|
|
53
|
+
# @rbs io: StringIO
|
|
54
|
+
# @rbs return: Integer
|
|
55
|
+
def self.read_uint48: (StringIO io) -> Integer
|
|
56
|
+
|
|
57
|
+
# @rbs io: StringIO
|
|
58
|
+
# @rbs return: Integer
|
|
59
|
+
def self.read_int64: (StringIO io) -> Integer
|
|
60
|
+
|
|
61
|
+
# @rbs io: StringIO
|
|
62
|
+
# @rbs return: Integer
|
|
63
|
+
def self.read_uint64: (StringIO io) -> Integer
|
|
64
|
+
|
|
65
|
+
# @rbs io: StringIO
|
|
66
|
+
# @rbs return: Float
|
|
67
|
+
def self.read_float32: (StringIO io) -> Float
|
|
68
|
+
|
|
69
|
+
# @rbs io: StringIO
|
|
70
|
+
# @rbs return: Float
|
|
71
|
+
def self.read_double64: (StringIO io) -> Float
|
|
72
|
+
|
|
73
|
+
def self.read_array_from_int8: (untyped io, untyped length) -> untyped
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Generated from lib/mysql_replicator/string_util.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module MysqlReplicator
|
|
4
|
+
class StringUtil
|
|
5
|
+
# @rbs payload: String | nil
|
|
6
|
+
# @rbs return: String
|
|
7
|
+
def self.read_str: (String | nil payload) -> String
|
|
8
|
+
|
|
9
|
+
# @rbs payload: String | nil
|
|
10
|
+
# @rbs return: Integer
|
|
11
|
+
def self.read_uint8: (String | nil payload) -> Integer
|
|
12
|
+
|
|
13
|
+
# @rbs payload: String | nil
|
|
14
|
+
# @rbs return: Integer
|
|
15
|
+
def self.read_uint16: (String | nil payload) -> Integer
|
|
16
|
+
|
|
17
|
+
# @rbs payload: String | nil
|
|
18
|
+
# @rbs return: Integer
|
|
19
|
+
def self.read_int16: (String | nil payload) -> Integer
|
|
20
|
+
|
|
21
|
+
# @rbs payload: String | nil
|
|
22
|
+
# @rbs return: Integer
|
|
23
|
+
def self.read_uint32: (String | nil payload) -> Integer
|
|
24
|
+
|
|
25
|
+
# @rbs payload: String | nil
|
|
26
|
+
# @rbs return: Integer
|
|
27
|
+
def self.read_int32: (String | nil payload) -> Integer
|
|
28
|
+
|
|
29
|
+
# @rbs payload: String | nil
|
|
30
|
+
# @rbs return: Integer
|
|
31
|
+
def self.read_uint64: (String | nil payload) -> Integer
|
|
32
|
+
|
|
33
|
+
# @rbs paylaod: String | nil
|
|
34
|
+
# @rbs return: Integer
|
|
35
|
+
def self.read_int64: (untyped payload) -> Integer
|
|
36
|
+
|
|
37
|
+
# @rbs paylaod: String | nil
|
|
38
|
+
# @rbs return: Float
|
|
39
|
+
def self.read_double64: (untyped payload) -> Float
|
|
40
|
+
|
|
41
|
+
# @rbs payload: String | nil
|
|
42
|
+
# @rbs return: Array[Integer]
|
|
43
|
+
def self.read_array_from_int8: (String | nil payload) -> Array[Integer]
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated from lib/mysql_replicator/types.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module MysqlReplicator
|
|
4
|
+
module Types
|
|
5
|
+
type packet = { length: Integer, sequence_id: Integer, payload: String }
|
|
6
|
+
|
|
7
|
+
type handshake = { protocol_version: String, server_version: String | nil, connection_id: Integer, capability_flags: Integer, charset: String, status_flags: Integer, auth_plugin_name: String | nil, auth_plugin_data: String }
|
|
8
|
+
|
|
9
|
+
type queryResultOk = { affected_rows: Integer | nil, insert_id: Integer | nil, status_flags: Integer | nil, warnings: Integer | nil, info_message: String | nil }
|
|
10
|
+
|
|
11
|
+
type queryResultError = { error_code: Integer, sql_state_marker: String, sql_state: String | nil, error_message: String | nil }
|
|
12
|
+
|
|
13
|
+
type queryResultSet = { columns: Array[{ catalog: String, schema: String, table: String, org_table: String, name: String, charset: String, column_length: Integer, type: String }], rows: Array[Hash[Symbol, String]], row_count: Integer }
|
|
14
|
+
|
|
15
|
+
type queryResult = queryResultOk | queryResultError | queryResultSet
|
|
16
|
+
|
|
17
|
+
type binlogEvent = { timestamp: String, event_type: String, server_id: Integer, length: Integer, next_position: Integer, flags: Integer, execution: Hash[Symbol, untyped] }
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Generated from lib/mysql_replicator.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module MysqlReplicator
|
|
4
|
+
# @rbs host: String
|
|
5
|
+
# @rbs port: Integer
|
|
6
|
+
# @rbs user: String
|
|
7
|
+
# @rbs password: String
|
|
8
|
+
# @rbs database: String
|
|
9
|
+
# @rbs &block: { (MysqlReplicator::Binlogs::EventParser::binlogEvent) -> untyped | nil }?
|
|
10
|
+
# @rbs return: void
|
|
11
|
+
def self.run: (?host: String, ?port: Integer, ?user: String, ?password: String, ?database: String) ?{ (?) -> untyped } -> void
|
|
12
|
+
|
|
13
|
+
# @rbs custom_logger: ::Logger
|
|
14
|
+
# @rbs return: void
|
|
15
|
+
def self.logger=: (::Logger custom_logger) -> void
|
|
16
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: mysql_replicator
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- yo_waka
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: bigdecimal
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '3.0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '3.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: logger
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '1.0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.0'
|
|
40
|
+
description: The MySQL Binlog event handler using MySQL Replication Protocol
|
|
41
|
+
email:
|
|
42
|
+
- y.wakahara@gmail.com
|
|
43
|
+
executables: []
|
|
44
|
+
extensions: []
|
|
45
|
+
extra_rdoc_files: []
|
|
46
|
+
files:
|
|
47
|
+
- ".rspec"
|
|
48
|
+
- ".rubocop.yml"
|
|
49
|
+
- CHANGELOG.md
|
|
50
|
+
- CODE_OF_CONDUCT.md
|
|
51
|
+
- LICENSE.txt
|
|
52
|
+
- README.md
|
|
53
|
+
- Rakefile
|
|
54
|
+
- Steepfile
|
|
55
|
+
- docker-compose.yml
|
|
56
|
+
- lib/mysql_replicator.rb
|
|
57
|
+
- lib/mysql_replicator/binlog_client.rb
|
|
58
|
+
- lib/mysql_replicator/binlogs/column_parser.rb
|
|
59
|
+
- lib/mysql_replicator/binlogs/constants.rb
|
|
60
|
+
- lib/mysql_replicator/binlogs/event_parser.rb
|
|
61
|
+
- lib/mysql_replicator/binlogs/format_description_event_parser.rb
|
|
62
|
+
- lib/mysql_replicator/binlogs/json_parser.rb
|
|
63
|
+
- lib/mysql_replicator/binlogs/query_event_parser.rb
|
|
64
|
+
- lib/mysql_replicator/binlogs/rotate_event_parser.rb
|
|
65
|
+
- lib/mysql_replicator/binlogs/rows_event_parser.rb
|
|
66
|
+
- lib/mysql_replicator/binlogs/table_map_event_parser.rb
|
|
67
|
+
- lib/mysql_replicator/binlogs/xid_event_parser.rb
|
|
68
|
+
- lib/mysql_replicator/connection.rb
|
|
69
|
+
- lib/mysql_replicator/connections/auth.rb
|
|
70
|
+
- lib/mysql_replicator/connections/handshake.rb
|
|
71
|
+
- lib/mysql_replicator/connections/query.rb
|
|
72
|
+
- lib/mysql_replicator/error.rb
|
|
73
|
+
- lib/mysql_replicator/logger.rb
|
|
74
|
+
- lib/mysql_replicator/string_io_util.rb
|
|
75
|
+
- lib/mysql_replicator/string_util.rb
|
|
76
|
+
- lib/mysql_replicator/version.rb
|
|
77
|
+
- sig/generated/mysql_replicator.rbs
|
|
78
|
+
- sig/generated/mysql_replicator/binlog_client.rbs
|
|
79
|
+
- sig/generated/mysql_replicator/binlogs/column_parser.rbs
|
|
80
|
+
- sig/generated/mysql_replicator/binlogs/constants.rbs
|
|
81
|
+
- sig/generated/mysql_replicator/binlogs/event_parser.rbs
|
|
82
|
+
- sig/generated/mysql_replicator/binlogs/format_description_event_parser.rbs
|
|
83
|
+
- sig/generated/mysql_replicator/binlogs/json_parser.rbs
|
|
84
|
+
- sig/generated/mysql_replicator/binlogs/query_event_parser.rbs
|
|
85
|
+
- sig/generated/mysql_replicator/binlogs/rotate_event_parser.rbs
|
|
86
|
+
- sig/generated/mysql_replicator/binlogs/rows_event_parser.rbs
|
|
87
|
+
- sig/generated/mysql_replicator/binlogs/table_map_event_parser.rbs
|
|
88
|
+
- sig/generated/mysql_replicator/binlogs/xid_event_parser.rbs
|
|
89
|
+
- sig/generated/mysql_replicator/connection.rbs
|
|
90
|
+
- sig/generated/mysql_replicator/connections/auth.rbs
|
|
91
|
+
- sig/generated/mysql_replicator/connections/handshake.rbs
|
|
92
|
+
- sig/generated/mysql_replicator/connections/query.rbs
|
|
93
|
+
- sig/generated/mysql_replicator/error.rbs
|
|
94
|
+
- sig/generated/mysql_replicator/logger.rbs
|
|
95
|
+
- sig/generated/mysql_replicator/string_io_util.rbs
|
|
96
|
+
- sig/generated/mysql_replicator/string_util.rbs
|
|
97
|
+
- sig/generated/mysql_replicator/types.rbs
|
|
98
|
+
- sig/generated/mysql_replicator/version.rbs
|
|
99
|
+
homepage: https://github.com/waka/mysql_replicator
|
|
100
|
+
licenses:
|
|
101
|
+
- MIT
|
|
102
|
+
metadata:
|
|
103
|
+
rubygems_mfa_required: 'true'
|
|
104
|
+
homepage_uri: https://github.com/waka/mysql_replicator
|
|
105
|
+
source_code_uri: https://github.com/waka/mysql_replicator
|
|
106
|
+
changelog_uri: https://github.com/waka/mysql_replicator/blob/main/CHANGELOG.md
|
|
107
|
+
rdoc_options: []
|
|
108
|
+
require_paths:
|
|
109
|
+
- lib
|
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
111
|
+
requirements:
|
|
112
|
+
- - ">="
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: 3.1.0
|
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
|
+
requirements:
|
|
117
|
+
- - ">="
|
|
118
|
+
- !ruby/object:Gem::Version
|
|
119
|
+
version: '0'
|
|
120
|
+
requirements: []
|
|
121
|
+
rubygems_version: 3.6.8
|
|
122
|
+
specification_version: 4
|
|
123
|
+
summary: The MySQL Binlog event handler using MySQL Replication Protocol
|
|
124
|
+
test_files: []
|