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
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2011-04-26 19:14:47 +0000
+++ CMakeLists.txt 2011-04-27 19:54:26 +0000
@@ -12,7 +12,7 @@
1212
13add_subdirectory(docs)13add_subdirectory(docs)
1414
15set(CMAKE_C_FLAGS "-Wall -Wunused -Wwrite-strings -Wno-strict-aliasing -Wextra -Werror -Wshadow -O3 -g")15set(CMAKE_C_FLAGS "-Wall -Wunused -Wwrite-strings -Wno-strict-aliasing -Wextra -Werror -Wshadow -O3 -g ${MYSQL_CFLAGS}")
1616
17include_directories(${MYDUMPER_SOURCE_DIR} ${MYSQL_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${PCRE_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})17include_directories(${MYDUMPER_SOURCE_DIR} ${MYSQL_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${PCRE_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})
1818
@@ -24,7 +24,8 @@
24CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)24CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
2525
26add_executable(mydumper mydumper.c binlog.c)26add_executable(mydumper mydumper.c binlog.c)
27target_link_libraries(mydumper ${MYSQL_LIBRARY} ${MYSQL_EXTRA_LIBRARIES} ${GLIB2_LIBRARIES} ${GTHREAD2_LIBRARIES} ${PCRE_PCRE_LIBRARY} ${ZLIB_LIBRARIES})27target_link_libraries(mydumper ${MYSQL_LIBRARIES} ${GLIB2_LIBRARIES} ${GTHREAD2_LIBRARIES} ${PCRE_PCRE_LIBRARY} ${ZLIB_LIBRARIES})
28
28INSTALL(TARGETS mydumper29INSTALL(TARGETS mydumper
29 RUNTIME DESTINATION bin30 RUNTIME DESTINATION bin
30)31)
3132
=== modified file 'cmake/modules/FindMySQL.cmake'
--- cmake/modules/FindMySQL.cmake 2011-04-21 20:52:39 +0000
+++ cmake/modules/FindMySQL.cmake 2011-04-27 19:54:26 +0000
@@ -1,142 +1,107 @@
1#1# - Find MySQL
2# Find the MySQL client includes and library2# Find the MySQL includes and client library
3#
4
5# This module defines3# This module defines
6# MYSQL_INCLUDE_DIR, where to find mysql.h4# MYSQL_INCLUDE_DIR, where to find mysql.h
7# MYSQL_LIBRARIES, the libraries to link against to connect to MySQL5# MYSQL_LIBRARIES, the libraries needed to use MySQL.
8# MYSQL_FOUND, if false, you cannot build anything that requires MySQL.6# MYSQL_FOUND, If false, do not try to use MySQL.
97#
10# also defined, but not for general use are8# Copyright (c) 2006, Jaroslaw Staniek, <js@iidea.pl>
11# MYSQL_LIBRARY, where to find the MySQL library.9# Lot of adustmens by Michal Cihar <michal@cihar.com>
1210#
13set( MYSQL_FOUND 0 )11# vim: expandtab sw=4 ts=4 sts=4:
1412#
15if( UNIX )13# Redistribution and use is allowed according to the terms of the BSD license.
16 set(MYSQL_CONFIG_PREFER_PATH "$ENV{MYSQL_HOME}/bin" CACHE FILEPATH14
17 "preferred path to MySQL (mysql_config)"15if(UNIX)
18 )16 set(MYSQL_CONFIG_PREFER_PATH "$ENV{MYSQL_HOME}/bin" CACHE FILEPATH
1917 "preferred path to MySQL (mysql_config)")
20 find_program(MYSQL_CONFIG mysql_config18 find_program(MYSQL_CONFIG mysql_config
21 ${MYSQL_CONFIG_PREFER_PATH}19 ${MYSQL_CONFIG_PREFER_PATH}
22 /usr/local/mysql/bin/20 /usr/local/mysql/bin/
23 /usr/local/bin/21 /usr/local/bin/
24 /usr/bin/22 /usr/bin/
25 )23 )
2624
27 if( MYSQL_CONFIG )25 if(MYSQL_CONFIG)
28 message(STATUS "Using mysql-config: ${MYSQL_CONFIG}")26 message(STATUS "Using mysql-config: ${MYSQL_CONFIG}")
29 # set INCLUDE_DIR27 # set CFLAGS
30 exec_program(${MYSQL_CONFIG}28 exec_program(${MYSQL_CONFIG}
31 ARGS --include29 ARGS --cflags
32 OUTPUT_VARIABLE MY_TMP30 OUTPUT_VARIABLE MY_TMP)
33 )31
3432 set(MYSQL_CFLAGS ${MY_TMP} CACHE STRING INTERNAL)
35 string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}")33
36 set(MYSQL_ADD_INCLUDE_PATH ${MY_TMP} CACHE FILEPATH INTERNAL)34 # set INCLUDE_DIR
37 #message("[DEBUG] MYSQL ADD_INCLUDE_PATH : ${MYSQL_ADD_INCLUDE_PATH}")35 exec_program(${MYSQL_CONFIG}
38 # set LIBRARY_DIR36 ARGS --include
39 exec_program(${MYSQL_CONFIG}37 OUTPUT_VARIABLE MY_TMP)
40 ARGS --libs_r38
41 OUTPUT_VARIABLE MY_TMP39 string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}")
42 )40
43 set(MYSQL_ADD_LIBRARIES "")41 set(MYSQL_ADD_INCLUDE_DIR ${MY_TMP} CACHE FILEPATH INTERNAL)
44 string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}")42
45 foreach(LIB ${MYSQL_LIB_LIST})43 # set LIBRARY_DIR
46 string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}")44 exec_program(${MYSQL_CONFIG}
47 list(APPEND MYSQL_ADD_LIBRARIES "${LIB}")45 ARGS --libs_r
48 #message("[DEBUG] MYSQL ADD_LIBRARIES : ${MYSQL_ADD_LIBRARIES}")46 OUTPUT_VARIABLE MY_TMP)
49 endforeach(LIB ${MYSQL_LIB_LIST})47
5048 set(MYSQL_ADD_LIBRARIES "")
51 set(MYSQL_ADD_LIBRARIES_PATH "")49
52 string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}")50 string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}")
53 foreach(LIB ${MYSQL_LIBDIR_LIST})51 foreach(LIB ${MYSQL_LIB_LIST})
54 string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}")52 string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}")
55 list(APPEND MYSQL_ADD_LIBRARIES_PATH "${LIB}")53 list(APPEND MYSQL_ADD_LIBRARIES "${LIB}")
56 #message("[DEBUG] MYSQL ADD_LIBRARIES_PATH : ${MYSQL_ADD_LIBRARIES_PATH}")54 endforeach(LIB ${MYSQL_LIBS})
57 endforeach(LIB ${MYSQL_LIBS})55
5856 set(MYSQL_ADD_LIBRARY_PATH "")
59 else( MYSQL_CONFIG )57
60 set(MYSQL_ADD_LIBRARIES "")58 string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}")
61 list(APPEND MYSQL_ADD_LIBRARIES "mysqlclient_r")59 foreach(LIB ${MYSQL_LIBDIR_LIST})
62 endif( MYSQL_CONFIG )60 string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}")
63endif( UNIX )61 list(APPEND MYSQL_ADD_LIBRARY_PATH "${LIB}")
6462 endforeach(LIB ${MYSQL_LIBS})
65find_path(MYSQL_INCLUDE_DIR63
66 NAMES64 else(MYSQL_CONFIG)
67 mysql.h65 set(MYSQL_ADD_LIBRARIES "")
68 PATHS66 list(APPEND MYSQL_ADD_LIBRARIES "mysqlclient")
69 ${MYSQL_ADD_INCLUDE_PATH}67 endif(MYSQL_CONFIG)
70 /usr/include68else(UNIX)
71 /usr/include/mysql69 set(MYSQL_ADD_INCLUDE_DIR "c:/msys/local/include" CACHE FILEPATH INTERNAL)
70 set(MYSQL_ADD_LIBRARY_PATH "c:/msys/local/lib" CACHE FILEPATH INTERNAL)
71ENDIF(UNIX)
72
73find_path(MYSQL_INCLUDE_DIR mysql.h
72 /usr/local/include74 /usr/local/include
73 /usr/local/include/mysql75 /usr/local/include/mysql
74 /usr/local/mysql/include76 /usr/local/mysql/include
75 "C:/Program Files/MySQL/include"77 /usr/local/mysql/include/mysql
76 "C:/Program Files/MySQL/MySQL Server 5.0/include"78 /usr/include
77 "C:/Program Files/MySQL/MySQL Server 5.1/include"79 /usr/include/mysql
78 "C:/MySQL/include"80 ${MYSQL_ADD_INCLUDE_DIR}
79 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/include"
80 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/include"
81 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/include"
82 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/include"
83 "c:/msys/local/include"
84 DOC
85 "Specify the directory containing mysql.h."
86)81)
8782
88if( UNIX )83set(TMP_MYSQL_LIBRARIES "")
84
89foreach(LIB ${MYSQL_ADD_LIBRARIES})85foreach(LIB ${MYSQL_ADD_LIBRARIES})
90 find_library( MYSQL_LIBRARY 86 find_library("MYSQL_LIBRARIES_${LIB}" NAMES ${LIB}
91 NAMES87 PATHS
92 mysql libmysql ${LIB}88 ${MYSQL_ADD_LIBRARY_PATH}
93 PATHS89 /usr/lib/mysql
94 ${MYSQL_ADD_LIBRARIES_PATH}90 /usr/local/lib
95 /usr/lib91 /usr/local/lib/mysql
96 /usr/lib/mysql92 /usr/local/mysql/lib
97 /usr/local/lib93 )
98 /usr/local/lib/mysql94 list(APPEND TMP_MYSQL_LIBRARIES "${MYSQL_LIBRARIES_${LIB}}")
99 /usr/local/mysql/lib95endforeach(LIB ${MYSQL_ADD_LIBRARIES})
100 "C:/Program Files/MySQL/lib"96
101 "C:/Program Files/MySQL/MySQL Server 5.0/lib/opt"97set(MYSQL_LIBRARIES ${TMP_MYSQL_LIBRARIES} CACHE FILEPATH INTERNAL)
102 "C:/Program Files/MySQL/MySQL Server 5.1/lib/opt"98
103 "C:/MySQL/lib/debug"99if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
104 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt"100 set(MYSQL_FOUND TRUE CACHE INTERNAL "MySQL found")
105 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt"101 message(STATUS "Found MySQL: ${MYSQL_INCLUDE_DIR}, ${MYSQL_LIBRARIES}")
106 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt"102else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
107 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt"103 set(MYSQL_FOUND FALSE CACHE INTERNAL "MySQL found")
108 "c:/msys/local/include"104 message(STATUS "MySQL not found.")
109 DOC "Specify the location of the mysql library here."105endif(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
110 )106
111endforeach(LIB ${MYSQL_ADD_LIBRARY})107mark_as_advanced(MYSQL_INCLUDE_DIR MYSQL_LIBRARIES MYSQL_CFLAGS)
112endif( UNIX )
113
114# On Windows you typically don't need to include any extra libraries
115# to build MYSQL stuff.
116
117if( NOT WIN32 )
118 find_library( MYSQL_EXTRA_LIBRARIES
119 NAMES
120 z zlib
121 PATHS
122 /usr/lib
123 /usr/local/lib
124 DOC
125 "if more libraries are necessary to link in a MySQL client (typically zlib), specify them here."
126 )
127else( NOT WIN32 )
128 set( MYSQL_EXTRA_LIBRARIES "" )
129endif( NOT WIN32 )
130
131if( MYSQL_LIBRARY )
132 if( MYSQL_INCLUDE_DIR )
133 set( MYSQL_FOUND 1 )
134 message(STATUS "Found MySQL library: ${MYSQL_LIBRARY}")
135 message(STATUS "Found MySQL headers: ${MYSQL_INCLUDE_DIR}")
136 else( MYSQL_INCLUDE_DIR )
137 message(FATAL_ERROR "Could not find MySQL headers! Please install the development-libraries and headers.")
138 endif( MYSQL_INCLUDE_DIR )
139 mark_as_advanced( MYSQL_FOUND MYSQL_LIBRARY MYSQL_EXTRA_LIBRARIES MYSQL_INCLUDE_DIR )
140else( MYSQL_LIBRARY )
141 message(FATAL_ERROR "Could not find the MySQL libraries! Please install the development-libraries and headers.")
142endif( MYSQL_LIBRARY )
143108
=== modified file 'docs/usage.rst'
--- docs/usage.rst 2011-04-26 17:46:33 +0000
+++ docs/usage.rst 2011-04-27 19:54:26 +0000
@@ -76,6 +76,10 @@
7676
77 Compress the output files77 Compress the output files
7878
79.. option:: --compress-input, -C
80
81 Use client protocol compression for connections to the MySQL server
82
79.. option:: --build-empty-files, -e83.. option:: --build-empty-files, -e
8084
81 Create empty dump files if there is no data to dump85 Create empty dump files if there is no data to dump
8286
=== modified file 'mydumper.c'
--- mydumper.c 2011-04-27 06:39:15 +0000
+++ mydumper.c 2011-04-27 19:54:26 +0000
@@ -61,6 +61,7 @@
6161
62int need_dummy_read=0;62int need_dummy_read=0;
63int compress_output=0;63int compress_output=0;
64int compress_input=1;
64int killqueries=0;65int killqueries=0;
6566
66gchar *ignore_engines = NULL;67gchar *ignore_engines = NULL;
@@ -88,6 +89,7 @@
88 { "statement-size", 's', 0, G_OPTION_ARG_INT, &statement_size, "Attempted size of INSERT statement in bytes", NULL},89 { "statement-size", 's', 0, G_OPTION_ARG_INT, &statement_size, "Attempted size of INSERT statement in bytes", NULL},
89 { "rows", 'r', 0, G_OPTION_ARG_INT, &rows_per_file, "Try to split tables into chunks of this many rows", NULL},90 { "rows", 'r', 0, G_OPTION_ARG_INT, &rows_per_file, "Try to split tables into chunks of this many rows", NULL},
90 { "compress", 'c', 0, G_OPTION_ARG_NONE, &compress_output, "Compress output files", NULL},91 { "compress", 'c', 0, G_OPTION_ARG_NONE, &compress_output, "Compress output files", NULL},
92 { "compress-input", 'C', 0, G_OPTION_ARG_NONE, &compress_input, "Use compression on the MySQL connection", NULL },
91 { "build-empty-files", 'e', 0, G_OPTION_ARG_NONE, &build_empty_files, "Build dump files even if no data available from table", NULL},93 { "build-empty-files", 'e', 0, G_OPTION_ARG_NONE, &build_empty_files, "Build dump files even if no data available from table", NULL},
92 { "regex", 'x', 0, G_OPTION_ARG_STRING, &regexstring, "Regular expression for 'db.table' matching", NULL},94 { "regex", 'x', 0, G_OPTION_ARG_STRING, &regexstring, "Regular expression for 'db.table' matching", NULL},
93 { "ignore-engines", 'i', 0, G_OPTION_ARG_STRING, &ignore_engines, "Comma delimited list of storage engines to ignore", NULL },95 { "ignore-engines", 'i', 0, G_OPTION_ARG_STRING, &ignore_engines, "Comma delimited list of storage engines to ignore", NULL },
@@ -197,6 +199,9 @@
197199
198 mysql_options(thrconn,MYSQL_READ_DEFAULT_GROUP,"mydumper");200 mysql_options(thrconn,MYSQL_READ_DEFAULT_GROUP,"mydumper");
199201
202 if (compress_input)
203 mysql_options(thrconn,MYSQL_OPT_COMPRESS,NULL);
204
200 if (!mysql_real_connect(thrconn, hostname, username, password, NULL, port, socket_path, 0)) {205 if (!mysql_real_connect(thrconn, hostname, username, password, NULL, port, socket_path, 0)) {
201 g_critical("Failed to connect to database: %s", mysql_error(thrconn));206 g_critical("Failed to connect to database: %s", mysql_error(thrconn));
202 exit(EXIT_FAILURE);207 exit(EXIT_FAILURE);
@@ -256,6 +261,8 @@
256 thrconn= mysql_init(NULL);261 thrconn= mysql_init(NULL);
257 g_mutex_unlock(init_mutex);262 g_mutex_unlock(init_mutex);
258 }263 }
264 if (compress_input)
265 mysql_options(thrconn,MYSQL_OPT_COMPRESS,NULL);
259266
260 if (!mysql_real_connect(thrconn, hostname, username, password, NULL, port, socket_path, 0)) {267 if (!mysql_real_connect(thrconn, hostname, username, password, NULL, port, socket_path, 0)) {
261 g_critical("Failed to connect to database: %s", mysql_error(thrconn));268 g_critical("Failed to connect to database: %s", mysql_error(thrconn));

Subscribers

People subscribed via source and target branches