Commit 872dbec9 authored by Oleksandr Byelkin's avatar Oleksandr Byelkin

MDEV-34704 Quick mode produces the bug for mariadb client

  --quick-max-column-width parameter added to limit field
    width in --quick mode.
parent 1ff6b6f0
...@@ -165,6 +165,7 @@ static my_bool column_types_flag; ...@@ -165,6 +165,7 @@ static my_bool column_types_flag;
static my_bool preserve_comments= 0; static my_bool preserve_comments= 0;
static my_bool in_com_source, aborted= 0; static my_bool in_com_source, aborted= 0;
static ulong opt_max_allowed_packet, opt_net_buffer_length; static ulong opt_max_allowed_packet, opt_net_buffer_length;
unsigned long quick_max_column_width= LONG_MAX;
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0; static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
static uint my_end_arg; static uint my_end_arg;
static char * opt_mysql_unix_port=0; static char * opt_mysql_unix_port=0;
...@@ -1679,6 +1680,10 @@ static struct my_option my_long_options[] = ...@@ -1679,6 +1680,10 @@ static struct my_option my_long_options[] =
"Don't cache result, print it row by row. This may slow down the server " "Don't cache result, print it row by row. This may slow down the server "
"if the output is suspended. Doesn't use history file.", "if the output is suspended. Doesn't use history file.",
&quick, &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, &quick, &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"quick-max-column-width", 0,
"Maximal field length limit in case of --qick", &quick_max_column_width,
&quick_max_column_width, 0, GET_ULONG, REQUIRED_ARG, LONG_MAX, 0, ULONG_MAX,
0, 1, 0},
{"raw", 'r', "Write fields without conversion. Used with --batch.", {"raw", 'r', "Write fields without conversion. Used with --batch.",
&opt_raw_data, &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, &opt_raw_data, &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"reconnect", 0, "Reconnect if the connection is lost.", {"reconnect", 0, "Reconnect if the connection is lost.",
...@@ -3712,7 +3717,7 @@ print_table_data(MYSQL_RES *result) ...@@ -3712,7 +3717,7 @@ print_table_data(MYSQL_RES *result)
{ {
uint length= column_names ? field->name_length : 0; uint length= column_names ? field->name_length : 0;
if (quick) if (quick)
length= MY_MAX(length,field->length); length= MY_MAX(length, MY_MIN(field->length, quick_max_column_width));
else else
length= MY_MAX(length,field->max_length); length= MY_MAX(length,field->max_length);
if (length < 4 && !IS_NOT_NULL(field->flags)) if (length < 4 && !IS_NOT_NULL(field->flags))
......
#
# MDEV-34704: Quick mode produces the bug for mariadb client
#
create table t1 (aaaaaaaaa char (5), aaaaa char (10), a char (127), b char(1));
insert into t1 values ("X", "X", "X", "X");
# --table --quick
+-----------+------------+---------------------------------------------------------------------------------------------------------------------------------+------+
| aaaaaaaaa | aaaaa | a | b |
+-----------+------------+---------------------------------------------------------------------------------------------------------------------------------+------+
| X | X | X | X |
+-----------+------------+---------------------------------------------------------------------------------------------------------------------------------+------+
# --table --quick --quick-max-column-width=0
+-----------+-------+------+------+
| aaaaaaaaa | aaaaa | a | b |
+-----------+-------+------+------+
| X | X | X | X |
+-----------+-------+------+------+
# --table --quick --quick-max-column-width=10
+-----------+------------+------------+------+
| aaaaaaaaa | aaaaa | a | b |
+-----------+------------+------------+------+
| X | X | X | X |
+-----------+------------+------------+------+
# --table --quick --quick-max-column-width=20
+-----------+------------+----------------------+------+
| aaaaaaaaa | aaaaa | a | b |
+-----------+------------+----------------------+------+
| X | X | X | X |
+-----------+------------+----------------------+------+
insert into t1 values ("01234", "0123456789", "01234567890123456789", "1");
# --table --quick
+-----------+------------+---------------------------------------------------------------------------------------------------------------------------------+------+
| aaaaaaaaa | aaaaa | a | b |
+-----------+------------+---------------------------------------------------------------------------------------------------------------------------------+------+
| X | X | X | X |
| 01234 | 0123456789 | 01234567890123456789 | 1 |
+-----------+------------+---------------------------------------------------------------------------------------------------------------------------------+------+
# --table --quick --quick-max-column-width=0
+-----------+-------+------+------+
| aaaaaaaaa | aaaaa | a | b |
+-----------+-------+------+------+
| X | X | X | X |
| 01234 | 0123456789 | 01234567890123456789 | 1 |
+-----------+-------+------+------+
# --table --quick --quick-max-column-width=10
+-----------+------------+------------+------+
| aaaaaaaaa | aaaaa | a | b |
+-----------+------------+------------+------+
| X | X | X | X |
| 01234 | 0123456789 | 01234567890123456789 | 1 |
+-----------+------------+------------+------+
# --table --quick --quick-max-column-width=20
+-----------+------------+----------------------+------+
| aaaaaaaaa | aaaaa | a | b |
+-----------+------------+----------------------+------+
| X | X | X | X |
| 01234 | 0123456789 | 01234567890123456789 | 1 |
+-----------+------------+----------------------+------+
drop table t1;
#
# End of 10.7 tests
#
--source include/not_embedded.inc
--echo #
--echo # MDEV-34704: Quick mode produces the bug for mariadb client
--echo #
create table t1 (aaaaaaaaa char (5), aaaaa char (10), a char (127), b char(1));
insert into t1 values ("X", "X", "X", "X");
--echo # --table --quick
--exec echo "select * from test.t1;" | $MYSQL --table --quick 2>&1
--echo # --table --quick --quick-max-column-width=0
--exec echo "select * from test.t1;" | $MYSQL --table --quick --quick-max-column-width=0 2>&1
--echo # --table --quick --quick-max-column-width=10
--exec echo "select * from test.t1;" | $MYSQL --table --quick --quick-max-column-width=10 2>&1
--echo # --table --quick --quick-max-column-width=20
--exec echo "select * from test.t1;" | $MYSQL --table --quick --quick-max-column-width=20 2>&1
insert into t1 values ("01234", "0123456789", "01234567890123456789", "1");
--echo # --table --quick
--exec echo "select * from test.t1;" | $MYSQL --table --quick 2>&1
--echo # --table --quick --quick-max-column-width=0
--exec echo "select * from test.t1;" | $MYSQL --table --quick --quick-max-column-width=0 2>&1
--echo # --table --quick --quick-max-column-width=10
--exec echo "select * from test.t1;" | $MYSQL --table --quick --quick-max-column-width=10 2>&1
--echo # --table --quick --quick-max-column-width=20
--exec echo "select * from test.t1;" | $MYSQL --table --quick --quick-max-column-width=20 2>&1
drop table t1;
--echo #
--echo # End of 10.7 tests
--echo #
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment