[Commits] 1504890: MDEV-7384: Add --persistent option for mysqlcheck

Vicențiu Ciorbaru vicentiu at mariadb.org
Tue Dec 15 16:15:55 EET 2015


Hi Sergey,

Can you please review this patch? It is the original one from Daniel Black
to which I've added a test case. I'm ok with the extended functionality for
mysqlcheck, however I would personally also add the possibility to have
persistent for <columns, indices>. How we would implement that however is
something that we would probably want to discuss.

Regards,
Vicentiu

On Tue, 15 Dec 2015 at 16:11 Vicentiu Ciorbaru <vicentiu at mariadb.org> wrote:

> revision-id: 1504890ce5e5051fe491d5cd8f78b267272f36bf
> (mariadb-10.0.22-63-g1504890)
> parent(s): e9b4a041af5122dffd59012493c565e6e3db2664
> committer: Vicențiu Ciorbaru
> timestamp: 2015-12-15 16:11:31 +0200
> message:
>
> MDEV-7384: Add --persistent option for mysqlcheck
>
> 10.0 has an "analyze table .. persistent for all" syntax. This adds
> --persistent to mysqlcheck(mysqlanalyize) to perform this extended
> analyze table option.
>
> Signed-off-by: Vicențiu Ciorbaru <vicentiu at mariadb.org>
>
> ---
>  client/mysqlcheck.c            |  7 ++++++-
>  man/mysqlcheck.1               | 18 +++++++++++++++++-
>  mysql-test/r/mysqlcheck.result | 19 +++++++++++++++++++
>  mysql-test/t/mysqlcheck.test   | 22 ++++++++++++++++------
>  4 files changed, 58 insertions(+), 8 deletions(-)
>
> diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c
> index ead4127..9b6934d 100644
> --- a/client/mysqlcheck.c
> +++ b/client/mysqlcheck.c
> @@ -43,7 +43,7 @@ static my_bool opt_alldbs = 0, opt_check_only_changed =
> 0, opt_extended = 0,
>                 opt_silent = 0, opt_auto_repair = 0, ignore_errors = 0,
>                 tty_password= 0, opt_frm= 0, debug_info_flag= 0,
> debug_check_flag= 0,
>                 opt_fix_table_names= 0, opt_fix_db_names= 0, opt_upgrade=
> 0,
> -               opt_do_tables= 1;
> +               opt_persistent_all= 0, opt_do_tables= 1;
>  static my_bool opt_write_binlog= 1, opt_flush_tables= 0;
>  static uint verbose = 0, opt_mysql_port=0;
>  static int my_end_arg;
> @@ -160,6 +160,10 @@ static struct my_option my_long_options[] =
>    {"password", 'p',
>     "Password to use when connecting to server. If password is not given,
> it's solicited on the tty.",
>     0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
> +  {"persistent", 'Z',
> +   "When using ANALYZE TABLE use the PERSISTENT FOR ALL option.",
> +   &opt_persistent_all, &opt_persistent_all, 0, GET_BOOL, NO_ARG,
> +   0, 0, 0, 0, 0, 0},
>  #ifdef __WIN__
>    {"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0,
> GET_NO_ARG,
>     NO_ARG, 0, 0, 0, 0, 0, 0},
> @@ -909,6 +913,7 @@ static int handle_request_for_tables(char *tables,
> size_t length, my_bool view)
>    case DO_ANALYZE:
>      DBUG_ASSERT(!view);
>      op= (opt_write_binlog) ? "ANALYZE" : "ANALYZE NO_WRITE_TO_BINLOG";
> +    if (opt_persistent_all) end = strmov(end, " PERSISTENT FOR ALL");
>      break;
>    case DO_OPTIMIZE:
>      DBUG_ASSERT(!view);
> diff --git a/man/mysqlcheck.1 b/man/mysqlcheck.1
> index c175483..e05bbf8 100644
> --- a/man/mysqlcheck.1
> +++ b/man/mysqlcheck.1
> @@ -1,6 +1,6 @@
>  '\" t
>  .\"
> -.TH "\FBMYSQLCHECK\FR" "1" "04/08/2015" "MariaDB 10\&.0" "MariaDB
> Database System"
> +.TH "\FBMYSQLCHECK\FR" "1" "27/12/2015" "MariaDB 10\&.0" "MariaDB
> Database System"
>  .\" -----------------------------------------------------------------
>  .\" * set default formatting
>  .\" -----------------------------------------------------------------
> @@ -677,6 +677,22 @@ Specifying a password on the command line should be
> considered insecure\&. You c
>  .sp -1
>  .IP \(bu 2.3
>  .\}
> +.\" mysqlcheck: persisent option
> +.\" persistent option: mysql
> +\fB\-\-persistent\fR,
> +\fB\-Z\fR
> +.sp
> +Used with ANALYZE TABLE to append the option PERSISENT FOR ALL.
> +.RE
> +.sp
> +.RS 4
> +.ie n \{\
> +\h'-04'\(bu\h'+03'\c
> +.\}
> +.el \{\
> +.sp -1
> +.IP \(bu 2.3
> +.\}
>  .\" mysqlcheck: pipe option
>  .\" pipe option: mysql
>  \fB\-\-pipe\fR,
> diff --git a/mysql-test/r/mysqlcheck.result
> b/mysql-test/r/mysqlcheck.result
> index b4bcdc4..66e23c1 100644
> --- a/mysql-test/r/mysqlcheck.result
> +++ b/mysql-test/r/mysqlcheck.result
> @@ -347,6 +347,9 @@ CREATE TABLE test.`t.1` (id int);
>  mysqlcheck test t.1
>  test.t.1                                           OK
>  drop table test.`t.1`;
> +#
> +# MDEV-8123 mysqlcheck: new --process-views option conflicts with
> --quick, --extended and such
> +#
>  create view v1 as select 1;
>  mysqlcheck --process-views test
>  test.v1                                            OK
> @@ -361,6 +364,9 @@ test.v1                                            OK
>  mysqlcheck --process-views --check-upgrade test
>  test.v1                                            OK
>  drop view v1;
> +#
> +# MDEV-8124 mysqlcheck: --auto-repair runs REPAIR TABLE instead of REPAIR
> VIEW on views
> +#
>  create table t1(a int);
>  mysqlcheck --process-views --check-upgrade --auto-repair test
>  test.t1                                            OK
> @@ -370,3 +376,16 @@ Repairing views
>  test.v1                                            OK
>  drop view v1;
>  drop table t1;
> +#
> +#MDEV-7384 [PATCH] add PERSISENT FOR ALL option to mysqlanalyze/mysqlcheck
> +#
> +create table t1(a int);
> +insert into t1 (a) values (1), (2), (3);
> +select * from mysql.column_stats;
> +db_name        table_name      column_name     min_value       max_value
>      nulls_ratio     avg_length      avg_frequency   hist_size
>  hist_type       histogram
> +test.t1                                            Engine-independent
> statistics collected
> +status   : OK
> +select * from mysql.column_stats where db_name = 'test' and table_name =
> 't1';
> +db_name        table_name      column_name     min_value       max_value
>      nulls_ratio     avg_length      avg_frequency   hist_size
>  hist_type       histogram
> +test   t1      a       1       3       0.0000  4.0000  1.0000  0
>  NULL    NULL
> +drop table t1;
> diff --git a/mysql-test/t/mysqlcheck.test b/mysql-test/t/mysqlcheck.test
> index 6cd0265..88f0d03 100644
> --- a/mysql-test/t/mysqlcheck.test
> +++ b/mysql-test/t/mysqlcheck.test
> @@ -319,9 +319,9 @@ CREATE TABLE test.`t.1` (id int);
>
>  drop table test.`t.1`;
>
> -#
> -# MDEV-8123 mysqlcheck: new --process-views option conflicts with
> --quick, --extended and such
> -#
> +--echo #
> +--echo # MDEV-8123 mysqlcheck: new --process-views option conflicts with
> --quick, --extended and such
> +--echo #
>  create view v1 as select 1;
>  --echo mysqlcheck --process-views test
>  --exec $MYSQL_CHECK --process-views test
> @@ -340,12 +340,22 @@ create view v1 as select 1;
>  drop view v1;
>
>
> -#
> -# MDEV-8124 mysqlcheck: --auto-repair runs REPAIR TABLE instead of REPAIR
> VIEW on views
> -#
> +--echo #
> +--echo # MDEV-8124 mysqlcheck: --auto-repair runs REPAIR TABLE instead of
> REPAIR VIEW on views
> +--echo #
>  create table t1(a int);
>  --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1.frm
> $MYSQLD_DATADIR/test/v1.frm
>  --echo mysqlcheck --process-views --check-upgrade --auto-repair test
>  --exec $MYSQL_CHECK --process-views --check-upgrade --auto-repair test
>  drop view v1;
>  drop table t1;
> +
> +--echo #
> +--echo #MDEV-7384 [PATCH] add PERSISENT FOR ALL option to
> mysqlanalyze/mysqlcheck
> +--echo #
> +create table t1(a int);
> +insert into t1 (a) values (1), (2), (3);
> +select * from mysql.column_stats;
> +--exec $MYSQL_CHECK --analyze test t1 --persistent
> +select * from mysql.column_stats where db_name = 'test' and table_name =
> 't1';
> +drop table t1;
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.askmonty.org/pipermail/commits/attachments/20151215/dfd4207e/attachment-0001.html>


More information about the commits mailing list