List:Commits« Previous MessageNext Message »
From:Chad MILLER Date:June 28 2007 1:54pm
Subject:bk commit into 5.1 tree (cmiller:1.2515) BUG#26780
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of cmiller. When cmiller 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@stripped, 2007-06-28 07:54:33-04:00, cmiller@stripped +4 -0
  Bug#26780: automatic vertical output for wide results
  
  Feature from Eric Bergen, CLA signed 2007-06-27.
  
  Adds new mysql client option "--auto-vertical-output", which causes
  the client to test whether a result table is too wide for the current
  window (where available) and emit vertical results in that case.
  Otherwise, it sends normal tabular results.

  client/client_priv.h@stripped, 2007-06-28 07:54:21-04:00,
cmiller@stripped +1 -0
    Add another enum value to client options, for automatic vertical output.

  client/mysql.cc@stripped, 2007-06-28 07:54:22-04:00,
cmiller@stripped +87 -1
    Add another command-line option, "auto-vertical-output".
    
    Add functions to get the terminal width and functions to get the widths of fields.
    
    Use them together to emit vertical output when some output table is too wide to
    fit in the terminal.  If the terminal doesn't support reading its width, then assume
    80-positions wide.

  mysql-test/r/mysql.result@stripped, 2007-06-28 07:54:23-04:00,
cmiller@stripped +1360 -0
    Show that various select statements do work as expected.  Wide tables become vertical
    and narrow ones do not.

  mysql-test/t/mysql.test@stripped, 2007-06-28 07:54:24-04:00,
cmiller@stripped +16 -0
    Show that various select statements do work as expected.
    
    These should be suitable for a wide range of window capabilities and sizes.  Under
    extreme circumstances, the results could be arbitrary.

diff -Nrup a/client/client_priv.h b/client/client_priv.h
--- a/client/client_priv.h	2007-04-18 22:47:49 -04:00
+++ b/client/client_priv.h	2007-06-28 07:54:21 -04:00
@@ -63,6 +63,7 @@ enum options_client
   OPT_MYSQL_PRESERVE_SCHEMA,
   OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE,
   OPT_TZ_UTC, OPT_AUTO_CLOSE, OPT_CREATE_SLAP_SCHEMA,
+  OPT_AUTO_VERTICAL_OUTPUT,
   OPT_SLAP_CSV, OPT_SLAP_CREATE_STRING,
   OPT_SLAP_AUTO_GENERATE_SQL_LOAD_TYPE, OPT_SLAP_AUTO_GENERATE_WRITE_NUM,
   OPT_SLAP_AUTO_GENERATE_ADD_AUTO,
diff -Nrup a/client/mysql.cc b/client/mysql.cc
--- a/client/mysql.cc	2007-05-23 18:39:16 -04:00
+++ b/client/mysql.cc	2007-06-28 07:54:22 -04:00
@@ -138,6 +138,7 @@ static my_bool info_flag=0,ignore_errors
 	       tty_password= 0, opt_nobeep=0, opt_reconnect=1,
 	       default_charset_used= 0, opt_secure_auth= 0,
                default_pager_set= 0, opt_sigint_ignore= 0,
+               auto_vertical_output= 0,
                show_warnings= 0, executing_query= 0, interrupted_query= 0;
 static my_bool column_types_flag;
 static ulong opt_max_allowed_packet, opt_net_buffer_length;
@@ -173,6 +174,7 @@ static MEM_ROOT hash_mem_root;
 static uint prompt_counter;
 static char delimiter[16]= DEFAULT_DELIMITER;
 static uint delimiter_length= 1;
+unsigned short terminal_width= 80;
 
 #ifdef HAVE_SMEM
 static char *shared_memory_base_name=0;
@@ -224,6 +226,8 @@ static const char* construct_prompt();
 static char *get_arg(char *line, my_bool get_next_arg);
 static void init_username();
 static void add_int_to_prompt(int toadd);
