List:Internals« Previous MessageNext Message »
From:Jim Winstead Date:March 15 2005 7:46pm
Subject:bk commit into 5.0 tree (jimw:1.1812) BUG#5036
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of jimw. When jimw does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.1812 05/03/15 10:46:43 jimw@stripped +4 -0
  Add support for showing table type to mysqlshow command. (Bug #5036)

  mysql-test/t/mysqlshow.test
    1.1 05/03/15 10:46:40 jimw@stripped +20 -0

  mysql-test/r/mysqlshow.result
    1.1 05/03/15 10:46:40 jimw@stripped +76 -0

  mysql-test/t/mysqlshow.test
    1.0 05/03/15 10:46:40 jimw@stripped +0 -0
    BitKeeper file /home/jimw/my/mysql-5.0-5036/mysql-test/t/mysqlshow.test

  mysql-test/r/mysqlshow.result
    1.0 05/03/15 10:46:40 jimw@stripped +0 -0
    BitKeeper file /home/jimw/my/mysql-5.0-5036/mysql-test/r/mysqlshow.result

  mysql-test/mysql-test-run.sh
    1.253 05/03/15 10:46:40 jimw@stripped +12 -2
    Add support for running mysqlshow

  client/mysqlshow.c
    1.40 05/03/15 10:46:40 jimw@stripped +62 -16
    Add support for -t (--show-table-type) switch

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	jimw
# Host:	rama.(none)
# Root:	/home/jimw/my/mysql-5.0-5036

--- 1.39/client/mysqlshow.c	2004-12-09 05:44:02 -08:00
+++ 1.40/client/mysqlshow.c	2005-03-15 10:46:40 -08:00
@@ -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 @@
    "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 @@
 {
   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 @@
 	    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 @@
   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 @@
 	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)

--- 1.252/mysql-test/mysql-test-run.sh	2005-03-13 03:19:22 -08:00
+++ 1.253/mysql-test/mysql-test-run.sh	2005-03-15 10:46:40 -08:00
@@ -222,6 +222,7 @@
 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 @@
        --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 @@
  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 @@
  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 @@
 
 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 @@
   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
--- New file ---
+++ mysql-test/r/mysqlshow.result	05/03/15 10:46:40
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;

--- New file ---
+++ mysql-test/t/mysqlshow.test	05/03/15 10:46:40
#
## 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;

Thread
bk commit into 5.0 tree (jimw:1.1812) BUG#5036Jim Winstead15 Mar