diff options
author | unknown <jimw@mysql.com> | 2005-03-15 10:46:43 -0800 |
---|---|---|
committer | unknown <jimw@mysql.com> | 2005-03-15 10:46:43 -0800 |
commit | b54f4c51bbe5c5b478870c4e0179e78f6f905544 (patch) | |
tree | 7944a686e8d525c4a77c864d0b91776567514820 | |
parent | 268a3ecc8b6282ddbd082f7f133c7273b087576b (diff) | |
download | mariadb-git-b54f4c51bbe5c5b478870c4e0179e78f6f905544.tar.gz |
Add support for showing table type to mysqlshow command. (Bug #5036)
client/mysqlshow.c:
Add support for -t (--show-table-type) switch
mysql-test/mysql-test-run.sh:
Add support for running mysqlshow
-rw-r--r-- | client/mysqlshow.c | 78 | ||||
-rw-r--r-- | mysql-test/mysql-test-run.sh | 14 | ||||
-rw-r--r-- | mysql-test/r/mysqlshow.result | 76 | ||||
-rw-r--r-- | mysql-test/t/mysqlshow.test | 20 |
4 files changed, 170 insertions, 18 deletions
diff --git a/client/mysqlshow.c b/client/mysqlshow.c index 8171cb95268..eee96a9c3eb 100644 --- a/client/mysqlshow.c +++ b/client/mysqlshow.c @@ -28,7 +28,8 @@ #include <sslopt-vars.h> static my_string host=0,opt_password=0,user=0; -static my_bool opt_show_keys=0,opt_compress=0,opt_status=0, tty_password=0; +static my_bool opt_show_keys= 0, opt_compress= 0, opt_status= 0, + tty_password= 0, opt_table_type= 0; static uint opt_verbose=0; static char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME; @@ -193,6 +194,9 @@ static struct my_option my_long_options[] = "Base name of shared memory.", (gptr*) &shared_memory_base_name, (gptr*) &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif + {"show-table-type", 't', "Show table type column.", + (gptr*) &opt_table_type, (gptr*) &opt_table_type, 0, GET_BOOL, + NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "Socket file to use for connection.", (gptr*) &opt_mysql_unix_port, (gptr*) &opt_mysql_unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -418,7 +422,7 @@ list_tables(MYSQL *mysql,const char *db,const char *table) { const char *header; uint head_length, counter = 0; - char query[255], rows[64], fields[16]; + char query[255], rows[NAME_LEN], fields[16]; MYSQL_FIELD *field; MYSQL_RES *result; MYSQL_ROW row, rrow; @@ -429,7 +433,20 @@ list_tables(MYSQL *mysql,const char *db,const char *table) mysql_error(mysql)); return 1; } - if (!(result=mysql_list_tables(mysql,table))) + if (table) + { + /* + We just hijack the 'rows' variable for a bit to store the escaped + table name + */ + mysql_escape_string(rows, table, sizeof(rows)); + my_snprintf(query, sizeof(query), "show%s tables like '%s'", + opt_table_type ? " full" : "", rows); + } + else + my_snprintf(query, sizeof(query), "show%s tables", + opt_table_type ? " full" : ""); + if (mysql_query(mysql, query) || !(result= mysql_store_result(mysql))) { fprintf(stderr,"%s: Cannot list tables in %s: %s\n",my_progname,db, mysql_error(mysql)); @@ -446,12 +463,27 @@ list_tables(MYSQL *mysql,const char *db,const char *table) if (head_length < field->max_length) head_length=field->max_length; - if (!opt_verbose) - print_header(header,head_length,NullS); - else if (opt_verbose == 1) - print_header(header,head_length,"Columns",8,NullS); + if (opt_table_type) + { + if (!opt_verbose) + print_header(header,head_length,"table_type",10,NullS); + else if (opt_verbose == 1) + print_header(header,head_length,"table_type",10,"Columns",8,NullS); + else + { + print_header(header,head_length,"table_type",10,"Columns",8, + "Total Rows",10,NullS); + } + } else - print_header(header,head_length,"Columns",8, "Total Rows",10,NullS); + { + if (!opt_verbose) + print_header(header,head_length,NullS); + else if (opt_verbose == 1) + print_header(header,head_length,"Columns",8,NullS); + else + print_header(header,head_length,"Columns",8, "Total Rows",10,NullS); + } while ((row = mysql_fetch_row(result))) { @@ -500,17 +532,31 @@ list_tables(MYSQL *mysql,const char *db,const char *table) strmov(rows,"N/A"); } } - if (!opt_verbose) - print_row(row[0],head_length,NullS); - else if (opt_verbose == 1) - print_row(row[0],head_length, fields,8, NullS); - else - print_row(row[0],head_length, fields,8, rows,10, NullS); + if (opt_table_type) + { + if (!opt_verbose) + print_row(row[0],head_length,row[1],10,NullS); + else if (opt_verbose == 1) + print_row(row[0],head_length,row[1],10,fields,8,NullS); + else + print_row(row[0],head_length,row[1],10,fields,8,rows,10,NullS); + } + else + { + if (!opt_verbose) + print_row(row[0],head_length,NullS); + else if (opt_verbose == 1) + print_row(row[0],head_length, fields,8, NullS); + else + print_row(row[0],head_length, fields,8, rows,10, NullS); + } } print_trailer(head_length, - (opt_verbose > 0 ? 8 : 0), - (opt_verbose > 1 ? 10 :0), + (opt_table_type ? 10 : opt_verbose > 0 ? 8 : 0), + (opt_table_type ? (opt_verbose > 0 ? 8 : 0) + : (opt_verbose > 1 ? 10 :0)), + !opt_table_type ? 0 : opt_verbose > 1 ? 10 :0, 0); if (counter && opt_verbose) diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index afed2e2ac84..eb5529c6abe 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -222,6 +222,7 @@ FAILED_CASES= EXTRA_MASTER_OPT="" EXTRA_MYSQL_TEST_OPT="" EXTRA_MYSQLDUMP_OPT="" +EXTRA_MYSQLSHOW_OPT="" EXTRA_MYSQLBINLOG_OPT="" USE_RUNNING_SERVER=0 USE_NDBCLUSTER=@USE_NDBCLUSTER@ @@ -453,6 +454,8 @@ while test $# -gt 0; do --debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqltest.trace" EXTRA_MYSQLDUMP_OPT="$EXTRA_MYSQLDUMP_OPT \ --debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqldump.trace" + EXTRA_MYSQLSHOW_OPT="$EXTRA_MYSQLSHOW_OPT \ + --debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqlshow.trace" EXTRA_MYSQLBINLOG_OPT="$EXTRA_MYSQLBINLOG_OPT \ --debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqlbinlog.trace" EXTRA_MYSQL_CLIENT_TEST_OPT="--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysql_client_test.trace" @@ -556,6 +559,11 @@ if [ x$SOURCE_DIST = x1 ] ; then else MYSQL_DUMP="$BASEDIR/client/mysqldump" fi + if [ -f "$BASEDIR/client/.libs/mysqlshow" ] ; then + MYSQL_SHOW="$BASEDIR/client/.libs/mysqlshow" + else + MYSQL_SHOW="$BASEDIR/client/mysqlshow" + fi if [ -f "$BASEDIR/client/.libs/mysqlbinlog" ] ; then MYSQL_BINLOG="$BASEDIR/client/.libs/mysqlbinlog" else @@ -627,6 +635,7 @@ else fi MYSQL_TEST="$CLIENT_BINDIR/mysqltest" MYSQL_DUMP="$CLIENT_BINDIR/mysqldump" + MYSQL_SHOW="$CLIENT_BINDIR/mysqlshow" MYSQL_BINLOG="$CLIENT_BINDIR/mysqlbinlog" MYSQLADMIN="$CLIENT_BINDIR/mysqladmin" WAIT_PID="$CLIENT_BINDIR/mysql_waitpid" @@ -697,10 +706,11 @@ fi MYSQL_CLIENT_TEST="$MYSQL_CLIENT_TEST --no-defaults --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT --silent $EXTRA_MYSQL_CLIENT_TEST_OPT" MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT" +MYSQL_SHOW="$MYSQL_SHOW -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLSHOW_OPT" MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR --character-sets-dir=$CHARSETSDIR $EXTRA_MYSQLBINLOG_OPT" MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --basedir=$BASEDIR --bindir=$CLIENT_BINDIR --verbose" MYSQL="$MYSQL --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD" -export MYSQL MYSQL_DUMP MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES +export MYSQL MYSQL_DUMP MYSQL_SHOW MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES export CLIENT_BINDIR MYSQL_CLIENT_TEST CHARSETSDIR export NDB_TOOLS_DIR export NDB_MGM @@ -731,7 +741,7 @@ if [ -n "$DO_CLIENT_GDB" -o -n "$DO_GDB" ] ; then XTERM=`which xterm` fi -export MYSQL MYSQL_DUMP MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES CLIENT_BINDIR MASTER_MYSOCK +export MYSQL MYSQL_DUMP MYSQL_SHOW MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES CLIENT_BINDIR MASTER_MYSOCK #++ # Function Definitions diff --git a/mysql-test/r/mysqlshow.result b/mysql-test/r/mysqlshow.result new file mode 100644 index 00000000000..a04a7081b34 --- /dev/null +++ b/mysql-test/r/mysqlshow.result @@ -0,0 +1,76 @@ +CREATE TABLE t1 (a int); +INSERT INTO t1 VALUES (1),(2),(3); +CREATE TABLE t2 (a int, b int); +show tables; +Tables_in_test +t1 +t2 +select "--------------------" as ""; + +-------------------- +Database: test ++--------+ +| Tables | ++--------+ +| t1 | +| t2 | ++--------+ +select "---- -v ------------" as ""; + +---- -v ------------ +Database: test ++--------+----------+ +| Tables | Columns | ++--------+----------+ +| t1 | 1 | +| t2 | 2 | ++--------+----------+ +2 rows in set. + +select "---- -v -v ---------" as ""; + +---- -v -v --------- +Database: test ++--------+----------+------------+ +| Tables | Columns | Total Rows | ++--------+----------+------------+ +| t1 | 1 | 3 | +| t2 | 2 | 0 | ++--------+----------+------------+ +2 rows in set. + +select "----- -t -----------" as ""; + +----- -t ----------- +Database: test ++--------+------------+ +| Tables | table_type | ++--------+------------+ +| t1 | BASE TABLE | +| t2 | BASE TABLE | ++--------+------------+ +select "---- -v -t ---------" as ""; + +---- -v -t --------- +Database: test ++--------+------------+----------+ +| Tables | table_type | Columns | ++--------+------------+----------+ +| t1 | BASE TABLE | 1 | +| t2 | BASE TABLE | 2 | ++--------+------------+----------+ +2 rows in set. + +select "---- -v -v -t ------" as ""; + +---- -v -v -t ------ +Database: test ++--------+------------+----------+------------+ +| Tables | table_type | Columns | Total Rows | ++--------+------------+----------+------------+ +| t1 | BASE TABLE | 1 | 3 | +| t2 | BASE TABLE | 2 | 0 | ++--------+------------+----------+------------+ +2 rows in set. + +DROP TABLE t1, t2; diff --git a/mysql-test/t/mysqlshow.test b/mysql-test/t/mysqlshow.test new file mode 100644 index 00000000000..8da29b91819 --- /dev/null +++ b/mysql-test/t/mysqlshow.test @@ -0,0 +1,20 @@ +# +## Bug #5036 mysqlshow is missing a column +# +CREATE TABLE t1 (a int); +INSERT INTO t1 VALUES (1),(2),(3); +CREATE TABLE t2 (a int, b int); +show tables; +select "--------------------" as ""; +--exec $MYSQL_SHOW test +select "---- -v ------------" as ""; +--exec $MYSQL_SHOW test -v +select "---- -v -v ---------" as ""; +--exec $MYSQL_SHOW test -v -v +select "----- -t -----------" as ""; +--exec $MYSQL_SHOW test -t +select "---- -v -t ---------" as ""; +--exec $MYSQL_SHOW test -v -t +select "---- -v -v -t ------" as ""; +--exec $MYSQL_SHOW test -v -v -t +DROP TABLE t1, t2; |