Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
44a631f1
Commit
44a631f1
authored
Jun 02, 2002
by
monty@hundin.mysql.fi
Browse files
Options
Browse Files
Download
Plain Diff
Merge work:/home/bk/mysql-4.0 into hundin.mysql.fi:/my/bk/mysql-4.0
parents
cde8c0ed
edc6dc48
Changes
40
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
340 additions
and
374 deletions
+340
-374
Docs/mirrors.texi
Docs/mirrors.texi
+6
-5
client/mysql.cc
client/mysql.cc
+134
-138
client/mysqladmin.c
client/mysqladmin.c
+4
-7
client/mysqlbinlog.cc
client/mysqlbinlog.cc
+3
-6
client/mysqlcheck.c
client/mysqlcheck.c
+2
-6
client/mysqldump.c
client/mysqldump.c
+3
-7
client/mysqlimport.c
client/mysqlimport.c
+3
-6
client/mysqlmanager-pwgen.c
client/mysqlmanager-pwgen.c
+3
-6
client/mysqlmanagerc.c
client/mysqlmanagerc.c
+4
-6
client/mysqlshow.c
client/mysqlshow.c
+2
-6
client/mysqltest.c
client/mysqltest.c
+2
-6
client/thread_test.c
client/thread_test.c
+1
-5
extra/my_print_defaults.c
extra/my_print_defaults.c
+3
-6
extra/mysql_install.c
extra/mysql_install.c
+3
-6
extra/perror.c
extra/perror.c
+3
-6
extra/resolve_stack_dump.c
extra/resolve_stack_dump.c
+3
-6
extra/resolveip.c
extra/resolveip.c
+3
-6
include/my_getopt.h
include/my_getopt.h
+1
-0
include/mysys_err.h
include/mysys_err.h
+16
-0
isam/isamchk.c
isam/isamchk.c
+2
-6
isam/pack_isam.c
isam/pack_isam.c
+3
-6
myisam/ft_dump.c
myisam/ft_dump.c
+1
-5
myisam/ft_eval.c
myisam/ft_eval.c
+2
-5
myisam/ft_test1.c
myisam/ft_test1.c
+1
-5
myisam/mi_test1.c
myisam/mi_test1.c
+3
-6
myisam/myisamchk.c
myisam/myisamchk.c
+5
-3
myisam/myisampack.c
myisam/myisampack.c
+3
-6
mysql-test/r/rpl_empty_master_crash.result
mysql-test/r/rpl_empty_master_crash.result
+12
-0
mysql-test/t/rpl_empty_master_crash.test
mysql-test/t/rpl_empty_master_crash.test
+7
-0
mysys/my_getopt.c
mysys/my_getopt.c
+69
-59
sql/gen_lex_hash.cc
sql/gen_lex_hash.cc
+3
-6
sql/mysqld.cc
sql/mysqld.cc
+1
-7
sql/repl_failsafe.cc
sql/repl_failsafe.cc
+3
-0
sql/slave.cc
sql/slave.cc
+0
-2
sql/slave.h
sql/slave.h
+0
-2
sql/sql_parse.cc
sql/sql_parse.cc
+5
-9
sql/sql_repl.cc
sql/sql_repl.cc
+0
-2
sql/sql_repl.h
sql/sql_repl.h
+0
-2
support-files/my-huge.cnf.sh
support-files/my-huge.cnf.sh
+17
-2
tools/mysqlmanager.c
tools/mysqlmanager.c
+4
-7
No files found.
Docs/mirrors.texi
View file @
44a631f1
...
@@ -183,16 +183,16 @@ FTP (@uref{ftp://sunsite.icm.edu.pl/pub/unix/mysql/})
...
@@ -183,16 +183,16 @@ FTP (@uref{ftp://sunsite.icm.edu.pl/pub/unix/mysql/})
WWW (@uref{http://darkstar.ist.utl.pt/mysql/})
WWW (@uref{http://darkstar.ist.utl.pt/mysql/})
FTP (@uref{ftp://darkstar.ist.utl.pt/pub/mysql/})
FTP (@uref{ftp://darkstar.ist.utl.pt/pub/mysql/})
@item
@image{Flags/portugal} Portugal [Netc] @@
WWW (@uref{http://ftp.netc.pt/pub/mysql/})
FTP (@uref{ftp://ftp.netc.pt/pub/mysql/})
@item
@item
@image{Flags/portugal} Portugal [Netviso] @@
@image{Flags/portugal} Portugal [Netviso] @@
WWW (@uref{http://mysql.netvisao.pt/})
WWW (@uref{http://mysql.netvisao.pt/})
FTP (@uref{ftp://mirrors2.netvisao.pt/pub/mysql/})
FTP (@uref{ftp://mirrors2.netvisao.pt/pub/mysql/})
@item
@image{Flags/portugal} Portugal [VIZZAVI] @@
WWW (@uref{http://ftp.vizzavi.pt/pub/mysql/})
FTP (@uref{ftp://ftp.vizzavi.pt/pub/mysql/})
@item
@item
@image{Flags/romania} Romania [roedu.net/Bucharest] @@
@image{Flags/romania} Romania [roedu.net/Bucharest] @@
FTP (@uref{ftp://ftp.roedu.net/pub/mirrors/ftp.mysql.com/})
FTP (@uref{ftp://ftp.roedu.net/pub/mirrors/ftp.mysql.com/})
...
@@ -432,3 +432,4 @@ FTP (@uref{ftp://ftp.is.co.za/linux/mysql/})
...
@@ -432,3 +432,4 @@ FTP (@uref{ftp://ftp.is.co.za/linux/mysql/})
@end itemize
@end itemize
client/mysql.cc
View file @
44a631f1
This diff is collapsed.
Click to expand it.
client/mysqladmin.c
View file @
44a631f1
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
#include <my_pthread.h>
/* because of signal() */
#include <my_pthread.h>
/* because of signal() */
#endif
#endif
#define ADMIN_VERSION "8.3
4
"
#define ADMIN_VERSION "8.3
5
"
#define MAX_MYSQL_VAR 64
#define MAX_MYSQL_VAR 64
#define SHUTDOWN_DEF_TIMEOUT 3600
/* Wait for shutdown */
#define SHUTDOWN_DEF_TIMEOUT 3600
/* Wait for shutdown */
#define MAX_TRUNC_LENGTH 3
#define MAX_TRUNC_LENGTH 3
...
@@ -130,7 +130,7 @@ static struct my_option my_long_options[] =
...
@@ -130,7 +130,7 @@ static struct my_option my_long_options[] =
(
gptr
*
)
&
opt_relative
,
(
gptr
*
)
&
opt_relative
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
(
gptr
*
)
&
opt_relative
,
(
gptr
*
)
&
opt_relative
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
0
,
0
,
0
},
{
"set-variable"
,
'O'
,
{
"set-variable"
,
'O'
,
"Change the value of a variable. Please note that this option is depr
i
cated; you can set variables directly with --variable-name=value."
,
"Change the value of a variable. Please note that this option is depr
e
cated; you can set variables directly with --variable-name=value."
,
0
,
0
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
0
,
0
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"silent"
,
's'
,
"Silently exit if one can't connect to server"
,
{
"silent"
,
's'
,
"Silently exit if one can't connect to server"
,
0
,
0
,
0
,
GET_NO_ARG
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
0
,
0
,
0
,
GET_NO_ARG
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
...
@@ -247,11 +247,8 @@ int main(int argc,char *argv[])
...
@@ -247,11 +247,8 @@ int main(int argc,char *argv[])
free_defaults()
free_defaults()
*/
*/
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
argc
==
0
)
if
(
argc
==
0
)
{
{
usage
();
usage
();
...
...
client/mysqlbinlog.cc
View file @
44a631f1
...
@@ -124,7 +124,7 @@ static void die(const char* fmt, ...)
...
@@ -124,7 +124,7 @@ static void die(const char* fmt, ...)
static
void
print_version
()
static
void
print_version
()
{
{
printf
(
"%s Ver 2.
2
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
printf
(
"%s Ver 2.
3
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
}
}
...
@@ -223,11 +223,8 @@ static int parse_args(int *argc, char*** argv)
...
@@ -223,11 +223,8 @@ static int parse_args(int *argc, char*** argv)
result_file
=
stdout
;
result_file
=
stdout
;
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
return
0
;
return
0
;
}
}
...
...
client/mysqlcheck.c
View file @
44a631f1
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
#define CHECK_VERSION "2.
3
"
#define CHECK_VERSION "2.
4
"
#include "client_priv.h"
#include "client_priv.h"
#include <m_ctype.h>
#include <m_ctype.h>
...
@@ -265,11 +265,7 @@ static int get_options(int *argc, char ***argv)
...
@@ -265,11 +265,7 @@ static int get_options(int *argc, char ***argv)
load_defaults
(
"my"
,
load_default_groups
,
argc
,
argv
);
load_defaults
(
"my"
,
load_default_groups
,
argc
,
argv
);
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
!
what_to_do
)
if
(
!
what_to_do
)
{
{
...
...
client/mysqldump.c
View file @
44a631f1
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
** and adapted to mysqldump 05/11/01 by Jani Tolonen
** and adapted to mysqldump 05/11/01 by Jani Tolonen
*/
*/
#define DUMP_VERSION "9.0
5
"
#define DUMP_VERSION "9.0
6
"
#include <my_global.h>
#include <my_global.h>
#include <my_sys.h>
#include <my_sys.h>
...
@@ -180,7 +180,7 @@ static struct my_option my_long_options[] =
...
@@ -180,7 +180,7 @@ static struct my_option my_long_options[] =
{
"no-data"
,
'd'
,
"No row information."
,
(
gptr
*
)
&
dFlag
,
(
gptr
*
)
&
dFlag
,
0
,
{
"no-data"
,
'd'
,
"No row information."
,
(
gptr
*
)
&
dFlag
,
(
gptr
*
)
&
dFlag
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"set-variable"
,
'O'
,
{
"set-variable"
,
'O'
,
"Change the value of a variable. Please note that this option is depr
i
cated; you can set variables directly with --variable-name=value."
,
"Change the value of a variable. Please note that this option is depr
e
cated; you can set variables directly with --variable-name=value."
,
0
,
0
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
0
,
0
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"opt"
,
OPT_OPTIMIZE
,
{
"opt"
,
OPT_OPTIMIZE
,
"Same as --add-drop-table --add-locks --all --quick --extended-insert --lock-tables --disable-keys"
,
"Same as --add-drop-table --add-locks --all --quick --extended-insert --lock-tables --disable-keys"
,
...
@@ -360,11 +360,7 @@ static int get_options(int *argc, char ***argv)
...
@@ -360,11 +360,7 @@ static int get_options(int *argc, char ***argv)
load_defaults
(
"my"
,
load_default_groups
,
argc
,
argv
);
load_defaults
(
"my"
,
load_default_groups
,
argc
,
argv
);
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
opt_delayed
)
if
(
opt_delayed
)
opt_lock
=
0
;
/* Can't have lock with delayed */
opt_lock
=
0
;
/* Can't have lock with delayed */
...
...
client/mysqlimport.c
View file @
44a631f1
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
** * *
** * *
** *************************
** *************************
*/
*/
#define IMPORT_VERSION "3.
3
"
#define IMPORT_VERSION "3.
4
"
#include "client_priv.h"
#include "client_priv.h"
#include "mysql_version.h"
#include "mysql_version.h"
...
@@ -204,11 +204,8 @@ static int get_options(int *argc, char ***argv)
...
@@ -204,11 +204,8 @@ static int get_options(int *argc, char ***argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
enclosed
&&
opt_enclosed
)
if
(
enclosed
&&
opt_enclosed
)
{
{
fprintf
(
stderr
,
"You can't use ..enclosed.. and ..optionally-enclosed.. at the same time.
\n
"
);
fprintf
(
stderr
,
"You can't use ..enclosed.. and ..optionally-enclosed.. at the same time.
\n
"
);
...
...
client/mysqlmanager-pwgen.c
View file @
44a631f1
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#define MANAGER_PWGEN_VERSION "1.
3
"
#define MANAGER_PWGEN_VERSION "1.
4
"
#include <my_global.h>
#include <my_global.h>
#include <m_ctype.h>
#include <m_ctype.h>
...
@@ -96,11 +96,8 @@ int parse_args(int argc, char** argv)
...
@@ -96,11 +96,8 @@ int parse_args(int argc, char** argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
return
0
;
return
0
;
}
}
...
...
client/mysqlmanagerc.c
View file @
44a631f1
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#define MANAGER_CLIENT_VERSION "1.
3
"
#define MANAGER_CLIENT_VERSION "1.
4
"
#include <my_global.h>
#include <my_global.h>
#include <mysql.h>
#include <mysql.h>
...
@@ -132,12 +132,10 @@ int parse_args(int argc, char **argv)
...
@@ -132,12 +132,10 @@ int parse_args(int argc, char **argv)
load_defaults
(
"my"
,
load_default_groups
,
&
argc
,
&
argv
);
load_defaults
(
"my"
,
load_default_groups
,
&
argc
,
&
argv
);
default_argv
=
argv
;
default_argv
=
argv
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
return
0
;
return
0
;
}
}
int
main
(
int
argc
,
char
**
argv
)
int
main
(
int
argc
,
char
**
argv
)
...
...
client/mysqlshow.c
View file @
44a631f1
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
/* Show databases, tables or columns */
/* Show databases, tables or columns */
#define SHOW_VERSION "9.
3
"
#define SHOW_VERSION "9.
4
"
#include <my_global.h>
#include <my_global.h>
#include "client_priv.h"
#include "client_priv.h"
...
@@ -241,11 +241,7 @@ get_options(int *argc,char ***argv)
...
@@ -241,11 +241,7 @@ get_options(int *argc,char ***argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
tty_password
)
if
(
tty_password
)
opt_password
=
get_tty_password
(
NullS
);
opt_password
=
get_tty_password
(
NullS
);
...
...
client/mysqltest.c
View file @
44a631f1
...
@@ -42,7 +42,7 @@
...
@@ -42,7 +42,7 @@
**********************************************************************/
**********************************************************************/
#define MTEST_VERSION "1.2
2
"
#define MTEST_VERSION "1.2
3
"
#include <my_global.h>
#include <my_global.h>
#include <mysql_embed.h>
#include <mysql_embed.h>
...
@@ -1957,11 +1957,7 @@ int parse_args(int argc, char **argv)
...
@@ -1957,11 +1957,7 @@ int parse_args(int argc, char **argv)
default_argv
=
argv
;
default_argv
=
argv
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
argc
>
1
)
if
(
argc
>
1
)
{
{
...
...
client/thread_test.c
View file @
44a631f1
...
@@ -173,11 +173,7 @@ static void get_options(int argc, char **argv)
...
@@ -173,11 +173,7 @@ static void get_options(int argc, char **argv)
load_defaults
(
"my"
,
load_default_groups
,
&
argc
,
&
argv
);
load_defaults
(
"my"
,
load_default_groups
,
&
argc
,
&
argv
);
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
free_defaults
(
argv
);
free_defaults
(
argv
);
if
(
tty_password
)
if
(
tty_password
)
...
...
extra/my_print_defaults.c
View file @
44a631f1
...
@@ -55,7 +55,7 @@ static struct my_option my_long_options[] =
...
@@ -55,7 +55,7 @@ static struct my_option my_long_options[] =
static
void
usage
(
my_bool
version
)
static
void
usage
(
my_bool
version
)
{
{
printf
(
"%s Ver 1.
4
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
printf
(
"%s Ver 1.
5
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
MACHINE_TYPE
);
if
(
version
)
if
(
version
)
return
;
return
;
...
@@ -92,11 +92,8 @@ static int get_options(int *argc,char ***argv)
...
@@ -92,11 +92,8 @@ static int get_options(int *argc,char ***argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
*
argc
<
1
)
if
(
*
argc
<
1
)
{
{
usage
(
0
);
usage
(
0
);
...
...
extra/mysql_install.c
View file @
44a631f1
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
/* Install or upgrade MySQL server. By Sasha Pachev <sasha@mysql.com>
/* Install or upgrade MySQL server. By Sasha Pachev <sasha@mysql.com>
*/
*/
#define INSTALL_VERSION "1.
1
"
#define INSTALL_VERSION "1.
2
"
#define DONT_USE_RAID
#define DONT_USE_RAID
#include <my_global.h>
#include <my_global.h>
...
@@ -219,11 +219,8 @@ static int parse_args(int argc, char **argv)
...
@@ -219,11 +219,8 @@ static int parse_args(int argc, char **argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
return
0
;
return
0
;
}
}
...
...
extra/perror.c
View file @
44a631f1
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
/* Return error-text for system error messages and nisam messages */
/* Return error-text for system error messages and nisam messages */
#define PERROR_VERSION "2.
8
"
#define PERROR_VERSION "2.
9
"
#include <my_global.h>
#include <my_global.h>
#include <my_sys.h>
#include <my_sys.h>
...
@@ -141,11 +141,8 @@ static int get_options(int *argc,char ***argv)
...
@@ -141,11 +141,8 @@ static int get_options(int *argc,char ***argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
!*
argc
&&
!
print_all_codes
)
if
(
!*
argc
&&
!
print_all_codes
)
{
{
usage
();
usage
();
...
...
extra/resolve_stack_dump.c
View file @
44a631f1
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
#define INIT_SYM_TABLE 4096
#define INIT_SYM_TABLE 4096
#define INC_SYM_TABLE 4096
#define INC_SYM_TABLE 4096
#define MAX_SYM_SIZE 128
#define MAX_SYM_SIZE 128
#define DUMP_VERSION "1.
3
"
#define DUMP_VERSION "1.
4
"
#define HEX_INVALID (uchar)255
#define HEX_INVALID (uchar)255
typedef
ulong
my_long_addr_t
;
/* at some point, we need to fix configure
typedef
ulong
my_long_addr_t
;
/* at some point, we need to fix configure
...
@@ -121,11 +121,8 @@ static int parse_args(int argc, char **argv)
...
@@ -121,11 +121,8 @@ static int parse_args(int argc, char **argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
/*
/*
The following code is to make the command compatible with the old
The following code is to make the command compatible with the old
version that required one to use the -n and -s options
version that required one to use the -n and -s options
...
...
extra/resolveip.c
View file @
44a631f1
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
/* Resolves IP's to hostname and hostnames to IP's */
/* Resolves IP's to hostname and hostnames to IP's */
#define RESOLVE_VERSION "2.
1
"
#define RESOLVE_VERSION "2.
2
"
#include <my_global.h>
#include <my_global.h>
#include <m_ctype.h>
#include <m_ctype.h>
...
@@ -94,11 +94,8 @@ static int get_options(int *argc,char ***argv)
...
@@ -94,11 +94,8 @@ static int get_options(int *argc,char ***argv)
/* load_defaults("my",load_default_groups,argc,argv); */
/* load_defaults("my",load_default_groups,argc,argv); */
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
*
argc
==
0
)
if
(
*
argc
==
0
)
{
{
usage
();
usage
();
...
...
include/my_getopt.h
View file @
44a631f1
...
@@ -39,6 +39,7 @@ struct my_option
...
@@ -39,6 +39,7 @@ struct my_option
};
};
extern
char
*
disabled_my_option
;
extern
char
*
disabled_my_option
;
extern
my_bool
my_getopt_print_errors
;
extern
int
handle_options
(
int
*
argc
,
char
***
argv
,
extern
int
handle_options
(
int
*
argc
,
char
***
argv
,
const
struct
my_option
*
longopts
,
const
struct
my_option
*
longopts
,
...
...
include/mysys_err.h
View file @
44a631f1
...
@@ -54,7 +54,23 @@ extern const char * NEAR globerrs[]; /* my_error_messages is here */
...
@@ -54,7 +54,23 @@ extern const char * NEAR globerrs[]; /* my_error_messages is here */
#define EE_CANT_SYMLINK 25
#define EE_CANT_SYMLINK 25
#define EE_REALPATH 26
#define EE_REALPATH 26
/* exit codes for all MySQL programs */
#define EXIT_UNSPECIFIED_ERROR 1
#define EXIT_UNKNOWN_OPTION 2
#define EXIT_AMBIGUOUS_OPTION 3
#define EXIT_NO_ARGUMENT_ALLOWED 4
#define EXIT_ARGUMENT_REQUIRED 5
#define EXIT_VAR_PREFIX_NOT_UNIQUE 6
#define EXIT_UNKNOWN_VARIABLE 7
#define EXIT_OUT_OF_MEMORY 8
#define EXIT_UNKNOWN_SUFFIX 9
#define EXIT_NO_PTR_TO_VARIABLE 10
#define EXIT_CANNOT_CONNECT_TO_SERVICE 11
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
#endif
#endif
isam/isamchk.c
View file @
44a631f1
...
@@ -335,7 +335,7 @@ static struct my_option my_long_options[] =
...
@@ -335,7 +335,7 @@ static struct my_option my_long_options[] =
static
void
print_version
(
void
)
static
void
print_version
(
void
)
{
{
printf
(
"%s Ver 6.0
0
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
printf
(
"%s Ver 6.0
1
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
MACHINE_TYPE
);
}
}
...
@@ -665,11 +665,7 @@ static void get_options(register int *argc, register char ***argv)
...
@@ -665,11 +665,7 @@ static void get_options(register int *argc, register char ***argv)
testflag
|=
T_WRITE_LOOP
;
testflag
|=
T_WRITE_LOOP
;
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
*
argc
==
0
)
if
(
*
argc
==
0
)
{
{
...
...
isam/pack_isam.c
View file @
44a631f1
...
@@ -278,7 +278,7 @@ static struct my_option my_long_options[] =
...
@@ -278,7 +278,7 @@ static struct my_option my_long_options[] =
static
void
print_version
(
void
)
static
void
print_version
(
void
)
{
{
printf
(
"%s Ver 5.
9
for %s on %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
printf
(
"%s Ver 5.
10
for %s on %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
}
}
static
void
usage
(
void
)
static
void
usage
(
void
)
...
@@ -353,11 +353,8 @@ static void get_options(int *argc, char ***argv)
...
@@ -353,11 +353,8 @@ static void get_options(int *argc, char ***argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
my_progname
=
argv
[
0
][
0
];
my_progname
=
argv
[
0
][
0
];
if
(
isatty
(
fileno
(
stdout
)))
if
(
isatty
(
fileno
(
stdout
)))
write_loop
=
1
;
write_loop
=
1
;
...
...
myisam/ft_dump.c
View file @
44a631f1
...
@@ -245,11 +245,7 @@ static void get_options(int argc, char *argv[])
...
@@ -245,11 +245,7 @@ static void get_options(int argc, char *argv[])
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
}
/* get options */
}
/* get options */
...
...
myisam/ft_eval.c
View file @
44a631f1
...
@@ -179,11 +179,8 @@ static void get_options(int argc, char *argv[])
...
@@ -179,11 +179,8 @@ static void get_options(int argc, char *argv[])
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
!
(
d_file
=
argv
[
optind
]))
print_error
(
1
,
"No d_file"
);
if
(
!
(
d_file
=
argv
[
optind
]))
print_error
(
1
,
"No d_file"
);
if
(
!
(
df
=
fopen
(
d_file
,
"r"
)))
if
(
!
(
df
=
fopen
(
d_file
,
"r"
)))
print_error
(
1
,
"fopen(%s)"
,
d_file
);
print_error
(
1
,
"fopen(%s)"
,
d_file
);
...
...
myisam/ft_test1.c
View file @
44a631f1
...
@@ -284,11 +284,7 @@ static void get_options(int argc,char *argv[])
...
@@ -284,11 +284,7 @@ static void get_options(int argc,char *argv[])
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
return
;
return
;
}
/* get options */
}
/* get options */
...
...
myisam/mi_test1.c
View file @
44a631f1
...
@@ -623,7 +623,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
...
@@ -623,7 +623,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
key_cacheing
=
1
;
key_cacheing
=
1
;
break
;
break
;
case
'V'
:
case
'V'
:
printf
(
"test1 Ver 1.
1
\n
"
);
printf
(
"test1 Ver 1.
2
\n
"
);
exit
(
0
);
exit
(
0
);
case
'#'
:
case
'#'
:
DEBUGGER_ON
;
DEBUGGER_ON
;
...
@@ -644,11 +644,8 @@ static void get_options(int argc, char *argv[])
...
@@ -644,11 +644,8 @@ static void get_options(int argc, char *argv[])
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
return
;
return
;
}
/* get options */
}
/* get options */
...
...
myisam/myisamchk.c
View file @
44a631f1
...
@@ -292,7 +292,7 @@ static struct my_option my_long_options[] =
...
@@ -292,7 +292,7 @@ static struct my_option my_long_options[] =
static
void
print_version
(
void
)
static
void
print_version
(
void
)
{
{
printf
(
"%s Ver 2.
5
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
printf
(
"%s Ver 2.
6
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
MACHINE_TYPE
);
}
}
...
@@ -615,13 +615,15 @@ get_one_option(int optid,
...
@@ -615,13 +615,15 @@ get_one_option(int optid,
static
void
get_options
(
register
int
*
argc
,
register
char
***
argv
)
static
void
get_options
(
register
int
*
argc
,
register
char
***
argv
)
{
{
int
ho_error
;
load_defaults
(
"my"
,
load_default_groups
,
argc
,
argv
);
load_defaults
(
"my"
,
load_default_groups
,
argc
,
argv
);
default_argv
=
*
argv
;
default_argv
=
*
argv
;
if
(
isatty
(
fileno
(
stdout
)))
if
(
isatty
(
fileno
(
stdout
)))
check_param
.
testflag
|=
T_WRITE_LOOP
;
check_param
.
testflag
|=
T_WRITE_LOOP
;
if
(
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
))
if
(
(
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)
))
exit
(
1
);
exit
(
ho_error
);
/* If using repair, then update checksum if one uses --update-state */
/* If using repair, then update checksum if one uses --update-state */
if
((
check_param
.
testflag
&
T_UPDATE_STATE
)
&&
if
((
check_param
.
testflag
&
T_UPDATE_STATE
)
&&
...
...
myisam/myisampack.c
View file @
44a631f1
...
@@ -269,7 +269,7 @@ static struct my_option my_long_options[] =
...
@@ -269,7 +269,7 @@ static struct my_option my_long_options[] =
static
void
print_version
(
void
)
static
void
print_version
(
void
)
{
{
printf
(
"%s Ver 1.2
0
for %s on %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
printf
(
"%s Ver 1.2
1
for %s on %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
}
}
static
void
usage
(
void
)
static
void
usage
(
void
)
...
@@ -347,11 +347,8 @@ static void get_options(int *argc,char ***argv)
...
@@ -347,11 +347,8 @@ static void get_options(int *argc,char ***argv)
write_loop
=
1
;
write_loop
=
1
;
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
argc
,
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
!*
argc
)
if
(
!*
argc
)
{
{
usage
();
usage
();
...
...
mysql-test/r/rpl_empty_master_crash.result
0 → 100644
View file @
44a631f1
slave stop;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
slave start;
use test;
drop table if exists t1;
show slave status;
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
0 0 0 0 No No 0 0 0 0
load table t1 from master;
Error in fetch_master_table
mysql-test/t/rpl_empty_master_crash.test
0 → 100644
View file @
44a631f1
source
include
/
master
-
slave
.
inc
;
connection
master
;
use
test
;
drop
table
if
exists
t1
;
show
slave
status
;
--
error
1218
load
table
t1
from
master
;
mysys/my_getopt.c
View file @
44a631f1
...
@@ -20,6 +20,7 @@
...
@@ -20,6 +20,7 @@
#include <my_getopt.h>
#include <my_getopt.h>
#include <assert.h>
#include <assert.h>
#include <my_sys.h>
#include <my_sys.h>
#include <mysys_err.h>
static
int
findopt
(
char
*
optpat
,
uint
length
,
static
int
findopt
(
char
*
optpat
,
uint
length
,
const
struct
my_option
**
opt_res
,
const
struct
my_option
**
opt_res
,
...
@@ -42,17 +43,11 @@ static const char *special_opt_prefix[]=
...
@@ -42,17 +43,11 @@ static const char *special_opt_prefix[]=
char
*
disabled_my_option
=
(
char
*
)
"0"
;
char
*
disabled_my_option
=
(
char
*
)
"0"
;
/* Return error values from handle_options */
/* This is a flag that can be set in client programs. 0 means that
my_getopt will not print error messages, but the client should do
it by itself */
#define ERR_UNKNOWN_OPTION 1
my_bool
my_getopt_print_errors
=
1
;
#define ERR_AMBIGUOUS_OPTION 2
#define ERR_NO_ARGUMENT_ALLOWED 3
#define ERR_ARGUMENT_REQUIRED 4
#define ERR_VAR_PREFIX_NOT_UNIQUE 5
#define ERR_UNKNOWN_VARIABLE 6
#define ERR_OUT_OF_MEMORY 7
#define ERR_UNKNOWN_SUFFIX 8
#define ERR_NO_PTR_TO_VARIABLE 9
/*
/*
...
@@ -106,9 +101,10 @@ int handle_options(int *argc, char ***argv,
...
@@ -106,9 +101,10 @@ int handle_options(int *argc, char ***argv,
/* the argument must be in next argv */
/* the argument must be in next argv */
if
(
!*++
pos
)
if
(
!*++
pos
)
{
{
fprintf
(
stderr
,
"%s: Option '-O' requires an argument
\n
"
,
if
(
my_getopt_print_errors
)
progname
);
fprintf
(
stderr
,
"%s: Option '-O' requires an argument
\n
"
,
return
ERR_ARGUMENT_REQUIRED
;
progname
);
return
EXIT_ARGUMENT_REQUIRED
;
}
}
cur_arg
=
*
pos
;
cur_arg
=
*
pos
;
(
*
argc
)
--
;
(
*
argc
)
--
;
...
@@ -128,10 +124,11 @@ int handle_options(int *argc, char ***argv,
...
@@ -128,10 +124,11 @@ int handle_options(int *argc, char ***argv,
cur_arg
+=
14
;
cur_arg
+=
14
;
if
(
!*
cur_arg
)
if
(
!*
cur_arg
)
{
{
fprintf
(
stderr
,
if
(
my_getopt_print_errors
)
"%s: Option '--set-variable' requires an argument
\n
"
,
fprintf
(
stderr
,
progname
);
"%s: Option '--set-variable' requires an argument
\n
"
,
return
ERR_ARGUMENT_REQUIRED
;
progname
);
return
EXIT_ARGUMENT_REQUIRED
;
}
}
}
}
else
if
(
cur_arg
[
14
])
/* garbage, or another option. break out */
else
if
(
cur_arg
[
14
])
/* garbage, or another option. break out */
...
@@ -141,10 +138,11 @@ int handle_options(int *argc, char ***argv,
...
@@ -141,10 +138,11 @@ int handle_options(int *argc, char ***argv,
/* the argument must be in next argv */
/* the argument must be in next argv */
if
(
!*++
pos
)
if
(
!*++
pos
)
{
{
fprintf
(
stderr
,
if
(
my_getopt_print_errors
)
"%s: Option '--set-variable' requires an argument
\n
"
,
fprintf
(
stderr
,
progname
);
"%s: Option '--set-variable' requires an argument
\n
"
,
return
ERR_ARGUMENT_REQUIRED
;
progname
);
return
EXIT_ARGUMENT_REQUIRED
;
}
}
cur_arg
=
*
pos
;
cur_arg
=
*
pos
;
(
*
argc
)
--
;
(
*
argc
)
--
;
...
@@ -200,11 +198,12 @@ int handle_options(int *argc, char ***argv,
...
@@ -200,11 +198,12 @@ int handle_options(int *argc, char ***argv,
{
{
if
(
opt_found
>
1
)
if
(
opt_found
>
1
)
{
{
fprintf
(
stderr
,
if
(
my_getopt_print_errors
)
"%s: ambiguous option '--%s-%s' (--%s-%s)
\n
"
,
fprintf
(
stderr
,
progname
,
special_opt_prefix
[
i
],
cur_arg
,
"%s: ambiguous option '--%s-%s' (--%s-%s)
\n
"
,
special_opt_prefix
[
i
],
prev_found
);
progname
,
special_opt_prefix
[
i
],
cur_arg
,
return
ERR_AMBIGUOUS_OPTION
;
special_opt_prefix
[
i
],
prev_found
);
return
EXIT_AMBIGUOUS_OPTION
;
}
}
if
(
i
<
DISABLE_OPTION_COUNT
)
if
(
i
<
DISABLE_OPTION_COUNT
)
optend
=
disabled_my_option
;
optend
=
disabled_my_option
;
...
@@ -224,19 +223,21 @@ int handle_options(int *argc, char ***argv,
...
@@ -224,19 +223,21 @@ int handle_options(int *argc, char ***argv,
{
{
if
(
must_be_var
)
if
(
must_be_var
)
{
{
fprintf
(
stderr
,
if
(
my_getopt_print_errors
)
"%s: %s: unknown variable '%s'
\n
"
,
progname
,
fprintf
(
stderr
,
option_is_loose
?
"WARNING"
:
"ERROR"
,
cur_arg
);
"%s: %s: unknown variable '%s'
\n
"
,
progname
,
option_is_loose
?
"WARNING"
:
"ERROR"
,
cur_arg
);
if
(
!
option_is_loose
)
if
(
!
option_is_loose
)
return
E
RR
_UNKNOWN_VARIABLE
;
return
E
XIT
_UNKNOWN_VARIABLE
;
}
}
else
else
{
{
fprintf
(
stderr
,
if
(
my_getopt_print_errors
)
"%s: %s: unknown option '--%s'
\n
"
,
progname
,
fprintf
(
stderr
,
option_is_loose
?
"WARNING"
:
"ERROR"
,
cur_arg
);
"%s: %s: unknown option '--%s'
\n
"
,
progname
,
option_is_loose
?
"WARNING"
:
"ERROR"
,
cur_arg
);
if
(
!
option_is_loose
)
if
(
!
option_is_loose
)
return
E
RR
_UNKNOWN_OPTION
;
return
E
XIT
_UNKNOWN_OPTION
;
}
}
if
(
option_is_loose
)
if
(
option_is_loose
)
{
{
...
@@ -249,30 +250,34 @@ int handle_options(int *argc, char ***argv,
...
@@ -249,30 +250,34 @@ int handle_options(int *argc, char ***argv,
{
{
if
(
must_be_var
)
if
(
must_be_var
)
{
{
fprintf
(
stderr
,
"%s: variable prefix '%s' is not unique
\n
"
,
if
(
my_getopt_print_errors
)
progname
,
cur_arg
);
fprintf
(
stderr
,
"%s: variable prefix '%s' is not unique
\n
"
,
return
ERR_VAR_PREFIX_NOT_UNIQUE
;
progname
,
cur_arg
);
return
EXIT_VAR_PREFIX_NOT_UNIQUE
;
}
}
else
else
{
{
fprintf
(
stderr
,
"%s: ambiguous option '--%s' (%s, %s)
\n
"
,
if
(
my_getopt_print_errors
)
progname
,
cur_arg
,
prev_found
,
optp
->
name
);
fprintf
(
stderr
,
"%s: ambiguous option '--%s' (%s, %s)
\n
"
,
return
ERR_AMBIGUOUS_OPTION
;
progname
,
cur_arg
,
prev_found
,
optp
->
name
);
return
EXIT_AMBIGUOUS_OPTION
;
}
}
}
}
if
(
must_be_var
&&
(
!
optp
->
value
||
optp
->
var_type
==
GET_BOOL
))
if
(
must_be_var
&&
(
!
optp
->
value
||
optp
->
var_type
==
GET_BOOL
))
{
{
fprintf
(
stderr
,
"%s: option '%s' cannot take an argument
\n
"
,
if
(
my_getopt_print_errors
)
progname
,
optp
->
name
);
fprintf
(
stderr
,
"%s: option '%s' cannot take an argument
\n
"
,
return
ERR_NO_ARGUMENT_ALLOWED
;
progname
,
optp
->
name
);
return
EXIT_NO_ARGUMENT_ALLOWED
;
}
}
if
(
optp
->
arg_type
==
NO_ARG
)
if
(
optp
->
arg_type
==
NO_ARG
)
{
{
if
(
optend
&&
!
special_used
)
if
(
optend
&&
!
special_used
)
{
{
fprintf
(
stderr
,
"%s: option '--%s' cannot take an argument
\n
"
,
if
(
my_getopt_print_errors
)
progname
,
optp
->
name
);
fprintf
(
stderr
,
"%s: option '--%s' cannot take an argument
\n
"
,
return
ERR_NO_ARGUMENT_ALLOWED
;
progname
,
optp
->
name
);
return
EXIT_NO_ARGUMENT_ALLOWED
;
}
}
if
(
optp
->
var_type
==
GET_BOOL
)
if
(
optp
->
var_type
==
GET_BOOL
)
{
{
...
@@ -306,9 +311,10 @@ int handle_options(int *argc, char ***argv,
...
@@ -306,9 +311,10 @@ int handle_options(int *argc, char ***argv,
/* Check if there are more arguments after this one */
/* Check if there are more arguments after this one */
if
(
!*++
pos
)
if
(
!*++
pos
)
{
{
fprintf
(
stderr
,
"%s: option '--%s' requires an argument
\n
"
,
if
(
my_getopt_print_errors
)
progname
,
optp
->
name
);
fprintf
(
stderr
,
"%s: option '--%s' requires an argument
\n
"
,
return
ERR_ARGUMENT_REQUIRED
;
progname
,
optp
->
name
);
return
EXIT_ARGUMENT_REQUIRED
;
}
}
argument
=
*
pos
;
argument
=
*
pos
;
(
*
argc
)
--
;
(
*
argc
)
--
;
...
@@ -318,8 +324,9 @@ int handle_options(int *argc, char ***argv,
...
@@ -318,8 +324,9 @@ int handle_options(int *argc, char ***argv,
}
}
else
/* must be short option */
else
/* must be short option */
{
{
for
(
optend
=
cur_arg
;
*
optend
;
optend
++
,
opt_found
=
0
)
for
(
optend
=
cur_arg
;
*
optend
;
optend
++
)
{
{
opt_found
=
0
;
for
(
optp
=
longopts
;
optp
->
id
;
optp
++
)
for
(
optp
=
longopts
;
optp
->
id
;
optp
++
)
{
{
if
(
optp
->
id
==
(
int
)
(
uchar
)
*
optend
)
if
(
optp
->
id
==
(
int
)
(
uchar
)
*
optend
)
...
@@ -347,9 +354,11 @@ int handle_options(int *argc, char ***argv,
...
@@ -347,9 +354,11 @@ int handle_options(int *argc, char ***argv,
/* Check if there are more arguments after this one */
/* Check if there are more arguments after this one */
if
(
!*++
pos
)
if
(
!*++
pos
)
{
{
fprintf
(
stderr
,
"%s: option '-%c' requires an argument
\n
"
,
if
(
my_getopt_print_errors
)
progname
,
optp
->
id
);
fprintf
(
stderr
,
return
ERR_ARGUMENT_REQUIRED
;
"%s: option '-%c' requires an argument
\n
"
,
progname
,
optp
->
id
);
return
EXIT_ARGUMENT_REQUIRED
;
}
}
argument
=
*
pos
;
argument
=
*
pos
;
(
*
argc
)
--
;
(
*
argc
)
--
;
...
@@ -369,9 +378,10 @@ int handle_options(int *argc, char ***argv,
...
@@ -369,9 +378,10 @@ int handle_options(int *argc, char ***argv,
}
}
if
(
!
opt_found
)
if
(
!
opt_found
)
{
{
fprintf
(
stderr
,
if
(
my_getopt_print_errors
)
"%s: unknown option '-%c'
\n
"
,
progname
,
*
cur_arg
);
fprintf
(
stderr
,
return
ERR_UNKNOWN_OPTION
;
"%s: unknown option '-%c'
\n
"
,
progname
,
*
optend
);
return
EXIT_UNKNOWN_OPTION
;
}
}
}
}
(
*
argc
)
--
;
/* option handled (short), decrease argument count */
(
*
argc
)
--
;
/* option handled (short), decrease argument count */
...
@@ -412,7 +422,7 @@ static int setval (const struct my_option *opts, char *argument,
...
@@ -412,7 +422,7 @@ static int setval (const struct my_option *opts, char *argument,
opts
->
u_max_value
:
opts
->
value
;
opts
->
u_max_value
:
opts
->
value
;
if
(
!
result_pos
)
if
(
!
result_pos
)
return
E
RR
_NO_PTR_TO_VARIABLE
;
return
E
XIT
_NO_PTR_TO_VARIABLE
;
switch
(
opts
->
var_type
)
{
switch
(
opts
->
var_type
)
{
case
GET_INT
:
case
GET_INT
:
...
@@ -437,13 +447,13 @@ static int setval (const struct my_option *opts, char *argument,
...
@@ -437,13 +447,13 @@ static int setval (const struct my_option *opts, char *argument,
my_free
((
*
(
char
**
)
result_pos
),
my_free
((
*
(
char
**
)
result_pos
),
MYF
(
MY_WME
|
MY_FAE
));
MYF
(
MY_WME
|
MY_FAE
));
if
(
!
(
*
((
char
**
)
result_pos
)
=
my_strdup
(
argument
,
MYF
(
MY_WME
))))
if
(
!
(
*
((
char
**
)
result_pos
)
=
my_strdup
(
argument
,
MYF
(
MY_WME
))))
return
E
RR
_OUT_OF_MEMORY
;
return
E
XIT
_OUT_OF_MEMORY
;
break
;
break
;
default:
/* dummy default to avoid compiler warnings */
default:
/* dummy default to avoid compiler warnings */
break
;
break
;
}
}
if
(
err
)
if
(
err
)
return
E
RR
_UNKNOWN_SUFFIX
;
return
E
XIT
_UNKNOWN_SUFFIX
;
}
}
return
0
;
return
0
;
}
}
...
...
sql/gen_lex_hash.cc
View file @
44a631f1
...
@@ -356,7 +356,7 @@ void print_arrays()
...
@@ -356,7 +356,7 @@ void print_arrays()
static
void
usage
(
int
version
)
static
void
usage
(
int
version
)
{
{
printf
(
"%s Ver 3.
4
Distrib %s, for %s (%s)
\n
"
,
printf
(
"%s Ver 3.
5
Distrib %s, for %s (%s)
\n
"
,
my_progname
,
MYSQL_SERVER_VERSION
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
my_progname
,
MYSQL_SERVER_VERSION
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
if
(
version
)
if
(
version
)
return
;
return
;
...
@@ -394,11 +394,8 @@ static int get_options(int argc, char **argv)
...
@@ -394,11 +394,8 @@ static int get_options(int argc, char **argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
if
(
argc
>=
1
)
if
(
argc
>=
1
)
{
{
usage
(
0
);
usage
(
0
);
...
...
sql/mysqld.cc
View file @
44a631f1
...
@@ -3053,7 +3053,6 @@ static struct my_option my_long_options[] =
...
@@ -3053,7 +3053,6 @@ static struct my_option my_long_options[] =
*/
*/
{
"memlock"
,
OPT_MEMLOCK
,
"Lock mysqld in memory"
,
(
gptr
*
)
&
locked_in_memory
,
{
"memlock"
,
OPT_MEMLOCK
,
"Lock mysqld in memory"
,
(
gptr
*
)
&
locked_in_memory
,
(
gptr
*
)
&
locked_in_memory
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
(
gptr
*
)
&
locked_in_memory
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
#ifndef DBUG_OFF
{
"disconnect-slave-event-count"
,
OPT_DISCONNECT_SLAVE_EVENT_COUNT
,
{
"disconnect-slave-event-count"
,
OPT_DISCONNECT_SLAVE_EVENT_COUNT
,
"Undocumented: Meant for debugging and testing of replication"
,
"Undocumented: Meant for debugging and testing of replication"
,
(
gptr
*
)
&
disconnect_slave_event_count
,
(
gptr
*
)
&
disconnect_slave_event_count
,
...
@@ -3070,7 +3069,6 @@ static struct my_option my_long_options[] =
...
@@ -3070,7 +3069,6 @@ static struct my_option my_long_options[] =
(
gptr
*
)
&
opt_sporadic_binlog_dump_fail
,
(
gptr
*
)
&
opt_sporadic_binlog_dump_fail
,
(
gptr
*
)
&
opt_sporadic_binlog_dump_fail
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
(
gptr
*
)
&
opt_sporadic_binlog_dump_fail
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
0
},
#endif
{
"safemalloc-mem-limit"
,
OPT_SAFEMALLOC_MEM_LIMIT
,
{
"safemalloc-mem-limit"
,
OPT_SAFEMALLOC_MEM_LIMIT
,
"Simulate memory shortage when compiled with the --with-debug=full option"
,
"Simulate memory shortage when compiled with the --with-debug=full option"
,
0
,
0
,
0
,
GET_ULL
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
0
,
0
,
0
,
GET_ULL
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
...
@@ -4422,11 +4420,7 @@ static void get_options(int argc,char **argv)
...
@@ -4422,11 +4420,7 @@ static void get_options(int argc,char **argv)
#endif
#endif
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
fix_paths
();
fix_paths
();
default_table_type_name
=
ha_table_typelib
.
type_names
[
default_table_type
-
1
];
default_table_type_name
=
ha_table_typelib
.
type_names
[
default_table_type
-
1
];
...
...
sql/repl_failsafe.cc
View file @
44a631f1
...
@@ -608,6 +608,9 @@ int show_slave_hosts(THD* thd)
...
@@ -608,6 +608,9 @@ int show_slave_hosts(THD* thd)
int
connect_to_master
(
THD
*
thd
,
MYSQL
*
mysql
,
MASTER_INFO
*
mi
)
int
connect_to_master
(
THD
*
thd
,
MYSQL
*
mysql
,
MASTER_INFO
*
mi
)
{
{
if
(
!
mi
->
host
||
!*
mi
->
host
)
/* empty host */
return
1
;
if
(
!
mc_mysql_connect
(
mysql
,
mi
->
host
,
mi
->
user
,
mi
->
password
,
0
,
if
(
!
mc_mysql_connect
(
mysql
,
mi
->
host
,
mi
->
user
,
mi
->
password
,
0
,
mi
->
port
,
0
,
0
))
mi
->
port
,
0
,
0
))
{
{
...
...
sql/slave.cc
View file @
44a631f1
...
@@ -48,12 +48,10 @@ ulong relay_log_space_limit = 0; /* TODO: fix variables to access ulonglong
...
@@ -48,12 +48,10 @@ ulong relay_log_space_limit = 0; /* TODO: fix variables to access ulonglong
// can re-use them on slave start
// can re-use them on slave start
// TODO: move the vars below under MASTER_INFO
// TODO: move the vars below under MASTER_INFO
#ifndef DBUG_OFF
int
disconnect_slave_event_count
=
0
,
abort_slave_event_count
=
0
;
int
disconnect_slave_event_count
=
0
,
abort_slave_event_count
=
0
;
static
int
events_till_disconnect
=
-
1
;
static
int
events_till_disconnect
=
-
1
;
int
events_till_abort
=
-
1
;
int
events_till_abort
=
-
1
;
static
int
stuck_count
=
0
;
static
int
stuck_count
=
0
;
#endif
typedef
enum
{
SLAVE_THD_IO
,
SLAVE_THD_SQL
}
SLAVE_THD_TYPE
;
typedef
enum
{
SLAVE_THD_IO
,
SLAVE_THD_SQL
}
SLAVE_THD_TYPE
;
...
...
sql/slave.h
View file @
44a631f1
...
@@ -415,9 +415,7 @@ extern bool do_table_inited, ignore_table_inited,
...
@@ -415,9 +415,7 @@ extern bool do_table_inited, ignore_table_inited,
wild_do_table_inited
,
wild_ignore_table_inited
;
wild_do_table_inited
,
wild_ignore_table_inited
;
extern
bool
table_rules_on
;
extern
bool
table_rules_on
;
#ifndef DBUG_OFF
extern
int
disconnect_slave_event_count
,
abort_slave_event_count
;
extern
int
disconnect_slave_event_count
,
abort_slave_event_count
;
#endif
// the master variables are defaults read from my.cnf or command line
// the master variables are defaults read from my.cnf or command line
extern
uint
master_port
,
master_connect_retry
,
report_port
;
extern
uint
master_port
,
master_connect_retry
,
report_port
;
...
...
sql/sql_parse.cc
View file @
44a631f1
...
@@ -160,7 +160,7 @@ static int get_or_create_user_conn(THD *thd, const char *user,
...
@@ -160,7 +160,7 @@ static int get_or_create_user_conn(THD *thd, const char *user,
uc
->
connections
=
1
;
uc
->
connections
=
1
;
uc
->
questions
=
uc
->
updates
=
uc
->
conn_per_hour
=
0
;
uc
->
questions
=
uc
->
updates
=
uc
->
conn_per_hour
=
0
;
uc
->
user_resources
=*
mqh
;
uc
->
user_resources
=*
mqh
;
if
(
mqh
->
connections
>
max_user_connections
)
if
(
m
ax_user_connections
&&
m
qh
->
connections
>
max_user_connections
)
uc
->
user_resources
.
connections
=
max_user_connections
;
uc
->
user_resources
.
connections
=
max_user_connections
;
uc
->
intime
=
thd
->
thr_create_time
;
uc
->
intime
=
thd
->
thr_create_time
;
if
(
hash_insert
(
&
hash_user_connections
,
(
byte
*
)
uc
))
if
(
hash_insert
(
&
hash_user_connections
,
(
byte
*
)
uc
))
...
@@ -298,7 +298,7 @@ static int check_for_max_user_connections(USER_CONN *uc)
...
@@ -298,7 +298,7 @@ static int check_for_max_user_connections(USER_CONN *uc)
goto
end
;
goto
end
;
}
}
uc
->
connections
++
;
uc
->
connections
++
;
if
(
uc
->
user_resources
.
connections
&&
uc
->
conn_per_hour
++
>=
uc
->
user_resources
.
connections
)
if
(
uc
->
user_resources
.
connections
&&
uc
->
conn_per_hour
++
>=
uc
->
user_resources
.
connections
)
{
{
net_printf
(
&
current_thd
->
net
,
ER_USER_LIMIT_REACHED
,
uc
->
user
,
"max_connections"
,
net_printf
(
&
current_thd
->
net
,
ER_USER_LIMIT_REACHED
,
uc
->
user
,
"max_connections"
,
(
long
)
uc
->
user_resources
.
connections
);
(
long
)
uc
->
user_resources
.
connections
);
...
@@ -317,12 +317,7 @@ static void decrease_user_connections(USER_CONN *uc)
...
@@ -317,12 +317,7 @@ static void decrease_user_connections(USER_CONN *uc)
*/
*/
DBUG_ENTER
(
"decrease_user_connections"
);
DBUG_ENTER
(
"decrease_user_connections"
);
if
(
mqh_used
)
if
(
!
mqh_used
&&
uc
->
connections
&&
!--
uc
->
connections
)
{
if
(
uc
->
conn_per_hour
)
uc
->
conn_per_hour
--
;
}
else
if
(
!--
uc
->
connections
)
{
{
/* Last connection for user; Delete it */
/* Last connection for user; Delete it */
(
void
)
pthread_mutex_lock
(
&
LOCK_user_conn
);
(
void
)
pthread_mutex_lock
(
&
LOCK_user_conn
);
...
@@ -1797,6 +1792,7 @@ mysql_execute_command(void)
...
@@ -1797,6 +1792,7 @@ mysql_execute_command(void)
tables
->
grant
.
want_privilege
=
(
SELECT_ACL
&
~
tables
->
grant
.
privilege
);
tables
->
grant
.
want_privilege
=
(
SELECT_ACL
&
~
tables
->
grant
.
privilege
);
if
((
res
=
open_and_lock_tables
(
thd
,
tables
)))
if
((
res
=
open_and_lock_tables
(
thd
,
tables
)))
break
;
break
;
thd
->
select_limit
=
HA_POS_ERROR
;
if
(
!
setup_fields
(
thd
,
tables
,
select_lex
->
item_list
,
1
,
0
,
0
)
&&
if
(
!
setup_fields
(
thd
,
tables
,
select_lex
->
item_list
,
1
,
0
,
0
)
&&
!
setup_fields
(
thd
,
tables
,
lex
->
value_list
,
0
,
0
,
0
)
&&
!
thd
->
fatal_error
&&
!
setup_fields
(
thd
,
tables
,
lex
->
value_list
,
0
,
0
,
0
)
&&
!
thd
->
fatal_error
&&
(
result
=
new
multi_update
(
thd
,
tables
,
select_lex
->
item_list
,
lex
->
duplicates
,
(
result
=
new
multi_update
(
thd
,
tables
,
select_lex
->
item_list
,
lex
->
duplicates
,
...
@@ -2746,7 +2742,7 @@ void mysql_init_multi_delete(LEX *lex)
...
@@ -2746,7 +2742,7 @@ void mysql_init_multi_delete(LEX *lex)
{
{
lex
->
sql_command
=
SQLCOM_DELETE_MULTI
;
lex
->
sql_command
=
SQLCOM_DELETE_MULTI
;
mysql_init_select
(
lex
);
mysql_init_select
(
lex
);
lex
->
select
->
select_limit
=
HA_POS_ERROR
;
lex
->
select
->
select_limit
=
lex
->
thd
->
select_limit
=
HA_POS_ERROR
;
lex
->
auxilliary_table_list
=
lex
->
select_lex
.
table_list
;
lex
->
auxilliary_table_list
=
lex
->
select_lex
.
table_list
;
lex
->
select
->
table_list
.
elements
=
0
;
lex
->
select
->
table_list
.
elements
=
0
;
lex
->
select
->
table_list
.
first
=
0
;
lex
->
select
->
table_list
.
first
=
0
;
...
...
sql/sql_repl.cc
View file @
44a631f1
...
@@ -27,11 +27,9 @@
...
@@ -27,11 +27,9 @@
extern
const
char
*
any_db
;
extern
const
char
*
any_db
;
#ifndef DBUG_OFF
int
max_binlog_dump_events
=
0
;
// unlimited
int
max_binlog_dump_events
=
0
;
// unlimited
bool
opt_sporadic_binlog_dump_fail
=
0
;
bool
opt_sporadic_binlog_dump_fail
=
0
;
static
int
binlog_dump_count
=
0
;
static
int
binlog_dump_count
=
0
;
#endif
int
check_binlog_magic
(
IO_CACHE
*
log
,
const
char
**
errmsg
)
int
check_binlog_magic
(
IO_CACHE
*
log
,
const
char
**
errmsg
)
{
{
...
...
sql/sql_repl.h
View file @
44a631f1
...
@@ -21,10 +21,8 @@ extern uint32 server_id;
...
@@ -21,10 +21,8 @@ extern uint32 server_id;
extern
bool
server_id_supplied
;
extern
bool
server_id_supplied
;
extern
I_List
<
i_string
>
binlog_do_db
,
binlog_ignore_db
;
extern
I_List
<
i_string
>
binlog_do_db
,
binlog_ignore_db
;
#ifndef DBUG_OFF
extern
int
max_binlog_dump_events
;
extern
int
max_binlog_dump_events
;
extern
bool
opt_sporadic_binlog_dump_fail
;
extern
bool
opt_sporadic_binlog_dump_fail
;
#endif
#define KICK_SLAVE(thd) thd->awake(0
/* do not prepare to die*/
);
#define KICK_SLAVE(thd) thd->awake(0
/* do not prepare to die*/
);
...
...
support-files/my-huge.cnf.sh
View file @
44a631f1
...
@@ -35,8 +35,23 @@ set-variable = thread_cache=8
...
@@ -35,8 +35,23 @@ set-variable = thread_cache=8
# Try number of CPU's*2 for thread_concurrency
# Try number of CPU's*2 for thread_concurrency
set-variable
=
thread_concurrency
=
8
set-variable
=
thread_concurrency
=
8
set-variable
=
myisam_sort_buffer_size
=
64M
set-variable
=
myisam_sort_buffer_size
=
64M
log-bin
server-id
=
1
# Replication Master Server (default)
log-bin
# required for replication
server-id
=
1
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
# Replication Slave Server (comment out master section to use this)
#master-host = # MUST BE SET
#master-user = # MUST BE SET
#master-password = # MUST BE SET
#master-port = # optional--defaults to 3306
#log-bin # not required for slaves, but recommended
#server-id = 2 # required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
# Point the following paths to different dedicated disks
# Point the following paths to different dedicated disks
#tmpdir = /tmp/
#tmpdir = /tmp/
...
...
tools/mysqlmanager.c
View file @
44a631f1
...
@@ -41,8 +41,8 @@
...
@@ -41,8 +41,8 @@
#include <sys/wait.h>
#include <sys/wait.h>
#endif
#endif
#define MANAGER_VERSION "1.
1
"
#define MANAGER_VERSION "1.
2
"
#define MANAGER_GREETING "MySQL Server Management Daemon v. 1.
0
"
#define MANAGER_GREETING "MySQL Server Management Daemon v. 1.
2
"
#define LOG_ERR 1
#define LOG_ERR 1
#define LOG_WARN 2
#define LOG_WARN 2
...
@@ -1332,11 +1332,8 @@ static int parse_args(int argc, char **argv)
...
@@ -1332,11 +1332,8 @@ static int parse_args(int argc, char **argv)
int
ho_error
;
int
ho_error
;
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
if
((
ho_error
=
handle_options
(
&
argc
,
&
argv
,
my_long_options
,
get_one_option
)))
{
exit
(
ho_error
);
printf
(
"%s: handle_options() failed with error %d
\n
"
,
my_progname
,
ho_error
);
exit
(
1
);
}
return
0
;
return
0
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment