Merge lp:~diego-fmpwizard/mysql-proxy/master_info into lp:mysql-proxy

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
Reviewer Review Type Date Requested Status
Jan Kneschke (community) Approve
Review via email: mp+5520@code.launchpad.net
To post a comment you must log in.
Revision history for this message
fmpwizard (diego-fmpwizard) wrote :

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.

Revision history for this message
Jan Kneschke (jan-kneschke) wrote :

looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/mysql-proto.c'
--- lib/mysql-proto.c 2009-02-07 03:59:23 +0000
+++ lib/mysql-proto.c 2009-04-14 15:11:59 +0000
@@ -181,7 +181,8 @@
181 }181 }
182182
183 lua_newtable(L);183 lua_newtable(L);
184184
185 LUA_EXPORT_INT(info, master_lines);
185 LUA_EXPORT_STR(info, master_log_file);186 LUA_EXPORT_STR(info, master_log_file);
186 LUA_EXPORT_INT(info, master_log_pos);187 LUA_EXPORT_INT(info, master_log_pos);
187 LUA_EXPORT_STR(info, master_host);188 LUA_EXPORT_STR(info, master_host);
@@ -190,7 +191,12 @@
190 LUA_EXPORT_INT(info, master_port);191 LUA_EXPORT_INT(info, master_port);
191 LUA_EXPORT_INT(info, master_connect_retry);192 LUA_EXPORT_INT(info, master_connect_retry);
192 LUA_EXPORT_INT(info, master_ssl);193 LUA_EXPORT_INT(info, master_ssl);
193 if (info->lines >= 15) {194 LUA_EXPORT_STR(info, master_ssl_ca);
195 LUA_EXPORT_STR(info, master_ssl_capath);
196 LUA_EXPORT_STR(info, master_ssl_cert);
197 LUA_EXPORT_STR(info, master_ssl_cipher);
198 LUA_EXPORT_STR(info, master_ssl_key);
199 if (info->master_lines >= 15) {
194 LUA_EXPORT_INT(info, master_ssl_verify_server_cert);200 LUA_EXPORT_INT(info, master_ssl_verify_server_cert);
195 }201 }
196 202
@@ -199,6 +205,43 @@
199 return 1;205 return 1;
200}206}
201207
208static int lua_proto_append_masterinfo_string (lua_State *L) {
209 GString *packet;
210 network_mysqld_masterinfo_t *info;
211
212 luaL_checktype(L, 1, LUA_TTABLE);
213
214 info = network_mysqld_masterinfo_new();
215
216 LUA_IMPORT_INT(info, master_lines);
217 LUA_IMPORT_STR(info, master_log_file);
218 LUA_IMPORT_INT(info, master_log_pos);
219 LUA_IMPORT_STR(info, master_host);
220 LUA_IMPORT_STR(info, master_user);
221 LUA_IMPORT_STR(info, master_password);
222 LUA_IMPORT_INT(info, master_port);
223 LUA_IMPORT_INT(info, master_connect_retry);
224 LUA_IMPORT_INT(info, master_ssl);
225 LUA_IMPORT_STR(info, master_ssl_ca);
226 LUA_IMPORT_STR(info, master_ssl_capath);
227 LUA_IMPORT_STR(info, master_ssl_cert);
228 LUA_IMPORT_STR(info, master_ssl_cipher);
229 LUA_IMPORT_STR(info, master_ssl_key);
230 LUA_IMPORT_INT(info, master_ssl_verify_server_cert);
231
232 packet = g_string_new(NULL);
233 network_mysqld_masterinfo_append(packet, info);
234
235 lua_pushlstring(L, S(packet));
236
237 network_mysqld_masterinfo_free(info);
238
239 g_string_free(packet, TRUE);
240
241 return 1;
242}
243
244
202static int lua_proto_append_ok_packet (lua_State *L) {245static int lua_proto_append_ok_packet (lua_State *L) {
203 GString *packet;246 GString *packet;
204 network_mysqld_ok_packet_t *ok_packet;247 network_mysqld_ok_packet_t *ok_packet;
@@ -446,6 +489,7 @@
446 {"from_response_packet", lua_proto_get_response_packet},489 {"from_response_packet", lua_proto_get_response_packet},
447 {"to_response_packet", lua_proto_append_response_packet},490 {"to_response_packet", lua_proto_append_response_packet},
448 {"from_masterinfo_string", lua_proto_get_masterinfo_string},491 {"from_masterinfo_string", lua_proto_get_masterinfo_string},
492 {"to_masterinfo_string", lua_proto_append_masterinfo_string},
449 {NULL, NULL},493 {NULL, NULL},
450};494};
451495
452496
=== modified file 'src/network-mysqld-masterinfo.c'
--- src/network-mysqld-masterinfo.c 2009-02-23 23:37:58 +0000
+++ src/network-mysqld-masterinfo.c 2009-04-14 15:11:59 +0000
@@ -118,9 +118,10 @@
118 g_return_val_if_fail(info, -1);118 g_return_val_if_fail(info, -1);
119 g_return_val_if_fail(packet, -1);119 g_return_val_if_fail(packet, -1);
120120
121 err = err || network_mysqld_masterinfo_get_int32(packet, &lines);121 /*err = err || network_mysqld_masterinfo_get_int32(packet, &lines);*/
122 info->lines = lines;122 /*info->master_lines = lines;*/
123 err = err || network_mysqld_masterinfo_get_string(packet, info->master_log_file);123 err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_lines));
124 err = err || network_mysqld_masterinfo_get_string(packet, info->master_log_file);
124 err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_log_pos));125 err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_log_pos));
125 err = err || network_mysqld_masterinfo_get_string(packet, info->master_host);126 err = err || network_mysqld_masterinfo_get_string(packet, info->master_host);
126 err = err || network_mysqld_masterinfo_get_string(packet, info->master_user);127 err = err || network_mysqld_masterinfo_get_string(packet, info->master_user);
@@ -133,7 +134,7 @@
133 err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_cert);134 err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_cert);
134 err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_cipher);135 err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_cipher);
135 err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_key);136 err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_key);
136 if (lines >= 15) {137 if (info->master_lines >= 15) {
137 err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_ssl_verify_server_cert));138 err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_ssl_verify_server_cert));
138 }139 }
139 return err ? -1 : 0;140 return err ? -1 : 0;
@@ -159,8 +160,8 @@
159 g_return_val_if_fail(info, -1);160 g_return_val_if_fail(info, -1);
160 g_return_val_if_fail(packet, -1);161 g_return_val_if_fail(packet, -1);
161162
162 err = err || network_mysqld_masterinfo_append_int32(packet, 15);163 err = err || network_mysqld_masterinfo_append_int32(packet, info->master_lines);
163 err = err || network_mysqld_masterinfo_append_string(packet, info->master_log_file);164 err = err || network_mysqld_masterinfo_append_string(packet, info->master_log_file);
164 err = err || network_mysqld_masterinfo_append_int32(packet, info->master_log_pos);165 err = err || network_mysqld_masterinfo_append_int32(packet, info->master_log_pos);
165 err = err || network_mysqld_masterinfo_append_string(packet, info->master_host);166 err = err || network_mysqld_masterinfo_append_string(packet, info->master_host);
166 err = err || network_mysqld_masterinfo_append_string(packet, info->master_user);167 err = err || network_mysqld_masterinfo_append_string(packet, info->master_user);
@@ -173,7 +174,9 @@
173 err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_cert);174 err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_cert);
174 err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_cipher);175 err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_cipher);
175 err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_key);176 err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_key);
176 err = err || network_mysqld_masterinfo_append_int32(packet, info->master_ssl_verify_server_cert);177 if (info->master_lines >= 15) {
178 err = err || network_mysqld_masterinfo_append_int32(packet, info->master_ssl_verify_server_cert);
179 }
177180
178 return err ? -1 : 0;181 return err ? -1 : 0;
179}182}
180183
=== modified file 'src/network-mysqld-masterinfo.h'
--- src/network-mysqld-masterinfo.h 2009-02-07 03:59:23 +0000
+++ src/network-mysqld-masterinfo.h 2009-04-14 15:11:59 +0000
@@ -24,7 +24,7 @@
24#include "network-mysqld-proto.h"24#include "network-mysqld-proto.h"
2525
26typedef struct {26typedef struct {
27 guint32 lines;27 guint32 master_lines;
28 GString *master_log_file;28 GString *master_log_file;
29 guint32 master_log_pos;29 guint32 master_log_pos;
30 GString *master_host;30 GString *master_host;
3131
=== modified file 'tests/unit/lua/mysql-proto.lua'
--- tests/unit/lua/mysql-proto.lua 2009-02-07 03:59:23 +0000
+++ tests/unit/lua/mysql-proto.lua 2009-04-14 15:11:59 +0000
@@ -184,25 +184,60 @@
184assert(tbl.database == "db", ("expected 'db', got %s"):format(tostring(tbl.database)))184assert(tbl.database == "db", ("expected 'db', got %s"):format(tostring(tbl.database)))
185185
186-- test 5.1 master.info format186-- test 5.1 master.info format
187local 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")187local masterinfofile = proto.from_masterinfo_string(
188"15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
189.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n0\n")
190assert( masterinfofile["master_lines"] == 15)
188assert( masterinfofile["master_host"] == "127.0.0.1")191assert( masterinfofile["master_host"] == "127.0.0.1")
189assert( masterinfofile["master_ssl"] == 0)
190assert( masterinfofile["master_log_pos"] == 2143897)192assert( masterinfofile["master_log_pos"] == 2143897)
191assert( masterinfofile["master_user"] == "root")193assert( masterinfofile["master_user"] == "root")
192assert( masterinfofile["master_connect_retry"] == 60)194assert( masterinfofile["master_connect_retry"] == 60)
193assert( masterinfofile["master_log_file"] == "hostname-bin.000024")195assert( masterinfofile["master_log_file"] == "hostname-bin.000024")
194assert( masterinfofile["master_port"] == 3306)196assert( masterinfofile["master_port"] == 3306)
195assert( masterinfofile["master_password"] == "123")197assert( masterinfofile["master_password"] == "123")
198assert( masterinfofile["master_ssl"] == 0)
199assert( masterinfofile["master_ssl_ca"] == "ca-cert.pem")
200assert( masterinfofile["master_ssl_capath"] == "/usr/local/mysql/ssl/ca/")
201assert( masterinfofile["master_ssl_cert"] == "client-cert.pem")
202assert( masterinfofile["master_ssl_cipher"] == "ssl_cipher")
203assert( masterinfofile["master_ssl_key"] == "client-key.pem")
196assert( masterinfofile["master_ssl_verify_server_cert"] == 0)204assert( masterinfofile["master_ssl_verify_server_cert"] == 0)
197205
198-- test 4.1 and 5.0 master.info format206-- test 4.1 and 5.0 master.info format
199local 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")207local masterinfofile = proto.from_masterinfo_string(
208"14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
209.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n")
210
211assert( masterinfofile["master_lines"] == 14)
200assert( masterinfofile["master_host"] == "127.0.0.1")212assert( masterinfofile["master_host"] == "127.0.0.1")
201assert( masterinfofile["master_ssl"] == 0)
202assert( masterinfofile["master_log_pos"] == 2143897)213assert( masterinfofile["master_log_pos"] == 2143897)
203assert( masterinfofile["master_user"] == "root")214assert( masterinfofile["master_user"] == "root")
204assert( masterinfofile["master_connect_retry"] == 60)215assert( masterinfofile["master_connect_retry"] == 60)
205assert( masterinfofile["master_log_file"] == "hostname-bin.000024")216assert( masterinfofile["master_log_file"] == "hostname-bin.000024")
206assert( masterinfofile["master_port"] == 3306)217assert( masterinfofile["master_port"] == 3306)
207assert( masterinfofile["master_password"] == "123") 218assert( masterinfofile["master_password"] == "123")
219assert( masterinfofile["master_ssl"] == 0)
220assert( masterinfofile["master_ssl_ca"] == "ca-cert.pem")
221assert( masterinfofile["master_ssl_capath"] == "/usr/local/mysql/ssl/ca/")
222assert( masterinfofile["master_ssl_cert"] == "client-cert.pem")
223assert( masterinfofile["master_ssl_cipher"] == "ssl_cipher")
224assert( masterinfofile["master_ssl_key"] == "client-key.pem")
208assert( masterinfofile["master_ssl_verify_server_cert"] == nil)225assert( masterinfofile["master_ssl_verify_server_cert"] == nil)
226
227-- test proto.to_masterinfo_string()
228
229local masterinfofile = proto.from_masterinfo_string(
230"15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
231.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n0\n")
232
233assert( proto.to_masterinfo_string(masterinfofile) ==
234"15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
235.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n0\n")
236
237local masterinfofile = proto.from_masterinfo_string(
238"14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
239.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n")
240
241assert( proto.to_masterinfo_string(masterinfofile) ==
242"14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
243.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n")

Subscribers

People subscribed via source and target branches