Merge lp:~linuxjedi/mydumper/mydumper-bp-gzip into lp:~mydumper/mydumper/trunk

Proposed by Andrew Hutchings
Status: Merged
Approved by: Andrew Hutchings
Approved revision: 68
Merged at revision: 68
Proposed branch: lp:~linuxjedi/mydumper/mydumper-bp-gzip
Merge into: lp:~mydumper/mydumper/trunk
Diff against target: 324 lines (+115/-138)
4 files modified
CMakeLists.txt (+3/-2)
cmake/modules/FindMySQL.cmake (+101/-136)
docs/usage.rst (+4/-0)
mydumper.c (+7/-0)
To merge this branch: bzr merge lp:~linuxjedi/mydumper/mydumper-bp-gzip
Reviewer Review Type Date Requested Status
MySQL Data Dumper Team Pending
Review via email: mp+59282@code.launchpad.net

Description of the change

Add protocol compression
Fixups, especially to CMake

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2011-04-26 19:14:47 +0000
3+++ CMakeLists.txt 2011-04-27 19:54:26 +0000
4@@ -12,7 +12,7 @@
5
6 add_subdirectory(docs)
7
8-set(CMAKE_C_FLAGS "-Wall -Wunused -Wwrite-strings -Wno-strict-aliasing -Wextra -Werror -Wshadow -O3 -g")
9+set(CMAKE_C_FLAGS "-Wall -Wunused -Wwrite-strings -Wno-strict-aliasing -Wextra -Werror -Wshadow -O3 -g ${MYSQL_CFLAGS}")
10
11 include_directories(${MYDUMPER_SOURCE_DIR} ${MYSQL_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${PCRE_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})
12
13@@ -24,7 +24,8 @@
14 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
15
16 add_executable(mydumper mydumper.c binlog.c)
17-target_link_libraries(mydumper ${MYSQL_LIBRARY} ${MYSQL_EXTRA_LIBRARIES} ${GLIB2_LIBRARIES} ${GTHREAD2_LIBRARIES} ${PCRE_PCRE_LIBRARY} ${ZLIB_LIBRARIES})
18+target_link_libraries(mydumper ${MYSQL_LIBRARIES} ${GLIB2_LIBRARIES} ${GTHREAD2_LIBRARIES} ${PCRE_PCRE_LIBRARY} ${ZLIB_LIBRARIES})
19+
20 INSTALL(TARGETS mydumper
21 RUNTIME DESTINATION bin
22 )
23
24=== modified file 'cmake/modules/FindMySQL.cmake'
25--- cmake/modules/FindMySQL.cmake 2011-04-21 20:52:39 +0000
26+++ cmake/modules/FindMySQL.cmake 2011-04-27 19:54:26 +0000
27@@ -1,142 +1,107 @@
28-#
29-# Find the MySQL client includes and library
30-#
31-
32+# - Find MySQL
33+# Find the MySQL includes and client library
34 # This module defines
35-# MYSQL_INCLUDE_DIR, where to find mysql.h
36-# MYSQL_LIBRARIES, the libraries to link against to connect to MySQL
37-# MYSQL_FOUND, if false, you cannot build anything that requires MySQL.
38-
39-# also defined, but not for general use are
40-# MYSQL_LIBRARY, where to find the MySQL library.
41-
42-set( MYSQL_FOUND 0 )
43-
44-if( UNIX )
45- set(MYSQL_CONFIG_PREFER_PATH "$ENV{MYSQL_HOME}/bin" CACHE FILEPATH
46- "preferred path to MySQL (mysql_config)"
47- )
48-
49- find_program(MYSQL_CONFIG mysql_config
50- ${MYSQL_CONFIG_PREFER_PATH}
51- /usr/local/mysql/bin/
52- /usr/local/bin/
53- /usr/bin/
54- )
55-
56- if( MYSQL_CONFIG )
57- message(STATUS "Using mysql-config: ${MYSQL_CONFIG}")
58- # set INCLUDE_DIR
59- exec_program(${MYSQL_CONFIG}
60- ARGS --include
61- OUTPUT_VARIABLE MY_TMP
62- )
63-
64- string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}")
65- set(MYSQL_ADD_INCLUDE_PATH ${MY_TMP} CACHE FILEPATH INTERNAL)
66- #message("[DEBUG] MYSQL ADD_INCLUDE_PATH : ${MYSQL_ADD_INCLUDE_PATH}")
67- # set LIBRARY_DIR
68- exec_program(${MYSQL_CONFIG}
69- ARGS --libs_r
70- OUTPUT_VARIABLE MY_TMP
71- )
72- set(MYSQL_ADD_LIBRARIES "")
73- string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}")
74- foreach(LIB ${MYSQL_LIB_LIST})
75- string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}")
76- list(APPEND MYSQL_ADD_LIBRARIES "${LIB}")
77- #message("[DEBUG] MYSQL ADD_LIBRARIES : ${MYSQL_ADD_LIBRARIES}")
78- endforeach(LIB ${MYSQL_LIB_LIST})
79-
80- set(MYSQL_ADD_LIBRARIES_PATH "")
81- string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}")
82- foreach(LIB ${MYSQL_LIBDIR_LIST})
83- string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}")
84- list(APPEND MYSQL_ADD_LIBRARIES_PATH "${LIB}")
85- #message("[DEBUG] MYSQL ADD_LIBRARIES_PATH : ${MYSQL_ADD_LIBRARIES_PATH}")
86- endforeach(LIB ${MYSQL_LIBS})
87-
88- else( MYSQL_CONFIG )
89- set(MYSQL_ADD_LIBRARIES "")
90- list(APPEND MYSQL_ADD_LIBRARIES "mysqlclient_r")
91- endif( MYSQL_CONFIG )
92-endif( UNIX )
93-
94-find_path(MYSQL_INCLUDE_DIR
95- NAMES
96- mysql.h
97- PATHS
98- ${MYSQL_ADD_INCLUDE_PATH}
99- /usr/include
100- /usr/include/mysql
101+# MYSQL_INCLUDE_DIR, where to find mysql.h
102+# MYSQL_LIBRARIES, the libraries needed to use MySQL.
103+# MYSQL_FOUND, If false, do not try to use MySQL.
104+#
105+# Copyright (c) 2006, Jaroslaw Staniek, <js@iidea.pl>
106+# Lot of adustmens by Michal Cihar <michal@cihar.com>
107+#
108+# vim: expandtab sw=4 ts=4 sts=4:
109+#
110+# Redistribution and use is allowed according to the terms of the BSD license.
111+
112+if(UNIX)
113+ set(MYSQL_CONFIG_PREFER_PATH "$ENV{MYSQL_HOME}/bin" CACHE FILEPATH
114+ "preferred path to MySQL (mysql_config)")
115+ find_program(MYSQL_CONFIG mysql_config
116+ ${MYSQL_CONFIG_PREFER_PATH}
117+ /usr/local/mysql/bin/
118+ /usr/local/bin/
119+ /usr/bin/
120+ )
121+
122+ if(MYSQL_CONFIG)
123+ message(STATUS "Using mysql-config: ${MYSQL_CONFIG}")
124+ # set CFLAGS
125+ exec_program(${MYSQL_CONFIG}
126+ ARGS --cflags
127+ OUTPUT_VARIABLE MY_TMP)
128+
129+ set(MYSQL_CFLAGS ${MY_TMP} CACHE STRING INTERNAL)
130+
131+ # set INCLUDE_DIR
132+ exec_program(${MYSQL_CONFIG}
133+ ARGS --include
134+ OUTPUT_VARIABLE MY_TMP)
135+
136+ string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}")
137+
138+ set(MYSQL_ADD_INCLUDE_DIR ${MY_TMP} CACHE FILEPATH INTERNAL)
139+
140+ # set LIBRARY_DIR
141+ exec_program(${MYSQL_CONFIG}
142+ ARGS --libs_r
143+ OUTPUT_VARIABLE MY_TMP)
144+
145+ set(MYSQL_ADD_LIBRARIES "")
146+
147+ string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}")
148+ foreach(LIB ${MYSQL_LIB_LIST})
149+ string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}")
150+ list(APPEND MYSQL_ADD_LIBRARIES "${LIB}")
151+ endforeach(LIB ${MYSQL_LIBS})
152+
153+ set(MYSQL_ADD_LIBRARY_PATH "")
154+
155+ string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}")
156+ foreach(LIB ${MYSQL_LIBDIR_LIST})
157+ string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}")
158+ list(APPEND MYSQL_ADD_LIBRARY_PATH "${LIB}")
159+ endforeach(LIB ${MYSQL_LIBS})
160+
161+ else(MYSQL_CONFIG)
162+ set(MYSQL_ADD_LIBRARIES "")
163+ list(APPEND MYSQL_ADD_LIBRARIES "mysqlclient")
164+ endif(MYSQL_CONFIG)
165+else(UNIX)
166+ set(MYSQL_ADD_INCLUDE_DIR "c:/msys/local/include" CACHE FILEPATH INTERNAL)
167+ set(MYSQL_ADD_LIBRARY_PATH "c:/msys/local/lib" CACHE FILEPATH INTERNAL)
168+ENDIF(UNIX)
169+
170+find_path(MYSQL_INCLUDE_DIR mysql.h
171 /usr/local/include
172- /usr/local/include/mysql
173+ /usr/local/include/mysql
174 /usr/local/mysql/include
175- "C:/Program Files/MySQL/include"
176- "C:/Program Files/MySQL/MySQL Server 5.0/include"
177- "C:/Program Files/MySQL/MySQL Server 5.1/include"
178- "C:/MySQL/include"
179- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/include"
180- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/include"
181- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/include"
182- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/include"
183- "c:/msys/local/include"
184- DOC
185- "Specify the directory containing mysql.h."
186+ /usr/local/mysql/include/mysql
187+ /usr/include
188+ /usr/include/mysql
189+ ${MYSQL_ADD_INCLUDE_DIR}
190 )
191
192-if( UNIX )
193+set(TMP_MYSQL_LIBRARIES "")
194+
195 foreach(LIB ${MYSQL_ADD_LIBRARIES})
196- find_library( MYSQL_LIBRARY
197- NAMES
198- mysql libmysql ${LIB}
199- PATHS
200- ${MYSQL_ADD_LIBRARIES_PATH}
201- /usr/lib
202- /usr/lib/mysql
203- /usr/local/lib
204- /usr/local/lib/mysql
205- /usr/local/mysql/lib
206- "C:/Program Files/MySQL/lib"
207- "C:/Program Files/MySQL/MySQL Server 5.0/lib/opt"
208- "C:/Program Files/MySQL/MySQL Server 5.1/lib/opt"
209- "C:/MySQL/lib/debug"
210- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt"
211- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt"
212- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt"
213- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt"
214- "c:/msys/local/include"
215- DOC "Specify the location of the mysql library here."
216- )
217-endforeach(LIB ${MYSQL_ADD_LIBRARY})
218-endif( UNIX )
219-
220-# On Windows you typically don't need to include any extra libraries
221-# to build MYSQL stuff.
222-
223-if( NOT WIN32 )
224- find_library( MYSQL_EXTRA_LIBRARIES
225- NAMES
226- z zlib
227- PATHS
228- /usr/lib
229- /usr/local/lib
230- DOC
231- "if more libraries are necessary to link in a MySQL client (typically zlib), specify them here."
232- )
233-else( NOT WIN32 )
234- set( MYSQL_EXTRA_LIBRARIES "" )
235-endif( NOT WIN32 )
236-
237-if( MYSQL_LIBRARY )
238- if( MYSQL_INCLUDE_DIR )
239- set( MYSQL_FOUND 1 )
240- message(STATUS "Found MySQL library: ${MYSQL_LIBRARY}")
241- message(STATUS "Found MySQL headers: ${MYSQL_INCLUDE_DIR}")
242- else( MYSQL_INCLUDE_DIR )
243- message(FATAL_ERROR "Could not find MySQL headers! Please install the development-libraries and headers.")
244- endif( MYSQL_INCLUDE_DIR )
245- mark_as_advanced( MYSQL_FOUND MYSQL_LIBRARY MYSQL_EXTRA_LIBRARIES MYSQL_INCLUDE_DIR )
246-else( MYSQL_LIBRARY )
247- message(FATAL_ERROR "Could not find the MySQL libraries! Please install the development-libraries and headers.")
248-endif( MYSQL_LIBRARY )
249+ find_library("MYSQL_LIBRARIES_${LIB}" NAMES ${LIB}
250+ PATHS
251+ ${MYSQL_ADD_LIBRARY_PATH}
252+ /usr/lib/mysql
253+ /usr/local/lib
254+ /usr/local/lib/mysql
255+ /usr/local/mysql/lib
256+ )
257+ list(APPEND TMP_MYSQL_LIBRARIES "${MYSQL_LIBRARIES_${LIB}}")
258+endforeach(LIB ${MYSQL_ADD_LIBRARIES})
259+
260+set(MYSQL_LIBRARIES ${TMP_MYSQL_LIBRARIES} CACHE FILEPATH INTERNAL)
261+
262+if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
263+ set(MYSQL_FOUND TRUE CACHE INTERNAL "MySQL found")
264+ message(STATUS "Found MySQL: ${MYSQL_INCLUDE_DIR}, ${MYSQL_LIBRARIES}")
265+else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
266+ set(MYSQL_FOUND FALSE CACHE INTERNAL "MySQL found")
267+ message(STATUS "MySQL not found.")
268+endif(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
269+
270+mark_as_advanced(MYSQL_INCLUDE_DIR MYSQL_LIBRARIES MYSQL_CFLAGS)
271
272=== modified file 'docs/usage.rst'
273--- docs/usage.rst 2011-04-26 17:46:33 +0000
274+++ docs/usage.rst 2011-04-27 19:54:26 +0000
275@@ -76,6 +76,10 @@
276
277 Compress the output files
278
279+.. option:: --compress-input, -C
280+
281+ Use client protocol compression for connections to the MySQL server
282+
283 .. option:: --build-empty-files, -e
284
285 Create empty dump files if there is no data to dump
286
287=== modified file 'mydumper.c'
288--- mydumper.c 2011-04-27 06:39:15 +0000
289+++ mydumper.c 2011-04-27 19:54:26 +0000
290@@ -61,6 +61,7 @@
291
292 int need_dummy_read=0;
293 int compress_output=0;
294+int compress_input=1;
295 int killqueries=0;
296
297 gchar *ignore_engines = NULL;
298@@ -88,6 +89,7 @@
299 { "statement-size", 's', 0, G_OPTION_ARG_INT, &statement_size, "Attempted size of INSERT statement in bytes", NULL},
300 { "rows", 'r', 0, G_OPTION_ARG_INT, &rows_per_file, "Try to split tables into chunks of this many rows", NULL},
301 { "compress", 'c', 0, G_OPTION_ARG_NONE, &compress_output, "Compress output files", NULL},
302+ { "compress-input", 'C', 0, G_OPTION_ARG_NONE, &compress_input, "Use compression on the MySQL connection", NULL },
303 { "build-empty-files", 'e', 0, G_OPTION_ARG_NONE, &build_empty_files, "Build dump files even if no data available from table", NULL},
304 { "regex", 'x', 0, G_OPTION_ARG_STRING, &regexstring, "Regular expression for 'db.table' matching", NULL},
305 { "ignore-engines", 'i', 0, G_OPTION_ARG_STRING, &ignore_engines, "Comma delimited list of storage engines to ignore", NULL },
306@@ -197,6 +199,9 @@
307
308 mysql_options(thrconn,MYSQL_READ_DEFAULT_GROUP,"mydumper");
309
310+ if (compress_input)
311+ mysql_options(thrconn,MYSQL_OPT_COMPRESS,NULL);
312+
313 if (!mysql_real_connect(thrconn, hostname, username, password, NULL, port, socket_path, 0)) {
314 g_critical("Failed to connect to database: %s", mysql_error(thrconn));
315 exit(EXIT_FAILURE);
316@@ -256,6 +261,8 @@
317 thrconn= mysql_init(NULL);
318 g_mutex_unlock(init_mutex);
319 }
320+ if (compress_input)
321+ mysql_options(thrconn,MYSQL_OPT_COMPRESS,NULL);
322
323 if (!mysql_real_connect(thrconn, hostname, username, password, NULL, port, socket_path, 0)) {
324 g_critical("Failed to connect to database: %s", mysql_error(thrconn));

Subscribers

People subscribed via source and target branches