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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
a176b249
Commit
a176b249
authored
Nov 11, 2009
by
Magne Mahre
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug #37097 mysqltest add result file format version 2
Add result file format v2 Backport to 5.6.0
parent
cc87cb9f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
120 additions
and
7 deletions
+120
-7
client/mysqltest.cc
client/mysqltest.cc
+120
-7
No files found.
client/mysqltest.cc
View file @
a176b249
...
@@ -75,7 +75,8 @@
...
@@ -75,7 +75,8 @@
enum
{
enum
{
OPT_SKIP_SAFEMALLOC
=
OPT_MAX_CLIENT_OPTION
,
OPT_SKIP_SAFEMALLOC
=
OPT_MAX_CLIENT_OPTION
,
OPT_PS_PROTOCOL
,
OPT_SP_PROTOCOL
,
OPT_CURSOR_PROTOCOL
,
OPT_VIEW_PROTOCOL
,
OPT_PS_PROTOCOL
,
OPT_SP_PROTOCOL
,
OPT_CURSOR_PROTOCOL
,
OPT_VIEW_PROTOCOL
,
OPT_MAX_CONNECT_RETRIES
,
OPT_MARK_PROGRESS
,
OPT_LOG_DIR
,
OPT_TAIL_LINES
OPT_MAX_CONNECT_RETRIES
,
OPT_MARK_PROGRESS
,
OPT_LOG_DIR
,
OPT_TAIL_LINES
,
OPT_RESULT_FORMAT_VERSION
};
};
static
int
record
=
0
,
opt_sleep
=
-
1
;
static
int
record
=
0
,
opt_sleep
=
-
1
;
...
@@ -85,6 +86,7 @@ const char *opt_logdir= "";
...
@@ -85,6 +86,7 @@ const char *opt_logdir= "";
const
char
*
opt_include
=
0
,
*
opt_charsets_dir
;
const
char
*
opt_include
=
0
,
*
opt_charsets_dir
;
static
int
opt_port
=
0
;
static
int
opt_port
=
0
;
static
int
opt_max_connect_retries
;
static
int
opt_max_connect_retries
;
static
int
opt_result_format_version
;
static
my_bool
opt_compress
=
0
,
silent
=
0
,
verbose
=
0
;
static
my_bool
opt_compress
=
0
,
silent
=
0
,
verbose
=
0
;
static
my_bool
debug_info_flag
=
0
,
debug_check_flag
=
0
;
static
my_bool
debug_info_flag
=
0
,
debug_check_flag
=
0
;
static
my_bool
tty_password
=
0
;
static
my_bool
tty_password
=
0
;
...
@@ -281,11 +283,13 @@ enum enum_commands {
...
@@ -281,11 +283,13 @@ enum enum_commands {
Q_SEND_QUIT
,
Q_CHANGE_USER
,
Q_MKDIR
,
Q_RMDIR
,
Q_SEND_QUIT
,
Q_CHANGE_USER
,
Q_MKDIR
,
Q_RMDIR
,
Q_LIST_FILES
,
Q_LIST_FILES_WRITE_FILE
,
Q_LIST_FILES_APPEND_FILE
,
Q_LIST_FILES
,
Q_LIST_FILES_WRITE_FILE
,
Q_LIST_FILES_APPEND_FILE
,
Q_SEND_SHUTDOWN
,
Q_SHUTDOWN_SERVER
,
Q_SEND_SHUTDOWN
,
Q_SHUTDOWN_SERVER
,
Q_RESULT_FORMAT_VERSION
,
Q_MOVE_FILE
,
Q_MOVE_FILE
,
Q_UNKNOWN
,
/* Unknown command. */
Q_UNKNOWN
,
/* Unknown command. */
Q_COMMENT
,
/* Comments, ignored. */
Q_COMMENT
,
/* Comments, ignored. */
Q_COMMENT_WITH_COMMAND
Q_COMMENT_WITH_COMMAND
,
Q_EMPTY_LINE
};
};
...
@@ -375,6 +379,7 @@ const char *command_names[]=
...
@@ -375,6 +379,7 @@ const char *command_names[]=
"list_files_append_file"
,
"list_files_append_file"
,
"send_shutdown"
,
"send_shutdown"
,
"shutdown_server"
,
"shutdown_server"
,
"result_format"
,
"move_file"
,
"move_file"
,
0
0
...
@@ -2190,6 +2195,59 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
...
@@ -2190,6 +2195,59 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
}
}
static
void
set_result_format_version
(
ulong
new_version
)
{
switch
(
new_version
){
case
1
:
/* The first format */
break
;
case
2
:
/* New format that also writes comments and empty lines
from test file to result */
break
;
default:
die
(
"Version format %lu has not yet been implemented"
,
new_version
);
break
;
}
opt_result_format_version
=
new_version
;
}
/*
Set the result format version to use when generating
the .result file
*/
static
void
do_result_format_version
(
struct
st_command
*
command
)
{
long
version
;
static
DYNAMIC_STRING
ds_version
;
const
struct
command_arg
result_format_args
[]
=
{
"version"
,
ARG_STRING
,
TRUE
,
&
ds_version
,
"Version to use"
,
};
DBUG_ENTER
(
"do_result_format_version"
);
check_command_args
(
command
,
command
->
first_argument
,
result_format_args
,
sizeof
(
result_format_args
)
/
sizeof
(
struct
command_arg
),
','
);
/* Convert version number to int */
if
(
!
str2int
(
ds_version
.
str
,
10
,
(
long
)
0
,
(
long
)
INT_MAX
,
&
version
))
die
(
"Invalid version number: '%s'"
,
ds_version
.
str
);
set_result_format_version
(
version
);
dynstr_append
(
&
ds_res
,
"result_format: "
);
dynstr_append_mem
(
&
ds_res
,
ds_version
.
str
,
ds_version
.
length
);
dynstr_append
(
&
ds_res
,
"
\n
"
);
dynstr_free
(
&
ds_version
);
}
/*
/*
Set variable from the result of a field in a query
Set variable from the result of a field in a query
...
@@ -5265,7 +5323,7 @@ my_bool end_of_query(int c)
...
@@ -5265,7 +5323,7 @@ my_bool end_of_query(int c)
int
read_line
(
char
*
buf
,
int
size
)
int
read_line
(
char
*
buf
,
int
size
)
{
{
char
c
,
UNINIT_VAR
(
last_quote
);
char
c
,
UNINIT_VAR
(
last_quote
)
,
last_char
=
0
;
char
*
p
=
buf
,
*
buf_end
=
buf
+
size
-
1
;
char
*
p
=
buf
,
*
buf_end
=
buf
+
size
-
1
;
int
skip_char
=
0
;
int
skip_char
=
0
;
enum
{
R_NORMAL
,
R_Q
,
R_SLASH_IN_Q
,
enum
{
R_NORMAL
,
R_Q
,
R_SLASH_IN_Q
,
...
@@ -5363,14 +5421,24 @@ int read_line(char *buf, int size)
...
@@ -5363,14 +5421,24 @@ int read_line(char *buf, int size)
}
}
else
if
(
my_isspace
(
charset_info
,
c
))
else
if
(
my_isspace
(
charset_info
,
c
))
{
{
/* Skip all space at begining of line */
if
(
c
==
'\n'
)
if
(
c
==
'\n'
)
{
{
if
(
last_char
==
'\n'
)
{
/* Two new lines in a row, return empty line */
DBUG_PRINT
(
"info"
,
(
"Found two new lines in a row"
));
*
p
++=
c
;
*
p
=
0
;
DBUG_RETURN
(
0
);
}
/* Query hasn't started yet */
/* Query hasn't started yet */
start_lineno
=
cur_file
->
lineno
;
start_lineno
=
cur_file
->
lineno
;
DBUG_PRINT
(
"info"
,
(
"Query hasn't started yet, start_lineno: %d"
,
DBUG_PRINT
(
"info"
,
(
"Query hasn't started yet, start_lineno: %d"
,
start_lineno
));
start_lineno
));
}
}
/* Skip all space at begining of line */
skip_char
=
1
;
skip_char
=
1
;
}
}
else
if
(
end_of_query
(
c
))
else
if
(
end_of_query
(
c
))
...
@@ -5411,6 +5479,8 @@ int read_line(char *buf, int size)
...
@@ -5411,6 +5479,8 @@ int read_line(char *buf, int size)
}
}
last_char
=
c
;
if
(
!
skip_char
)
if
(
!
skip_char
)
{
{
/* Could be a multibyte character */
/* Could be a multibyte character */
...
@@ -5620,9 +5690,10 @@ int read_command(struct st_command** command_ptr)
...
@@ -5620,9 +5690,10 @@ int read_command(struct st_command** command_ptr)
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
}
}
convert_to_format_v1
(
read_command_buf
);
if
(
opt_result_format_version
==
1
)
convert_to_format_v1
(
read_command_buf
);
DBUG_PRINT
(
"info"
,
(
"query:
%s
"
,
read_command_buf
));
DBUG_PRINT
(
"info"
,
(
"query:
'%s'
"
,
read_command_buf
));
if
(
*
p
==
'#'
)
if
(
*
p
==
'#'
)
{
{
command
->
type
=
Q_COMMENT
;
command
->
type
=
Q_COMMENT
;
...
@@ -5632,6 +5703,10 @@ int read_command(struct st_command** command_ptr)
...
@@ -5632,6 +5703,10 @@ int read_command(struct st_command** command_ptr)
command
->
type
=
Q_COMMENT_WITH_COMMAND
;
command
->
type
=
Q_COMMENT_WITH_COMMAND
;
p
+=
2
;
/* Skip past -- */
p
+=
2
;
/* Skip past -- */
}
}
else
if
(
*
p
==
'\n'
)
{
command
->
type
=
Q_EMPTY_LINE
;
}
/* Skip leading spaces */
/* Skip leading spaces */
while
(
*
p
&&
my_isspace
(
charset_info
,
*
p
))
while
(
*
p
&&
my_isspace
(
charset_info
,
*
p
))
...
@@ -5726,6 +5801,11 @@ static struct my_option my_long_options[] =
...
@@ -5726,6 +5801,11 @@ static struct my_option my_long_options[] =
{
"result-file"
,
'R'
,
"Read/Store result from/in this file."
,
{
"result-file"
,
'R'
,
"Read/Store result from/in this file."
,
(
uchar
**
)
&
result_file_name
,
(
uchar
**
)
&
result_file_name
,
0
,
(
uchar
**
)
&
result_file_name
,
(
uchar
**
)
&
result_file_name
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"result-format-version"
,
OPT_RESULT_FORMAT_VERSION
,
"Version of the result file format to use"
,
(
uchar
**
)
&
opt_result_format_version
,
(
uchar
**
)
&
opt_result_format_version
,
0
,
GET_INT
,
REQUIRED_ARG
,
1
,
1
,
2
,
0
,
0
,
0
},
{
"server-arg"
,
'A'
,
"Send option value to embedded server as a parameter."
,
{
"server-arg"
,
'A'
,
"Send option value to embedded server as a parameter."
,
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
},
{
"server-file"
,
'F'
,
"Read embedded server arguments from file."
,
{
"server-file"
,
'F'
,
"Read embedded server arguments from file."
,
...
@@ -5929,6 +6009,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
...
@@ -5929,6 +6009,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
sf_malloc_quick
=
1
;
sf_malloc_quick
=
1
;
#endif
#endif
break
;
break
;
case
OPT_RESULT_FORMAT_VERSION
:
set_result_format_version
(
opt_result_format_version
);
break
;
case
'V'
:
case
'V'
:
print_version
();
print_version
();
exit
(
0
);
exit
(
0
);
...
@@ -7799,6 +7882,7 @@ int main(int argc, char **argv)
...
@@ -7799,6 +7882,7 @@ int main(int argc, char **argv)
case
Q_MOVE_FILE
:
do_move_file
(
command
);
break
;
case
Q_MOVE_FILE
:
do_move_file
(
command
);
break
;
case
Q_CHMOD_FILE
:
do_chmod_file
(
command
);
break
;
case
Q_CHMOD_FILE
:
do_chmod_file
(
command
);
break
;
case
Q_PERL
:
do_perl
(
command
);
break
;
case
Q_PERL
:
do_perl
(
command
);
break
;
case
Q_RESULT_FORMAT_VERSION
:
do_result_format_version
(
command
);
break
;
case
Q_DELIMITER
:
case
Q_DELIMITER
:
do_delimiter
(
command
);
do_delimiter
(
command
);
break
;
break
;
...
@@ -7915,9 +7999,38 @@ int main(int argc, char **argv)
...
@@ -7915,9 +7999,38 @@ int main(int argc, char **argv)
do_sync_with_master2
(
command
,
0
);
do_sync_with_master2
(
command
,
0
);
break
;
break
;
}
}
case
Q_COMMENT
:
/* Ignore row */
case
Q_COMMENT
:
{
command
->
last_argument
=
command
->
end
;
command
->
last_argument
=
command
->
end
;
/* Don't output comments in v1 */
if
(
opt_result_format_version
==
1
)
break
;
/* Don't output comments if query logging is off */
if
(
disable_query_log
)
break
;
/* Write comment's with two starting #'s to result file */
const
char
*
p
=
command
->
query
;
if
(
p
&&
*
p
==
'#'
&&
*
(
p
+
1
)
==
'#'
)
{
dynstr_append_mem
(
&
ds_res
,
command
->
query
,
command
->
query_len
);
dynstr_append
(
&
ds_res
,
"
\n
"
);
}
break
;
break
;
}
case
Q_EMPTY_LINE
:
/* Don't output newline in v1 */
if
(
opt_result_format_version
==
1
)
break
;
/* Don't output newline if query logging is off */
if
(
disable_query_log
)
break
;
dynstr_append
(
&
ds_res
,
"
\n
"
);
break
;
case
Q_PING
:
case
Q_PING
:
handle_command_error
(
command
,
mysql_ping
(
&
cur_con
->
mysql
));
handle_command_error
(
command
,
mysql_ping
(
&
cur_con
->
mysql
));
break
;
break
;
...
...
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