+static int get_result_width(MYSQL_RES *res);
+static int get_field_disp_length(MYSQL_FIELD * field);
 
 /* A structure which contains information on the commands this program
    can understand. */
@@ -343,6 +347,9 @@ static void mysql_end_timer(ulong start_
 static void nice_time(double sec,char *buff,bool part_second);
 static sig_handler mysql_end(int sig);
 static sig_handler handle_sigint(int sig);
+#if defined(HAVE_TERMIOS_H)
+static sig_handler window_resize(int sig);
+#endif
 
 int main(int argc,char *argv[])
 {
@@ -442,6 +449,13 @@ int main(int argc,char *argv[])
     signal(SIGINT, handle_sigint);              // Catch SIGINT to clean up
   signal(SIGQUIT, mysql_end);			// Catch SIGQUIT to clean up
 
+#if defined(HAVE_TERMIOS_H)
+  /* Readline will call this if it installs a handler */
+  signal(SIGWINCH, window_resize);
+  /* call the SIGWINCH handler to get the default term width */
+  window_resize(0);
+#endif
+
   put_info("Welcome to the MySQL monitor.  Commands end with ; or \\g.",
 	   INFO_INFO);
   sprintf((char*) glob_buffer.ptr(),
@@ -575,6 +589,16 @@ sig_handler handle_sigint(int sig)
 }
 
 
+#if defined(HAVE_TERMIOS_H)
+sig_handler window_resize(int sig)
+{
+  struct winsize window_size;
+
+  if (ioctl(fileno(stdin), TIOCGWINSZ, &window_size) == 0)
+    terminal_width= window_size.ws_col;
+}
+#endif
+
 static struct my_option my_long_options[] =
 {
   {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
@@ -592,6 +616,9 @@ static struct my_option my_long_options[
   {"no-auto-rehash", 'A',
    "No automatic rehashing. One has to use 'rehash' to get table and field completion.
This gives a quicker start of mysql and disables rehashing on reconnect. WARNING: options
deprecated; use --disable-auto-rehash instead.",
    0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
+   {"auto-vertical-output", OPT_AUTO_VERTICAL_OUTPUT,
+    "Automatically switch to vertical output mode if the result is wider than the
terminal width.",
+    (uchar**) &auto_vertical_output, (uchar**) &auto_vertical_output, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
   {"batch", 'B',
    "Don't use history file. Disable interactive behavior. (Enables --silent)", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
   {"character-sets-dir", OPT_CHARSETS_DIR,
@@ -2118,7 +2145,7 @@ com_go(String *buffer,char *line __attri
 	  print_table_data_html(result);
 	else if (opt_xml)
 	  print_table_data_xml(result);
-	else if (vertical)
+	else if (vertical || (auto_vertical_output && (terminal_width <
get_result_width(result))))
 	  print_table_data_vertically(result);
 	else if (opt_silent && verbose <= 2 && !output_tables)
 	  print_tab_data(result);
@@ -2446,6 +2473,65 @@ print_table_data(MYSQL_RES *result)
   my_afree((uchar*) num_flag);
 }
 
+/**
+  Return the length of a field after it would be rendered into text.
+
+  This doesn't know or care about multibyte characters.  Assume we're
+  using such a charset.  We can't know that all of the upcoming rows 
+  for this column will have bytes that each render into some fraction
+  of a character.  It's at least possible that a row has bytes that 
+  all render into one character each, and so the maximum length is 
+  still the number of bytes.  (Assumption 1:  This can't be better 
+  because we can never know the number of characters that the DB is 
+  going to send -- only the number of bytes.  2: Chars <= Bytes.)
+
+  @param  field  Pointer to a field to be inspected
+
+  @returns  number of character positions to be used, at most
+*/
+static int get_field_disp_length(MYSQL_FIELD *field)
+{
+  uint length= column_names ? field->name_length : 0;
+
+  if (quick)
+    length= max(length, field->length);
+  else
+    length= max(length, field->max_length);
+
+  if (length < 4 && !IS_NOT_NULL(field->flags))
+    length= 4;				/* Room for "NULL" */
+
+  return length;
+}
+
+/**
+  For a new result, return the max number of characters that any
+  upcoming row may return.
+
+  @param  result  Pointer to the result to judge
+
+  @returns  The max number of characters in any row of this result
+*/
+static int get_result_width(MYSQL_RES *result)
+{
+  unsigned int len= 0;
+  MYSQL_FIELD *field;
+  MYSQL_FIELD_OFFSET offset;
+  
+#ifndef DBUG_OFF
+  offset= mysql_field_tell(result);
+  DBUG_ASSERT(offset == 0);
+#else
+  offset= 0;
+#endif
+
+  while ((field= mysql_fetch_field(result)) != NULL)
+    len+= get_field_disp_length(field) + 3; /* plus bar, space, & final space */
+
+  (void) mysql_field_seek(result, offset);	
+
+  return len + 1; /* plus final bar. */
+}
 
 static void
 tee_print_sized_data(const char *data, unsigned int data_length, unsigned int
total_bytes_to_send, bool right_justified)
diff -Nrup a/mysql-test/r/mysql.result b/mysql-test/r/mysql.result
--- a/mysql-test/r/mysql.result	2007-04-23 07:28:06 -04:00
+++ b/mysql-test/r/mysql.result	2007-06-28 07:54:23 -04:00
@@ -177,3 +177,1363 @@ ERROR at line 1: DELIMITER cannot contai
 1
 1
 End of 5.0 tests
+*************************** 1. row ***************************
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
+1: 1
+2: 2
+3: 3
+4: 4
+5: 5
+6: 6
+7: 7
+8: 8
+9: 9
+0: 0
++---+
+| 1 |
++---+
+| 1 | 
++---+
++------+
+| NULL | 
++------+
+*************************** 1. row ***************************
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
++------+
+| NULL | 
++------+
+*************************** 1. row ***************************
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
+NULL: NULL
++------+------+------+------+
+| NULL | NULL | NULL | NULL | 
++------+------+------+------+
++------+------+------+------+
+| NULL | NULL | NULL | NULL |
++------+------+------+------+
+| NULL | NULL | NULL | NULL | 
++------+------+------+------+
diff -Nrup a/mysql-test/t/mysql.test b/mysql-test/t/mysql.test
--- a/mysql-test/t/mysql.test	2007-06-01 09:49:38 -04:00
+++ b/mysql-test/t/mysql.test	2007-06-28 07:54:24 -04:00
@@ -275,3 +275,19 @@ EOF
 --exec $MYSQL
--character-sets-dir="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-e "select 1" 2>&1
 
 --echo End of 5.0 tests
+
+#
+# Bug#26780: patch to add auto vertical output option to the cli.
+#
+# Make this wide enough that it will wrap almost everywhere.
+--exec $MYSQL test --auto-vertical-output --table -e "SELECT
1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0;"
+# Too short to wrap.
+--exec $MYSQL test --auto-vertical-output --table -e "SELECT 1;"
+# skip column names
+--exec $MYSQL test --auto-vertical-output --table --skip-column-names -e "SELECT NULL;"
+--exec $MYSQL test --auto-vertical-output --table --skip-column-names -e "SELECT NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NU
 LL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
N
 ULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL;"
+--exec $MYSQL test --auto-vertical-output --table --skip-column-names -e "SELECT NULL;"
+--exec $MYSQL test --auto-vertical-output --table --skip-column-names --quick -e "SELECT
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL
 , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL;"
+# quick
+--exec $MYSQL test --auto-vertical-output --table --skip-column-names --quick -e "SELECT
NULL, NULL, NULL, NULL;"
+--exec $MYSQL test --auto-vertical-output --table --quick -e "SELECT NULL, NULL, NULL,
NULL;"
Thread
bk commit into 5.1 tree (cmiller:1.2515) BUG#26780Chad MILLER28 Jun