Merge lp:~diego-fmpwizard/mysql-proxy/master_info into lp:mysql-proxy
- master_info
- Merge into trunk
Proposed by fmpwizard
| Status: | Merged |
|---|---|
| Merged at revision: | not available |
| Proposed branch: | lp:~diego-fmpwizard/mysql-proxy/master_info |
| Merge into: | lp:mysql-proxy |
| Diff against target: | None lines |
| To merge this branch: | bzr merge lp:~diego-fmpwizard/mysql-proxy/master_info |
| Related bugs: | |
| Related blueprints: |
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| Jan Kneschke (community) | Approve | ||
| Review via email: | |||
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
| fmpwizard (diego-fmpwizard) wrote : | # |
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
| 1 | === modified file 'lib/mysql-proto.c' |
| 2 | --- lib/mysql-proto.c 2009-02-07 03:59:23 +0000 |
| 3 | +++ lib/mysql-proto.c 2009-04-14 15:11:59 +0000 |
| 4 | @@ -181,7 +181,8 @@ |
| 5 | } |
| 6 | |
| 7 | lua_newtable(L); |
| 8 | - |
| 9 | + |
| 10 | + LUA_EXPORT_INT(info, master_lines); |
| 11 | LUA_EXPORT_STR(info, master_log_file); |
| 12 | LUA_EXPORT_INT(info, master_log_pos); |
| 13 | LUA_EXPORT_STR(info, master_host); |
| 14 | @@ -190,7 +191,12 @@ |
| 15 | LUA_EXPORT_INT(info, master_port); |
| 16 | LUA_EXPORT_INT(info, master_connect_retry); |
| 17 | LUA_EXPORT_INT(info, master_ssl); |
| 18 | - if (info->lines >= 15) { |
| 19 | + LUA_EXPORT_STR(info, master_ssl_ca); |
| 20 | + LUA_EXPORT_STR(info, master_ssl_capath); |
| 21 | + LUA_EXPORT_STR(info, master_ssl_cert); |
| 22 | + LUA_EXPORT_STR(info, master_ssl_cipher); |
| 23 | + LUA_EXPORT_STR(info, master_ssl_key); |
| 24 | + if (info->master_lines >= 15) { |
| 25 | LUA_EXPORT_INT(info, master_ssl_verify_server_cert); |
| 26 | } |
| 27 | |
| 28 | @@ -199,6 +205,43 @@ |
| 29 | return 1; |
| 30 | } |
| 31 | |
| 32 | +static int lua_proto_append_masterinfo_string (lua_State *L) { |
| 33 | + GString *packet; |
| 34 | + network_mysqld_masterinfo_t *info; |
| 35 | + |
| 36 | + luaL_checktype(L, 1, LUA_TTABLE); |
| 37 | + |
| 38 | + info = network_mysqld_masterinfo_new(); |
| 39 | + |
| 40 | + LUA_IMPORT_INT(info, master_lines); |
| 41 | + LUA_IMPORT_STR(info, master_log_file); |
| 42 | + LUA_IMPORT_INT(info, master_log_pos); |
| 43 | + LUA_IMPORT_STR(info, master_host); |
| 44 | + LUA_IMPORT_STR(info, master_user); |
| 45 | + LUA_IMPORT_STR(info, master_password); |
| 46 | + LUA_IMPORT_INT(info, master_port); |
| 47 | + LUA_IMPORT_INT(info, master_connect_retry); |
| 48 | + LUA_IMPORT_INT(info, master_ssl); |
| 49 | + LUA_IMPORT_STR(info, master_ssl_ca); |
| 50 | + LUA_IMPORT_STR(info, master_ssl_capath); |
| 51 | + LUA_IMPORT_STR(info, master_ssl_cert); |
| 52 | + LUA_IMPORT_STR(info, master_ssl_cipher); |
| 53 | + LUA_IMPORT_STR(info, master_ssl_key); |
| 54 | + LUA_IMPORT_INT(info, master_ssl_verify_server_cert); |
| 55 | + |
| 56 | + packet = g_string_new(NULL); |
| 57 | + network_mysqld_masterinfo_append(packet, info); |
| 58 | + |
| 59 | + lua_pushlstring(L, S(packet)); |
| 60 | + |
| 61 | + network_mysqld_masterinfo_free(info); |
| 62 | + |
| 63 | + g_string_free(packet, TRUE); |
| 64 | + |
| 65 | + return 1; |
| 66 | +} |
| 67 | + |
| 68 | + |
| 69 | static int lua_proto_append_ok_packet (lua_State *L) { |
| 70 | GString *packet; |
| 71 | network_mysqld_ok_packet_t *ok_packet; |
| 72 | @@ -446,6 +489,7 @@ |
| 73 | {"from_response_packet", lua_proto_get_response_packet}, |
| 74 | {"to_response_packet", lua_proto_append_response_packet}, |
| 75 | {"from_masterinfo_string", lua_proto_get_masterinfo_string}, |
| 76 | + {"to_masterinfo_string", lua_proto_append_masterinfo_string}, |
| 77 | {NULL, NULL}, |
| 78 | }; |
| 79 | |
| 80 | |
| 81 | === modified file 'src/network-mysqld-masterinfo.c' |
| 82 | --- src/network-mysqld-masterinfo.c 2009-02-23 23:37:58 +0000 |
| 83 | +++ src/network-mysqld-masterinfo.c 2009-04-14 15:11:59 +0000 |
| 84 | @@ -118,9 +118,10 @@ |
| 85 | g_return_val_if_fail(info, -1); |
| 86 | g_return_val_if_fail(packet, -1); |
| 87 | |
| 88 | - err = err || network_mysqld_masterinfo_get_int32(packet, &lines); |
| 89 | - info->lines = lines; |
| 90 | - err = err || network_mysqld_masterinfo_get_string(packet, info->master_log_file); |
| 91 | + /*err = err || network_mysqld_masterinfo_get_int32(packet, &lines);*/ |
| 92 | + /*info->master_lines = lines;*/ |
| 93 | + err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_lines)); |
| 94 | + err = err || network_mysqld_masterinfo_get_string(packet, info->master_log_file); |
| 95 | err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_log_pos)); |
| 96 | err = err || network_mysqld_masterinfo_get_string(packet, info->master_host); |
| 97 | err = err || network_mysqld_masterinfo_get_string(packet, info->master_user); |
| 98 | @@ -133,7 +134,7 @@ |
| 99 | err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_cert); |
| 100 | err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_cipher); |
| 101 | err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_key); |
| 102 | - if (lines >= 15) { |
| 103 | + if (info->master_lines >= 15) { |
| 104 | err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_ssl_verify_server_cert)); |
| 105 | } |
| 106 | return err ? -1 : 0; |
| 107 | @@ -159,8 +160,8 @@ |
| 108 | g_return_val_if_fail(info, -1); |
| 109 | g_return_val_if_fail(packet, -1); |
| 110 | |
| 111 | - err = err || network_mysqld_masterinfo_append_int32(packet, 15); |
| 112 | - err = err || network_mysqld_masterinfo_append_string(packet, info->master_log_file); |
| 113 | + err = err || network_mysqld_masterinfo_append_int32(packet, info->master_lines); |
| 114 | + err = err || network_mysqld_masterinfo_append_string(packet, info->master_log_file); |
| 115 | err = err || network_mysqld_masterinfo_append_int32(packet, info->master_log_pos); |
| 116 | err = err || network_mysqld_masterinfo_append_string(packet, info->master_host); |
| 117 | err = err || network_mysqld_masterinfo_append_string(packet, info->master_user); |
| 118 | @@ -173,7 +174,9 @@ |
| 119 | err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_cert); |
| 120 | err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_cipher); |
| 121 | err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_key); |
| 122 | - err = err || network_mysqld_masterinfo_append_int32(packet, info->master_ssl_verify_server_cert); |
| 123 | + if (info->master_lines >= 15) { |
| 124 | + err = err || network_mysqld_masterinfo_append_int32(packet, info->master_ssl_verify_server_cert); |
| 125 | + } |
| 126 | |
| 127 | return err ? -1 : 0; |
| 128 | } |
| 129 | |
| 130 | === modified file 'src/network-mysqld-masterinfo.h' |
| 131 | --- src/network-mysqld-masterinfo.h 2009-02-07 03:59:23 +0000 |
| 132 | +++ src/network-mysqld-masterinfo.h 2009-04-14 15:11:59 +0000 |
| 133 | @@ -24,7 +24,7 @@ |
| 134 | #include "network-mysqld-proto.h" |
| 135 | |
| 136 | typedef struct { |
| 137 | - guint32 lines; |
| 138 | + guint32 master_lines; |
| 139 | GString *master_log_file; |
| 140 | guint32 master_log_pos; |
| 141 | GString *master_host; |
| 142 | |
| 143 | === modified file 'tests/unit/lua/mysql-proto.lua' |
| 144 | --- tests/unit/lua/mysql-proto.lua 2009-02-07 03:59:23 +0000 |
| 145 | +++ tests/unit/lua/mysql-proto.lua 2009-04-14 15:11:59 +0000 |
| 146 | @@ -184,25 +184,60 @@ |
| 147 | assert(tbl.database == "db", ("expected 'db', got %s"):format(tostring(tbl.database))) |
| 148 | |
| 149 | -- test 5.1 master.info format |
| 150 | -local masterinfofile = proto.from_masterinfo_string("15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\n\n\n\n\n\n0\n") |
| 151 | +local masterinfofile = proto.from_masterinfo_string( |
| 152 | +"15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n" |
| 153 | +.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n0\n") |
| 154 | +assert( masterinfofile["master_lines"] == 15) |
| 155 | assert( masterinfofile["master_host"] == "127.0.0.1") |
| 156 | -assert( masterinfofile["master_ssl"] == 0) |
| 157 | assert( masterinfofile["master_log_pos"] == 2143897) |
| 158 | assert( masterinfofile["master_user"] == "root") |
| 159 | assert( masterinfofile["master_connect_retry"] == 60) |
| 160 | assert( masterinfofile["master_log_file"] == "hostname-bin.000024") |
| 161 | assert( masterinfofile["master_port"] == 3306) |
| 162 | assert( masterinfofile["master_password"] == "123") |
| 163 | +assert( masterinfofile["master_ssl"] == 0) |
| 164 | +assert( masterinfofile["master_ssl_ca"] == "ca-cert.pem") |
| 165 | +assert( masterinfofile["master_ssl_capath"] == "/usr/local/mysql/ssl/ca/") |
| 166 | +assert( masterinfofile["master_ssl_cert"] == "client-cert.pem") |
| 167 | +assert( masterinfofile["master_ssl_cipher"] == "ssl_cipher") |
| 168 | +assert( masterinfofile["master_ssl_key"] == "client-key.pem") |
| 169 | assert( masterinfofile["master_ssl_verify_server_cert"] == 0) |
| 170 | |
| 171 | -- test 4.1 and 5.0 master.info format |
| 172 | -local masterinfofile = proto.from_masterinfo_string("14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\n\n\n\n\n\n") |
| 173 | +local masterinfofile = proto.from_masterinfo_string( |
| 174 | +"14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n" |
| 175 | +.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n") |
| 176 | + |
| 177 | +assert( masterinfofile["master_lines"] == 14) |
| 178 | assert( masterinfofile["master_host"] == "127.0.0.1") |
| 179 | -assert( masterinfofile["master_ssl"] == 0) |
| 180 | assert( masterinfofile["master_log_pos"] == 2143897) |
| 181 | assert( masterinfofile["master_user"] == "root") |
| 182 | assert( masterinfofile["master_connect_retry"] == 60) |
| 183 | assert( masterinfofile["master_log_file"] == "hostname-bin.000024") |
| 184 | assert( masterinfofile["master_port"] == 3306) |
| 185 | -assert( masterinfofile["master_password"] == "123") |
| 186 | +assert( masterinfofile["master_password"] == "123") |
| 187 | +assert( masterinfofile["master_ssl"] == 0) |
| 188 | +assert( masterinfofile["master_ssl_ca"] == "ca-cert.pem") |
| 189 | +assert( masterinfofile["master_ssl_capath"] == "/usr/local/mysql/ssl/ca/") |
| 190 | +assert( masterinfofile["master_ssl_cert"] == "client-cert.pem") |
| 191 | +assert( masterinfofile["master_ssl_cipher"] == "ssl_cipher") |
| 192 | +assert( masterinfofile["master_ssl_key"] == "client-key.pem") |
| 193 | assert( masterinfofile["master_ssl_verify_server_cert"] == nil) |
| 194 | + |
| 195 | +-- test proto.to_masterinfo_string() |
| 196 | + |
| 197 | +local masterinfofile = proto.from_masterinfo_string( |
| 198 | +"15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n" |
| 199 | +.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n0\n") |
| 200 | + |
| 201 | +assert( proto.to_masterinfo_string(masterinfofile) == |
| 202 | +"15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n" |
| 203 | +.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n0\n") |
| 204 | + |
| 205 | +local masterinfofile = proto.from_masterinfo_string( |
| 206 | +"14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n" |
| 207 | +.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n") |
| 208 | + |
| 209 | +assert( proto.to_masterinfo_string(masterinfofile) == |
| 210 | +"14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n" |
| 211 | +.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n") |

Here I added to_masterinfo_ string( ) to Lua so that you can create a master.info file from a lua script. It does the opposite to from_masterinfo _string( )
I also added some master_ssl_* fields that were missing from lua.