MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Tatiana A. Nurnberg Date:March 6 2009 3:11pm
Subject:bzr commit into mysql-5.1-bugteam branch (azundris:2827)
View as plain text  
#At file:///misc/mysql/forest/40657_/51-40657_/ based on revid:azundris@stripped

 2827 Tatiana A. Nurnberg	2009-03-06 [merge]
      manual merge

    added:
      mysql-test/suite/binlog/r/binlog_sql_mode.result
      mysql-test/suite/binlog/t/binlog_sql_mode.test
      mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result
      mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test
    modified:
      .bzrignore
      mysql-test/lib/mtr_gcov.pl
      mysql-test/mysql-test-run.pl
      mysql-test/r/group_by.result
      mysql-test/r/group_min_max.result
      mysql-test/r/lock.result
      mysql-test/r/mysqlcheck.result
      mysql-test/r/preload.result
      mysql-test/r/ps.result
      mysql-test/r/repair.result
      mysql-test/r/show_check.result
      mysql-test/r/skip_name_resolve.result
      mysql-test/r/strict.result
      mysql-test/r/variables.result
      mysql-test/r/view_grant.result
      mysql-test/suite/binlog/r/binlog_unsafe.result
      mysql-test/suite/binlog/t/binlog_unsafe.test
      mysql-test/suite/funcs_1/r/innodb_views.result
      mysql-test/suite/funcs_1/r/is_columns_innodb.result
      mysql-test/suite/funcs_1/r/is_columns_memory.result
      mysql-test/suite/funcs_1/r/is_columns_myisam.result
      mysql-test/suite/funcs_1/r/memory_views.result
      mysql-test/suite/funcs_1/r/myisam_views.result
      mysql-test/suite/funcs_1/r/ndb_views.result
      mysql-test/suite/rpl/r/rpl_failed_optimize.result
      mysql-test/t/ddl_i18n_koi8r.test
      mysql-test/t/ddl_i18n_utf8.test
      mysql-test/t/drop.test
      mysql-test/t/func_group.test
      mysql-test/t/group_by.test
      mysql-test/t/group_min_max.test
      mysql-test/t/lock.test
      mysql-test/t/mysql.test
      mysql-test/t/mysqldump-compat.test
      mysql-test/t/mysqltest.test
      mysql-test/t/show_check.test
      mysql-test/t/skip_name_resolve.test
      mysql-test/t/strict.test
      mysql-test/t/variables.test
      mysql-test/t/view_grant.test
      sql/item_func.cc
      sql/log.cc
      sql/mysqld.cc
      sql/opt_range.cc
      sql/protocol.cc
      sql/rpl_record.cc
      sql/set_var.cc
      sql/share/errmsg.txt
      sql/sp.cc
      sql/sql_cache.cc
      sql/sql_class.cc
      sql/sql_class.h
      sql/sql_lex.cc
      sql/sql_lex.h
      sql/sql_parse.cc
      sql/sql_show.cc
      sql/sql_table.cc
      sql/sql_yacc.yy
      sql/unireg.cc
      storage/innobase/dict/dict0load.c
      storage/innobase/include/rem0rec.h
      storage/innobase/include/rem0rec.ic
      storage/innobase/include/trx0roll.h
      storage/innobase/lock/lock0lock.c
      storage/innobase/trx/trx0roll.c
      storage/innobase/trx/trx0trx.c
=== modified file '.bzrignore'
--- a/.bzrignore	2008-12-13 19:42:12 +0000
+++ b/.bzrignore	2009-02-27 11:20:53 +0000
@@ -1295,6 +1295,8 @@ mysql-test/linux_sys_vars.inc
 mysql-test/load_sysvars.inc
 mysql-test/mtr
 mysql-test/mysql-test-run
+mysql-test/mysql-test-gcov.err
+mysql-test/mysql-test-gcov.msg
 mysql-test/mysql-test-run-shell
 mysql-test/mysql-test-run.log
 mysql-test/mysql_test_run_new

=== modified file 'mysql-test/lib/mtr_gcov.pl'
--- a/mysql-test/lib/mtr_gcov.pl	2008-09-05 12:06:22 +0000
+++ b/mysql-test/lib/mtr_gcov.pl	2009-02-27 11:20:53 +0000
@@ -22,40 +22,46 @@ use strict;
 
 sub gcov_prepare ($) {
   my ($dir)= @_;
+  print "Purging gcov information from '$dir'...\n";
 
-  `find $dir -name \*.gcov \
-    -or -name \*.da | xargs rm`;
+  system("find $dir -name \*.gcov -o -name \*.da"
+             . " -o -name \*.gcda | grep -v 'README.gcov\$' | xargs rm");
 }
 
-my @mysqld_src_dirs=
-  (
-   "strings",
-   "mysys",
-   "include",
-   "extra",
-   "regex",
-   "isam",
-   "merge",
-   "myisam",
-   "myisammrg",
-   "heap",
-   "sql",
-  );
-
+#
+# Collect gcov statistics.
+# Arguments:
+#   $dir       basedir, normally source directory
+#   $gcov      gcov utility program [path] name
+#   $gcov_msg  message file name
+#   $gcov_err  error file name
+#
 sub gcov_collect ($$$) {
   my ($dir, $gcov, $gcov_msg, $gcov_err)= @_;
 
+  # Get current directory to return to later.
   my $start_dir= cwd();
 
-  print "Collecting source coverage info...\n";
-  -f $gcov_msg and unlink($gcov_msg);
-  -f $gcov_err and unlink($gcov_err);
-  foreach my $d ( @mysqld_src_dirs )
-  {
-    chdir("$dir/$d");
-    foreach my $f ( (glob("*.h"), glob("*.cc"), glob("*.c")) )
-    {
-      `$gcov $f 2>>$gcov_err  >>$gcov_msg`;
+  print "Collecting source coverage info using '$gcov'...\n";
+  -f "$start_dir/$gcov_msg" and unlink("$start_dir/$gcov_msg");
+  -f "$start_dir/$gcov_err" and unlink("$start_dir/$gcov_err");
+
+  my @dirs= `find "$dir" -type d -print | sort`;
+  #print "List of directories:\n@dirs\n";
+
+  foreach my $d ( @dirs ) {
+    my $dir_reported= 0;
+    chomp($d);
+    chdir($d) or next;
+
+    foreach my $f ( (glob("*.h"), glob("*.cc"), glob("*.c")) ) {
+      $f =~ /(.*)\.[ch]c?/;
+      -f "$1.gcno" or next;
+      if (!$dir_reported) {
+	print "Collecting in '$d'...\n";
+	$dir_reported= 1;
+      }
+      system("$gcov $f 2>>$start_dir/$gcov_err >>$start_dir/$gcov_msg");
     }
     chdir($start_dir);
   }

=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl	2009-02-13 15:27:33 +0000
+++ b/mysql-test/mysql-test-run.pl	2009-02-27 11:20:53 +0000
@@ -163,8 +163,9 @@ our $opt_force;
 our $opt_mem= $ENV{'MTR_MEM'};
 
 our $opt_gcov;
-our $opt_gcov_err;
-our $opt_gcov_msg;
+our $opt_gcov_exe= "gcov";
+our $opt_gcov_err= "mysql-test-gcov.msg";
+our $opt_gcov_msg= "mysql-test-gcov.err";
 
 our $glob_debugger= 0;
 our $opt_gdb;
@@ -396,7 +397,7 @@ sub main {
   mtr_print_line();
 
   if ( $opt_gcov ) {
-    gcov_collect($basedir, $opt_gcov,
+    gcov_collect($basedir, $opt_gcov_exe,
 		 $opt_gcov_msg, $opt_gcov_err);
   }
 
@@ -5057,6 +5058,8 @@ Misc options
                         to turn off.
 
   sleep=SECONDS         Passed to mysqltest, will be used as fixed sleep time
+  gcov                  Collect coverage information after the test.
+                        The result is a gcov file per source and header file.
 
 HERE
   exit(1);

=== modified file 'mysql-test/r/group_by.result'
--- a/mysql-test/r/group_by.result	2008-11-12 17:51:47 +0000
+++ b/mysql-test/r/group_by.result	2009-02-26 17:17:06 +0000
@@ -1691,3 +1691,15 @@ FROM t1;
 ERROR 21000: Subquery returns more than 1 row
 DROP TABLE t1;
 SET @@sql_mode = @old_sql_mode;
+SET @old_sql_mode = @@sql_mode;
+SET @@sql_mode='ONLY_FULL_GROUP_BY';
+CREATE TABLE t1(i INT);
+INSERT INTO t1 VALUES (1), (10);
+SELECT COUNT(i) FROM t1;
+COUNT(i)
+2
+SELECT COUNT(i) FROM t1 WHERE i > 1;
+COUNT(i)
+1
+DROP TABLE t1;
+SET @@sql_mode = @old_sql_mode;

=== modified file 'mysql-test/r/group_min_max.result'
--- a/mysql-test/r/group_min_max.result	2008-08-28 09:54:50 +0000
+++ b/mysql-test/r/group_min_max.result	2009-02-27 15:07:27 +0000
@@ -2448,3 +2448,18 @@ id	select_type	table	type	possible_keys
 Warnings:
 Note	1003	select sql_buffer_result `test`.`t1`.`a` AS `a`,(max(`test`.`t1`.`b`) + 1) AS `max(b)+1` from `test`.`t1` where (`test`.`t1`.`a` = 0) group by `test`.`t1`.`a`
 drop table t1;
+CREATE TABLE t1 (a int, b int, c int, d int,
+KEY foo (c,d,a,b), KEY bar (c,a,b,d));
+INSERT INTO t1 VALUES (1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 3), (1, 1, 1, 4);
+INSERT INTO t1 SELECT * FROM t1;
+INSERT INTO t1 SELECT * FROM t1;
+INSERT INTO t1 SELECT a,b,c+1,d FROM t1;
+EXPLAIN SELECT DISTINCT c FROM t1 WHERE d=4;
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	range	NULL	foo	10	NULL	9	Using where; Using index for group-by
+SELECT DISTINCT c FROM t1 WHERE d=4;
+c
+1
+2
+DROP TABLE t1;
+End of 5.0 tests

=== modified file 'mysql-test/r/lock.result'
--- a/mysql-test/r/lock.result	2007-08-02 09:59:02 +0000
+++ b/mysql-test/r/lock.result	2009-03-05 14:22:33 +0000
@@ -166,4 +166,31 @@ ERROR HY000: View's SELECT refers to a t
 Cleanup.
 
 drop table t2, t3;
+#
+# Bug#39843 DELETE requires write access to table in subquery in where clause
+#
+DROP TABLE IF EXISTS t1,t2;
+CREATE TABLE t1 (
+table1_rowid SMALLINT NOT NULL
+);
+CREATE TABLE t2 (
+table2_rowid SMALLINT NOT NULL
+);
+INSERT INTO t1 VALUES (1);
+INSERT INTO t2 VALUES (1);
+LOCK TABLES t1 WRITE, t2 READ;
+# Sub-select should not try to aquire a write lock.
+DELETE FROM t1 
+WHERE EXISTS 
+( 
+SELECT 'x' 
+FROM t2
+WHERE t1.table1_rowid = t2.table2_rowid
+) ;
+# While implementing the patch we didn't break old behavior;
+# The following sub-select should still requires a write lock:
+SELECT * FROM t1 WHERE 1 IN (SELECT * FROM t2 FOR UPDATE);
+ERROR HY000: Table 't2' was locked with a READ lock and can't be updated
+UNLOCK TABLES;
+DROP TABLE t1,t2;
 End of 5.1 tests.

=== modified file 'mysql-test/r/mysqlcheck.result'
--- a/mysql-test/r/mysqlcheck.result	2009-01-27 14:10:15 +0000
+++ b/mysql-test/r/mysqlcheck.result	2009-02-27 15:06:23 +0000
@@ -149,7 +149,7 @@ SET NAMES DEFAULT;
 mysqlcheck --default-character-set="latin1" --databases test
 test.?
 Error    : Table doesn't exist
-error    : Corrupt
+status   : Operation failed
 mysqlcheck --default-character-set="utf8" --databases test
 test.я                                            OK
 SET NAMES utf8;

=== modified file 'mysql-test/r/preload.result'
--- a/mysql-test/r/preload.result	2007-06-07 08:53:23 +0000
+++ b/mysql-test/r/preload.result	2009-02-27 15:06:23 +0000
@@ -144,7 +144,7 @@ Key_reads	0
 load index into cache t3, t2 key (primary,b) ;
 Table	Op	Msg_type	Msg_text
 test.t3	preload_keys	Error	Table 'test.t3' doesn't exist
-test.t3	preload_keys	error	Corrupt
+test.t3	preload_keys	status	Operation failed
 test.t2	preload_keys	status	OK
 show status like "key_read%";
 Variable_name	Value
@@ -159,7 +159,7 @@ Key_reads	0
 load index into cache t3 key (b), t2 key (c) ;
 Table	Op	Msg_type	Msg_text
 test.t3	preload_keys	Error	Table 'test.t3' doesn't exist
-test.t3	preload_keys	error	Corrupt
+test.t3	preload_keys	status	Operation failed
 test.t2	preload_keys	Error	Key 'c' doesn't exist in table 't2'
 test.t2	preload_keys	status	Operation failed
 show status like "key_read%";

=== modified file 'mysql-test/r/ps.result'
--- a/mysql-test/r/ps.result	2009-02-27 20:43:43 +0000
+++ b/mysql-test/r/ps.result	2009-03-06 15:11:34 +0000
@@ -1396,13 +1396,13 @@ execute stmt;
 Table	Op	Msg_type	Msg_text
 test.t1	repair	status	OK
 test.t4	repair	Error	Table 'test.t4' doesn't exist
-test.t4	repair	error	Corrupt
+test.t4	repair	status	Operation failed
 test.t3	repair	status	OK
 execute stmt;
 Table	Op	Msg_type	Msg_text
 test.t1	repair	status	OK
 test.t4	repair	Error	Table 'test.t4' doesn't exist
-test.t4	repair	error	Corrupt
+test.t4	repair	status	Operation failed
 test.t3	repair	status	OK
 prepare stmt from "optimize table t1, t3, t4";
 execute stmt;
@@ -1410,23 +1410,23 @@ Table	Op	Msg_type	Msg_text
 test.t1	optimize	status	OK
 test.t3	optimize	status	OK
 test.t4	optimize	Error	Table 'test.t4' doesn't exist
-test.t4	optimize	error	Corrupt
+test.t4	optimize	status	Operation failed
 execute stmt;
 Table	Op	Msg_type	Msg_text
 test.t1	optimize	status	Table is already up to date
 test.t3	optimize	status	Table is already up to date
 test.t4	optimize	Error	Table 'test.t4' doesn't exist
-test.t4	optimize	error	Corrupt
+test.t4	optimize	status	Operation failed
 prepare stmt from "analyze table t4, t1";
 execute stmt;
 Table	Op	Msg_type	Msg_text
 test.t4	analyze	Error	Table 'test.t4' doesn't exist
-test.t4	analyze	error	Corrupt
+test.t4	analyze	status	Operation failed
 test.t1	analyze	status	Table is already up to date
 execute stmt;
 Table	Op	Msg_type	Msg_text
 test.t4	analyze	Error	Table 'test.t4' doesn't exist
-test.t4	analyze	error	Corrupt
+test.t4	analyze	status	Operation failed
 test.t1	analyze	status	Table is already up to date
 deallocate prepare stmt;
 drop table t1, t2, t3;

=== modified file 'mysql-test/r/repair.result'
--- a/mysql-test/r/repair.result	2008-06-18 01:05:56 +0000
+++ b/mysql-test/r/repair.result	2009-02-27 15:06:23 +0000
@@ -27,7 +27,7 @@ drop table t1;
 repair table t1 use_frm;
 Table	Op	Msg_type	Msg_text
 test.t1	repair	Error	Table 'test.t1' doesn't exist
-test.t1	repair	error	Corrupt
+test.t1	repair	status	Operation failed
 create table t1 engine=myisam SELECT 1,"table 1";
 flush tables;
 repair table t1;

=== modified file 'mysql-test/r/show_check.result'
--- a/mysql-test/r/show_check.result	2009-02-16 11:38:15 +0000
+++ b/mysql-test/r/show_check.result	2009-03-02 10:22:38 +0000
@@ -1198,7 +1198,7 @@ CREATE DATABASE mysqltest1;
 use mysqltest1;
 CREATE TABLE t1(ËÏÌÏÎËÁ1 INT);
 
----> Dumping mysqltest1 to show_check.mysqltest1.sql
+---> Dumping mysqltest1 to outfile1
 
 
 DROP DATABASE mysqltest1;

=== modified file 'mysql-test/r/skip_name_resolve.result'
--- a/mysql-test/r/skip_name_resolve.result	2006-07-04 16:44:35 +0000
+++ b/mysql-test/r/skip_name_resolve.result	2009-03-04 12:33:56 +0000
@@ -9,6 +9,3 @@ select user();
 user()
 #
 show processlist;
-Id	User	Host	db	Command	Time	State	Info
-<id>	root	<host>	test	<command>	<time>	<state>	<info>
-<id>	root	<host>	test	<command>	<time>	<state>	<info>

=== modified file 'mysql-test/r/strict.result'
--- a/mysql-test/r/strict.result	2008-12-01 04:17:52 +0000
+++ b/mysql-test/r/strict.result	2009-03-05 11:20:01 +0000
@@ -1305,7 +1305,7 @@ set @@sql_mode='traditional';
 create table t1 (i int)
 comment '123456789*123456789*123456789*123456789*123456789*
          123456789*123456789*123456789*123456789*123456789*';
-ERROR HY000: Too long comment for table 't1'
+ERROR HY000: Comment for table 't1' is too long (max = 60)
 create table t1 (
 i int comment
 '123456789*123456789*123456789*123456789*
@@ -1315,7 +1315,7 @@ i int comment
  123456789*123456789*123456789*123456789*
  123456789*123456789*123456789*123456789*
  123456789*123456789*123456789*123456789*');
-ERROR HY000: Too long comment for field 'i'
+ERROR HY000: Comment for field 'i' is too long (max = 255)
 set @@sql_mode= @org_mode;
 create table t1
 (i int comment
@@ -1327,7 +1327,7 @@ create table t1
   123456789*123456789*123456789*123456789*
   123456789*123456789*123456789*123456789*');
 Warnings:
-Warning	1105	Unknown error
+Warning	1629	Comment for field 'i' is too long (max = 255)
 select column_name, column_comment from information_schema.columns where
 table_schema = 'test' and table_name = 't1';
 column_name	column_comment

=== modified file 'mysql-test/r/variables.result'
--- a/mysql-test/r/variables.result	2009-02-27 20:43:43 +0000
+++ b/mysql-test/r/variables.result	2009-03-06 15:11:34 +0000
@@ -299,59 +299,107 @@ set @@rand_seed1=10000000,@@rand_seed2=1
 select ROUND(RAND(),5);
 ROUND(RAND(),5)
 0.02887
-show variables like '%alloc%';
+
+==+ Testing %alloc% system variables +==
+==+ NOTE:  These values *must* be a multiple of 1024 +==
+==+ Other values will be rounded down to nearest multiple +==
+
+==+ Show initial values +==
+SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size');
 Variable_name	Value
 query_alloc_block_size	8192
 query_prealloc_size	8192
 range_alloc_block_size	4096
 transaction_alloc_block_size	8192
 transaction_prealloc_size	4096
-select * from information_schema.session_variables where variable_name like '%alloc%' order by 1;
+==+ information_schema data +==
+SELECT * FROM information_schema.session_variables 
+WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size') ORDER BY 1;
 VARIABLE_NAME	VARIABLE_VALUE
 QUERY_ALLOC_BLOCK_SIZE	8192
 QUERY_PREALLOC_SIZE	8192
 RANGE_ALLOC_BLOCK_SIZE	4096
 TRANSACTION_ALLOC_BLOCK_SIZE	8192
 TRANSACTION_PREALLOC_SIZE	4096
-set @@range_alloc_block_size=1024*16;
+Testing values that are multiples of 1024
+set @@range_alloc_block_size=1024*15+1024;
+set @@query_alloc_block_size=1024*15+1024*2;
+set @@query_prealloc_size=1024*18-1024;
+set @@transaction_alloc_block_size=1024*21-1024*1;
+set @@transaction_prealloc_size=1024*21-2048;
+==+ Check manipulated values ==+
+select @@query_alloc_block_size;
+@@query_alloc_block_size
+17408
+SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size');
+Variable_name	Value
+query_alloc_block_size	17408
+query_prealloc_size	17408
+range_alloc_block_size	16384
+transaction_alloc_block_size	20480
+transaction_prealloc_size	19456
+==+ information_schema data +==
+SELECT * FROM information_schema.session_variables
+WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size') ORDER BY 1;
+VARIABLE_NAME	VARIABLE_VALUE
+QUERY_ALLOC_BLOCK_SIZE	17408
+QUERY_PREALLOC_SIZE	17408
+RANGE_ALLOC_BLOCK_SIZE	16384
+TRANSACTION_ALLOC_BLOCK_SIZE	20480
+TRANSACTION_PREALLOC_SIZE	19456
+==+ Manipulate variable values +==
+Testing values that are not 1024 multiples
+set @@range_alloc_block_size=1024*16+1023;
 set @@query_alloc_block_size=1024*17+2;
-set @@query_prealloc_size=1024*18;
+set @@query_prealloc_size=1024*18-1023;
 set @@transaction_alloc_block_size=1024*20-1;
 set @@transaction_prealloc_size=1024*21-1;
 select @@query_alloc_block_size;
 @@query_alloc_block_size
 17408
-show variables like '%alloc%';
+==+ Check manipulated values ==+
+SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size');
 Variable_name	Value
 query_alloc_block_size	17408
-query_prealloc_size	18432
+query_prealloc_size	17408
 range_alloc_block_size	16384
 transaction_alloc_block_size	19456
 transaction_prealloc_size	20480
-select * from information_schema.session_variables where variable_name like '%alloc%' order by 1;
+==+ information_schema data +==
+SELECT * FROM information_schema.session_variables 
+WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size') ORDER BY 1;
 VARIABLE_NAME	VARIABLE_VALUE
 QUERY_ALLOC_BLOCK_SIZE	17408
-QUERY_PREALLOC_SIZE	18432
+QUERY_PREALLOC_SIZE	17408
 RANGE_ALLOC_BLOCK_SIZE	16384
 TRANSACTION_ALLOC_BLOCK_SIZE	19456
 TRANSACTION_PREALLOC_SIZE	20480
+==+ Set values back to the default values +==
 set @@range_alloc_block_size=default;
 set @@query_alloc_block_size=default, @@query_prealloc_size=default;
 set transaction_alloc_block_size=default, @@transaction_prealloc_size=default;
-show variables like '%alloc%';
+==+ Check the values now that they are reset +==
+SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size');
 Variable_name	Value
 query_alloc_block_size	8192
 query_prealloc_size	8192
 range_alloc_block_size	4096
 transaction_alloc_block_size	8192
 transaction_prealloc_size	4096
-select * from information_schema.session_variables where variable_name like '%alloc%' order by 1;
-VARIABLE_NAME	VARIABLE_VALUE
-QUERY_ALLOC_BLOCK_SIZE	8192
-QUERY_PREALLOC_SIZE	8192
-RANGE_ALLOC_BLOCK_SIZE	4096
-TRANSACTION_ALLOC_BLOCK_SIZE	8192
-TRANSACTION_PREALLOC_SIZE	4096
 SELECT @@version LIKE 'non-existent';
 @@version LIKE 'non-existent'
 0
@@ -1373,4 +1421,9 @@ SELECT @@global.expire_logs_days;
 @@global.expire_logs_days
 99
 SET GLOBAL expire_logs_days = @old_eld;
+select @@storage_engine;
+Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
+def					@@storage_engine	253	6	6	N	1	31	8
+@@storage_engine
+MyISAM
 End of 5.1 tests

=== modified file 'mysql-test/r/view_grant.result'
--- a/mysql-test/r/view_grant.result	2009-02-25 12:18:24 +0000
+++ b/mysql-test/r/view_grant.result	2009-02-26 17:20:50 +0000
@@ -921,6 +921,32 @@ c4
 DROP DATABASE mysqltest1;
 DROP DATABASE mysqltest2;
 DROP USER mysqltest_u1@localhost;
+CREATE DATABASE db1;
+USE db1;
+CREATE TABLE t1(f1 INT, f2 INT);
+CREATE VIEW v1 AS SELECT f1, f2 FROM t1;
+GRANT SELECT (f1) ON t1 TO foo;
+GRANT SELECT (f1) ON v1 TO foo;
+USE db1;
+SELECT f1 FROM t1;
+f1
+SELECT f2 FROM t1;
+ERROR 42000: SELECT command denied to user 'foo'@'localhost' for column 'f2' in table 't1'
+SELECT * FROM t1;
+ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 't1'
+SELECT f1 FROM v1;
+f1
+SELECT f2 FROM v1;
+ERROR 42000: SELECT command denied to user 'foo'@'localhost' for column 'f2' in table 'v1'
+SELECT * FROM v1;
+ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 'v1'
+USE test;
+REVOKE SELECT (f1) ON db1.t1 FROM foo;
+REVOKE SELECT (f1) ON db1.v1 FROM foo;
+DROP USER foo;
+DROP VIEW db1.v1;
+DROP TABLE db1.t1;
+DROP DATABASE db1;
 End of 5.0 tests.
 DROP VIEW IF EXISTS v1;
 DROP TABLE IF EXISTS t1;

=== added file 'mysql-test/suite/binlog/r/binlog_sql_mode.result'
--- a/mysql-test/suite/binlog/r/binlog_sql_mode.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/binlog/r/binlog_sql_mode.result	2009-02-28 01:35:18 +0000
@@ -0,0 +1,46 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+SET @old_sql_mode=  @@global.sql_mode;
+SET @old_binlog_format=@@session.binlog_format;
+SET SESSION sql_mode=8;
+Initialization 
+RESET MASTER;
+CREATE TABLE t1 (id INT);
+CREATE PROCEDURE testProc() SELECT * FROM t1;
+CREATE VIEW testView as SELECT * from t1;
+CREATE FUNCTION testFunc()
+RETURNS INT
+BEGIN
+return 1;
+END;|
+CREATE TRIGGER testTrig BEFORE INSERT ON t1
+FOR EACH ROW BEGIN
+UPDATE t1 SET id = id +1;
+END;|
+CREATE EVENT testEvent ON SCHEDULE
+EVERY 1 DAY
+DO
+BEGIN
+UPDATE t1 SET id = id +1;
+END;|
+Chceck Result
+select
+(@a:=load_file("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug39526.binlog"))
+is not null;
+(@a:=load_file("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug39526.binlog"))
+is not null
+1
+*** String sql_mode=0 is found: 0 ***
+Clean Up
+DROP PROCEDURE testProc;
+DROP FUNCTION testFunc;
+DROP TRIGGER testTrig;
+DROP EVENT testEvent;
+DROP VIEW testView;
+DROP TABLE t1;
+SET @@global.sql_mode= @old_sql_mode;
+SET @@session.binlog_format=@old_binlog_format;

=== modified file 'mysql-test/suite/binlog/r/binlog_unsafe.result'
--- a/mysql-test/suite/binlog/r/binlog_unsafe.result	2009-02-09 18:17:58 +0000
+++ b/mysql-test/suite/binlog/r/binlog_unsafe.result	2009-03-05 18:39:02 +0000
@@ -227,3 +227,86 @@ UPDATE t1 SET b = '%s%s%s%s%s%s%s%s%s%s%
 Warnings:
 Warning	1592	Statement is not safe to log in statement format.
 DROP TABLE t1;
+DROP TABLE IF EXISTS t1, t2;
+CREATE TABLE t1(i INT PRIMARY KEY);
+CREATE TABLE t2(i INT PRIMARY KEY);
+CREATE TABLE t3(i INT, ch CHAR(50));
+"Should issue message Statement is not safe to log in statement format."
+INSERT INTO t1 SELECT * FROM t2 LIMIT 1;
+Warnings:
+Warning	1592	Statement is not safe to log in statement format.
+CREATE FUNCTION func6()
+RETURNS INT
+BEGIN
+INSERT INTO t1 VALUES (10);
+INSERT INTO t1 VALUES (11);
+INSERT INTO t1 VALUES (12);
+RETURN 0;
+END|
+"Should issue message Statement is not safe to log in statement format only once"
+INSERT INTO t3 VALUES(func6(), UUID());
+Warnings:
+Warning	1592	Statement is not safe to log in statement format.
+"Check whether SET @@SQL_LOG_BIN = 0/1 doesn't work in substatements"
+CREATE FUNCTION fun_check_log_bin() RETURNS INT
+BEGIN
+SET @@SQL_LOG_BIN = 0;
+INSERT INTO t1 VALUES(@@global.sync_binlog);
+RETURN 100;
+END|
+"One unsafe warning should be issued in the following statement"
+SELECT fun_check_log_bin();
+fun_check_log_bin()
+100
+Warnings:
+Warning	1592	Statement is not safe to log in statement format.
+"SQL_LOG_BIN should be ON still"
+SHOW VARIABLES LIKE "SQL_LOG_BIN";
+Variable_name	Value
+sql_log_bin	ON
+set @save_log_bin = @@SESSION.SQL_LOG_BIN;
+set @@SESSION.SQL_LOG_BIN = 0;
+"Should NOT have any warning message issued in the following statements"
+INSERT INTO t1 SELECT * FROM t2 LIMIT 1;
+DROP TABLE t1,t2;
+"Should NOT have any warning message issued in the following func7() and trig"
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (a CHAR(40));
+CREATE TABLE trigger_table (a CHAR(7));
+CREATE FUNCTION func7()
+RETURNS INT
+BEGIN
+INSERT INTO t1 VALUES (@@global.sync_binlog);
+INSERT INTO t1 VALUES (@@session.insert_id);
+INSERT INTO t2 SELECT UUID();
+INSERT INTO t2 VALUES (@@session.sql_mode);
+INSERT INTO t2 VALUES (@@global.init_slave);
+RETURN 0;
+END|
+SHOW VARIABLES LIKE "SQL_LOG_BIN";
+Variable_name	Value
+sql_log_bin	OFF
+SELECT func7();
+func7()
+0
+---- Insert from trigger ----
+CREATE TRIGGER trig
+BEFORE INSERT ON trigger_table
+FOR EACH ROW
+BEGIN
+INSERT INTO t1 VALUES (@@global.sync_binlog);
+INSERT INTO t1 VALUES (@@session.insert_id);
+INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+INSERT INTO t2 SELECT UUID();
+INSERT INTO t2 VALUES (@@session.sql_mode);
+INSERT INTO t2 VALUES (@@global.init_slave);
+INSERT INTO t2 VALUES (@@hostname);
+END|
+INSERT INTO trigger_table VALUES ('bye.');
+DROP FUNCTION fun_check_log_bin;
+DROP FUNCTION func6;
+DROP FUNCTION func7;
+DROP TRIGGER  trig;
+DROP TABLE t1, t2, t3, trigger_table;
+set @@SESSION.SQL_LOG_BIN = @save_log_bin;
+"End of tests"

=== added file 'mysql-test/suite/binlog/t/binlog_sql_mode.test'
--- a/mysql-test/suite/binlog/t/binlog_sql_mode.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/binlog/t/binlog_sql_mode.test	2009-02-28 01:35:18 +0000
@@ -0,0 +1,76 @@
+# ==== Purpose ====
+#
+# Test that sql_mode can correct restore before generating the binlog event
+#    when creating CREATEable objects.
+#
+# ==== Method ====
+#
+# Scan binlog file to check if the sql_mode is still set to 0 before generating binlog event
+#
+
+-- source include/master-slave.inc
+-- source include/have_log_bin.inc
+
+# BUG#39526 sql_mode not retained in binary log for CREATE PROCEDURE
+
+SET @old_sql_mode=  @@global.sql_mode;
+SET @old_binlog_format=@@session.binlog_format;
+let $MYSQLD_DATADIR= `select @@datadir`;
+SET SESSION sql_mode=8;
+
+--echo Initialization 
+
+RESET MASTER;
+CREATE TABLE t1 (id INT);
+
+CREATE PROCEDURE testProc() SELECT * FROM t1;
+CREATE VIEW testView as SELECT * from t1;
+
+DELIMITER |;
+CREATE FUNCTION testFunc()
+  RETURNS INT
+  BEGIN
+    return 1;
+  END;|
+DELIMITER ;|
+
+DELIMITER |;
+CREATE TRIGGER testTrig BEFORE INSERT ON t1
+  FOR EACH ROW BEGIN
+    UPDATE t1 SET id = id +1;
+  END;|
+DELIMITER ;|
+
+DELIMITER |;
+CREATE EVENT testEvent ON SCHEDULE
+  EVERY 1 DAY
+  DO
+    BEGIN
+      UPDATE t1 SET id = id +1;
+    END;|
+DELIMITER ;|
+
+--echo Chceck Result
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug39526.binlog
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+eval select
+(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug39526.binlog"))
+is not null;
+let $s_mode_unsigned= `select @a like "%@@session.sql_mode=0%" /* must return 0 */`;
+echo *** String sql_mode=0 is found: $s_mode_unsigned ***;
+
+--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug39526.binlog
+
+--echo Clean Up
+
+DROP PROCEDURE testProc;
+DROP FUNCTION testFunc;
+DROP TRIGGER testTrig;
+DROP EVENT testEvent;
+DROP VIEW testView;
+DROP TABLE t1;
+
+SET @@global.sql_mode= @old_sql_mode;
+SET @@session.binlog_format=@old_binlog_format;

=== modified file 'mysql-test/suite/binlog/t/binlog_unsafe.test'
--- a/mysql-test/suite/binlog/t/binlog_unsafe.test	2009-02-09 18:17:58 +0000
+++ b/mysql-test/suite/binlog/t/binlog_unsafe.test	2009-03-05 18:39:02 +0000
@@ -8,6 +8,7 @@
 # executed cannot be determined (e.g., INSERT DELAYED).  Such
 # statements should be marked unsafe.  All unsafe statements should
 # give a warning.
+# Yet the warning/error message isn't issued when SQL_LOG_BIN is turned off.
 #
 # This test verifies that a warning is generated for statements that
 # should be unsafe, when they are executed under statement mode
@@ -32,14 +33,19 @@
 # We try to insert the variables that should not be unsafe into a
 # table, and verify that *no* warning is issued.
 #
-#
+# Execute a unsafe statement calling a trigger or stored function
+# or neither when SQL_LOG_BIN is turned ON, a warning/error should be issued
+# Execute a unsafe statement calling a trigger or stored function
+# or neither when @@SQL_LOG_BIN is turned OFF,
+# no warning/error is issued
+
 # ==== Related bugs and worklogs ====
 #
 # WL#3339: Issue warnings when statement-based replication may fail
 # BUG#31168: @@hostname does not replicate
 # BUG#34732: mysqlbinlog does not print default values for auto_increment variables
 # BUG#34768: nondeterministic INSERT using LIMIT logged in stmt mode if binlog_format=mixed
-#
+# BUG#41980, SBL, INSERT .. SELECT .. LIMIT = ERROR, even when @@SQL_LOG_BIN is 0
 #
 # ==== Related test cases ====
 #
@@ -271,3 +277,96 @@ INSERT INTO t1 VALUES ('a','b');
 UPDATE t1 SET b = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s' WHERE a = 'a' LIMIT 1;
 DROP TABLE t1;
 
+#
+#For bug#41980, SBL, INSERT .. SELECT .. LIMIT = ERROR, even when @@SQL_LOG_BIN is 0 
+#
+
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+--enable_warnings
+CREATE TABLE t1(i INT PRIMARY KEY);
+CREATE TABLE t2(i INT PRIMARY KEY);
+CREATE TABLE t3(i INT, ch CHAR(50));
+
+--echo "Should issue message Statement is not safe to log in statement format."
+INSERT INTO t1 SELECT * FROM t2 LIMIT 1;
+
+DELIMITER |;
+CREATE FUNCTION func6()
+RETURNS INT
+BEGIN
+  INSERT INTO t1 VALUES (10);
+  INSERT INTO t1 VALUES (11);
+  INSERT INTO t1 VALUES (12);
+  RETURN 0;
+END|
+DELIMITER ;|
+--echo "Should issue message Statement is not safe to log in statement format only once"
+INSERT INTO t3 VALUES(func6(), UUID());
+
+--echo "Check whether SET @@SQL_LOG_BIN = 0/1 doesn't work in substatements"
+DELIMITER |;
+CREATE FUNCTION fun_check_log_bin() RETURNS INT
+BEGIN
+  SET @@SQL_LOG_BIN = 0;
+  INSERT INTO t1 VALUES(@@global.sync_binlog);
+  RETURN 100;
+END|
+DELIMITER ;|
+--echo "One unsafe warning should be issued in the following statement"
+SELECT fun_check_log_bin();
+--echo "SQL_LOG_BIN should be ON still"
+SHOW VARIABLES LIKE "SQL_LOG_BIN";
+
+set @save_log_bin = @@SESSION.SQL_LOG_BIN;
+set @@SESSION.SQL_LOG_BIN = 0;
+--echo "Should NOT have any warning message issued in the following statements"
+INSERT INTO t1 SELECT * FROM t2 LIMIT 1;
+DROP TABLE t1,t2;
+
+--echo "Should NOT have any warning message issued in the following func7() and trig"
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (a CHAR(40));
+CREATE TABLE trigger_table (a CHAR(7));
+DELIMITER |;
+CREATE FUNCTION func7()
+RETURNS INT
+BEGIN
+  INSERT INTO t1 VALUES (@@global.sync_binlog);
+  INSERT INTO t1 VALUES (@@session.insert_id);
+  INSERT INTO t2 SELECT UUID();
+  INSERT INTO t2 VALUES (@@session.sql_mode);
+  INSERT INTO t2 VALUES (@@global.init_slave);
+  RETURN 0;
+END|
+DELIMITER ;|
+SHOW VARIABLES LIKE "SQL_LOG_BIN";
+SELECT func7();
+
+--echo ---- Insert from trigger ----
+
+DELIMITER |;
+CREATE TRIGGER trig
+BEFORE INSERT ON trigger_table
+FOR EACH ROW
+BEGIN
+  INSERT INTO t1 VALUES (@@global.sync_binlog);
+  INSERT INTO t1 VALUES (@@session.insert_id);
+  INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+  INSERT INTO t2 SELECT UUID();
+  INSERT INTO t2 VALUES (@@session.sql_mode);
+  INSERT INTO t2 VALUES (@@global.init_slave);
+  INSERT INTO t2 VALUES (@@hostname);
+END|
+DELIMITER ;|
+
+INSERT INTO trigger_table VALUES ('bye.');
+
+#clean up
+DROP FUNCTION fun_check_log_bin;
+DROP FUNCTION func6;
+DROP FUNCTION func7;
+DROP TRIGGER  trig;
+DROP TABLE t1, t2, t3, trigger_table;
+set @@SESSION.SQL_LOG_BIN = @save_log_bin;
+--echo "End of tests"

=== modified file 'mysql-test/suite/funcs_1/r/innodb_views.result'
--- a/mysql-test/suite/funcs_1/r/innodb_views.result	2009-01-31 19:22:59 +0000
+++ b/mysql-test/suite/funcs_1/r/innodb_views.result	2009-02-27 15:06:23 +0000
@@ -21367,7 +21367,7 @@ ERROR 42S02: Table 'test.v1' doesn't exi
 CHECK TABLE v1;
 Table	Op	Msg_type	Msg_text
 test.v1	check	Error	Table 'test.v1' doesn't exist
-test.v1	check	error	Corrupt
+test.v1	check	status	Operation failed
 DESCRIBE v1;
 ERROR 42S02: Table 'test.v1' doesn't exist
 EXPLAIN SELECT * FROM v1;

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_innodb.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_innodb.result	2009-01-31 19:22:59 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_innodb.result	2009-03-05 11:15:47 +0000
@@ -485,7 +485,7 @@ NULL	test	tb1	f6	6	NULL	YES	mediumtext	1
 NULL	test	tb1	f7	7	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	latin1	latin1_swedish_ci	longtext			select,insert,update,references	
 NULL	test	tb1	f8	8	NULL	YES	tinyblob	255	255	NULL	NULL	NULL	NULL	tinyblob			select,insert,update,references	
 NULL	test	tb1	f9	9	NULL	YES	blob	65535	65535	NULL	NULL	NULL	NULL	blob			select,insert,update,references	
-NULL	test	tb2	f100	42	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f100	42	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f101	43	2000-01-01	NO	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
 NULL	test	tb2	f102	44	00:00:20	NO	time	NULL	NULL	NULL	NULL	NULL	NULL	time			select,insert,update,references	
 NULL	test	tb2	f103	45	0002-02-02 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select,insert,update,references	
@@ -510,32 +510,32 @@ NULL	test	tb2	f70	12	NULL	YES	decimal	NU
 NULL	test	tb2	f71	13	NULL	YES	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f72	14	NULL	YES	decimal	NULL	NULL	63	30	NULL	NULL	decimal(63,30) unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f73	15	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb2	f74	16	NULL	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb2	f75	17	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f76	18	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f74	16	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb2	f75	17	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f76	18	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f77	19	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb2	f78	20	7.7	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb2	f79	21	00000000000000000007.7	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f80	22	00000000000000000008.8	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f78	20	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb2	f79	21	00000000000000000007.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f80	22	00000000000000000008.8	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f81	23	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb2	f82	24	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f83	25	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f84	26	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f82	24	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f83	25	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f84	26	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f85	27	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb2	f86	28	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb2	f87	29	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f88	30	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f89	31	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f90	32	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f91	33	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f92	34	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f87	29	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f88	30	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f89	31	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f90	32	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f91	33	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f92	34	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f93	35	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb2	f94	36	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb2	f95	37	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f96	38	8.8	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb2	f97	39	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f98	40	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f99	41	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f95	37	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f96	38	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb2	f97	39	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f98	40	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f99	41	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb3	f118	1	a	NO	char	1	1	NULL	NULL	latin1	latin1_swedish_ci	char(1)			select,insert,update,references	
 NULL	test	tb3	f119	2		NO	char	1	1	NULL	NULL	latin1	latin1_bin	char(1)			select,insert,update,references	
 NULL	test	tb3	f120	3		NO	char	1	1	NULL	NULL	latin1	latin1_swedish_ci	char(1)			select,insert,update,references	
@@ -609,33 +609,33 @@ NULL	test	tb4	f187	12	000000000000000000
 NULL	test	tb4	f188	13	0000000009	NO	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f189	14	000000000000000000000000000000009.000000000000000000000000000000	NO	decimal	NULL	NULL	63	30	NULL	NULL	decimal(63,30) unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f190	15	88.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb4	f191	16	88.8	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb4	f192	17	00000000000000000088.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f193	18	00000000000000000088.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f191	16	88.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb4	f192	17	00000000000000000088.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f193	18	00000000000000000088.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f194	19	55.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb4	f195	20	55.5	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb4	f196	21	00000000000000000055.5	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f197	22	00000000000000000055.5	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f195	20	55.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb4	f196	21	00000000000000000055.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f197	22	00000000000000000055.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f198	23	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb4	f199	24	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f200	25	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f201	26	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f199	24	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f200	25	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f201	26	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f202	27	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb4	f203	28	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb4	f204	29	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f205	30	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f206	31	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f207	32	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f208	33	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f209	34	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f204	29	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f205	30	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f206	31	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f207	32	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f208	33	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f209	34	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f210	35	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb4	f211	36	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb4	f212	37	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f213	38	NULL	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb4	f214	39	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f215	40	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f216	41	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f217	42	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f212	37	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f213	38	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb4	f214	39	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f215	40	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f216	41	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f217	42	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f218	43	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
 NULL	test	tb4	f219	44	NULL	YES	time	NULL	NULL	NULL	NULL	NULL	NULL	time			select,insert,update,references	
 NULL	test	tb4	f220	45	NULL	YES	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select,insert,update,references	
@@ -652,7 +652,7 @@ NULL	test	tb4	f238	55	NULL	YES	varchar	0
 NULL	test	tb4	f239	56	NULL	YES	varchar	20000	20000	NULL	NULL	latin1	latin1_bin	varchar(20000)			select,insert,update,references	
 NULL	test	tb4	f240	57	NULL	YES	varchar	2000	2000	NULL	NULL	latin1	latin1_swedish_ci	varchar(2000)			select,insert,update,references	
 NULL	test	tb4	f241	58	NULL	YES	char	100	100	NULL	NULL	latin1	latin1_swedish_ci	char(100)			select,insert,update,references	
-NULL	test1	tb2	f100	42	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f100	42	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f101	43	2000-01-01	NO	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
 NULL	test1	tb2	f102	44	00:00:20	NO	time	NULL	NULL	NULL	NULL	NULL	NULL	time			select,insert,update,references	
 NULL	test1	tb2	f103	45	0002-02-02 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select,insert,update,references	
@@ -677,32 +677,32 @@ NULL	test1	tb2	f70	12	NULL	YES	decimal	N
 NULL	test1	tb2	f71	13	NULL	YES	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f72	14	NULL	YES	decimal	NULL	NULL	63	30	NULL	NULL	decimal(63,30) unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f73	15	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test1	tb2	f74	16	NULL	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test1	tb2	f75	17	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f76	18	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f74	16	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test1	tb2	f75	17	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f76	18	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f77	19	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test1	tb2	f78	20	7.7	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test1	tb2	f79	21	00000000000000000007.7	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f80	22	00000000000000000008.8	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f78	20	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test1	tb2	f79	21	00000000000000000007.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f80	22	00000000000000000008.8	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f81	23	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test1	tb2	f82	24	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f83	25	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f84	26	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f82	24	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f83	25	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f84	26	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f85	27	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test1	tb2	f86	28	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test1	tb2	f87	29	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f88	30	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f89	31	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f90	32	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f91	33	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f92	34	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f87	29	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f88	30	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f89	31	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f90	32	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f91	33	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f92	34	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f93	35	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test1	tb2	f94	36	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test1	tb2	f95	37	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f96	38	8.8	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test1	tb2	f97	39	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f98	40	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f99	41	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f95	37	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f96	38	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test1	tb2	f97	39	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f98	40	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f99	41	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test4	t6	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
 NULL	test4	t6	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
 NULL	test4	t6	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
@@ -762,11 +762,7 @@ NULL	date	NULL	NULL
 NULL	datetime	NULL	NULL
 NULL	decimal	NULL	NULL
 NULL	double	NULL	NULL
-NULL	double unsigned	NULL	NULL
-NULL	double unsigned zerofill	NULL	NULL
 NULL	float	NULL	NULL
-NULL	float unsigned	NULL	NULL
-NULL	float unsigned zerofill	NULL	NULL
 NULL	int	NULL	NULL
 NULL	mediumint	NULL	NULL
 NULL	smallint	NULL	NULL
@@ -910,33 +906,33 @@ NULL	test	tb2	f70	decimal	NULL	NULL	NULL
 NULL	test	tb2	f71	decimal	NULL	NULL	NULL	NULL	decimal(10,0) unsigned zerofill
 NULL	test	tb2	f72	decimal	NULL	NULL	NULL	NULL	decimal(63,30) unsigned zerofill
 NULL	test	tb2	f73	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb2	f74	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb2	f75	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb2	f76	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f74	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb2	f75	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f76	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb2	f77	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb2	f78	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb2	f79	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb2	f80	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f78	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb2	f79	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f80	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb2	f81	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb2	f82	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f83	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f84	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f82	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f83	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f84	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb2	f85	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb2	f86	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb2	f87	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f88	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f89	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f90	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f91	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f92	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f87	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f88	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f89	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f90	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f91	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f92	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb2	f93	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb2	f94	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb2	f95	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f96	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb2	f97	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f98	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb2	f99	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f100	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f95	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f96	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb2	f97	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f98	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f99	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f100	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb2	f101	date	NULL	NULL	NULL	NULL	date
 NULL	test	tb2	f102	time	NULL	NULL	NULL	NULL	time
 NULL	test	tb2	f103	datetime	NULL	NULL	NULL	NULL	datetime
@@ -1019,33 +1015,33 @@ NULL	test	tb4	f187	decimal	NULL	NULL	NUL
 NULL	test	tb4	f188	decimal	NULL	NULL	NULL	NULL	decimal(10,0) unsigned zerofill
 NULL	test	tb4	f189	decimal	NULL	NULL	NULL	NULL	decimal(63,30) unsigned zerofill
 NULL	test	tb4	f190	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb4	f191	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb4	f192	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb4	f193	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f191	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb4	f192	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f193	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb4	f194	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb4	f195	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb4	f196	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb4	f197	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f195	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb4	f196	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f197	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb4	f198	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb4	f199	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f200	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f201	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f199	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f200	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f201	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb4	f202	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb4	f203	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb4	f204	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f205	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f206	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f207	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f208	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f209	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f204	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f205	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f206	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f207	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f208	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f209	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb4	f210	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb4	f211	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb4	f212	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f213	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb4	f214	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f215	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb4	f216	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f217	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f212	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f213	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb4	f214	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f215	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f216	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f217	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb4	f218	date	NULL	NULL	NULL	NULL	date
 NULL	test	tb4	f219	time	NULL	NULL	NULL	NULL	time
 NULL	test	tb4	f220	datetime	NULL	NULL	NULL	NULL	datetime
@@ -1077,33 +1073,33 @@ NULL	test1	tb2	f70	decimal	NULL	NULL	NUL
 NULL	test1	tb2	f71	decimal	NULL	NULL	NULL	NULL	decimal(10,0) unsigned zerofill
 NULL	test1	tb2	f72	decimal	NULL	NULL	NULL	NULL	decimal(63,30) unsigned zerofill
 NULL	test1	tb2	f73	double	NULL	NULL	NULL	NULL	double
-NULL	test1	tb2	f74	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test1	tb2	f75	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test1	tb2	f76	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f74	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test1	tb2	f75	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f76	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test1	tb2	f77	double	NULL	NULL	NULL	NULL	double
-NULL	test1	tb2	f78	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test1	tb2	f79	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test1	tb2	f80	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f78	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test1	tb2	f79	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f80	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test1	tb2	f81	float	NULL	NULL	NULL	NULL	float
-NULL	test1	tb2	f82	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f83	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f84	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f82	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f83	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f84	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test1	tb2	f85	float	NULL	NULL	NULL	NULL	float
 NULL	test1	tb2	f86	float	NULL	NULL	NULL	NULL	float
-NULL	test1	tb2	f87	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f88	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f89	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f90	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f91	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f92	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f87	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f88	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f89	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f90	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f91	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f92	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test1	tb2	f93	float	NULL	NULL	NULL	NULL	float
 NULL	test1	tb2	f94	double	NULL	NULL	NULL	NULL	double
-NULL	test1	tb2	f95	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f96	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test1	tb2	f97	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f98	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test1	tb2	f99	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f100	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f95	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f96	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test1	tb2	f97	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f98	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f99	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f100	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test1	tb2	f101	date	NULL	NULL	NULL	NULL	date
 NULL	test1	tb2	f102	time	NULL	NULL	NULL	NULL	time
 NULL	test1	tb2	f103	datetime	NULL	NULL	NULL	NULL	datetime

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_memory.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_memory.result	2009-01-31 19:22:59 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_memory.result	2009-03-05 11:15:47 +0000
@@ -466,7 +466,7 @@ NULL	test	tb1	f55	47	0000000099	NO	decim
 NULL	test	tb1	f56	48	0000000099	NO	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test	tb1	f57	49	99	NO	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0)			select,insert,update,references	
 NULL	test	tb1	f58	50	99	NO	decimal	NULL	NULL	64	0	NULL	NULL	decimal(64,0)			select,insert,update,references	
-NULL	test	tb2	f100	42	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f100	42	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f101	43	2000-01-01	NO	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
 NULL	test	tb2	f102	44	00:00:20	NO	time	NULL	NULL	NULL	NULL	NULL	NULL	time			select,insert,update,references	
 NULL	test	tb2	f103	45	0002-02-02 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select,insert,update,references	
@@ -491,32 +491,32 @@ NULL	test	tb2	f70	12	NULL	YES	decimal	NU
 NULL	test	tb2	f71	13	NULL	YES	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f72	14	NULL	YES	decimal	NULL	NULL	63	30	NULL	NULL	decimal(63,30) unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f73	15	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb2	f74	16	NULL	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb2	f75	17	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f76	18	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f74	16	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb2	f75	17	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f76	18	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f77	19	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb2	f78	20	7.7	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb2	f79	21	00000000000000000007.7	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f80	22	00000000000000000008.8	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f78	20	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb2	f79	21	00000000000000000007.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f80	22	00000000000000000008.8	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f81	23	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb2	f82	24	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f83	25	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f84	26	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f82	24	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f83	25	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f84	26	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f85	27	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb2	f86	28	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb2	f87	29	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f88	30	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f89	31	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f90	32	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f91	33	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f92	34	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f87	29	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f88	30	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f89	31	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f90	32	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f91	33	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f92	34	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f93	35	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb2	f94	36	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb2	f95	37	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f96	38	8.8	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb2	f97	39	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f98	40	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f99	41	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f95	37	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f96	38	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb2	f97	39	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f98	40	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f99	41	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb3	f118	1	a	NO	char	1	1	NULL	NULL	latin1	latin1_swedish_ci	char(1)			select,insert,update,references	
 NULL	test	tb3	f119	2		NO	char	1	1	NULL	NULL	latin1	latin1_bin	char(1)			select,insert,update,references	
 NULL	test	tb3	f120	3		NO	char	1	1	NULL	NULL	latin1	latin1_swedish_ci	char(1)			select,insert,update,references	
@@ -584,33 +584,33 @@ NULL	test	tb4	f187	12	000000000000000000
 NULL	test	tb4	f188	13	0000000009	NO	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f189	14	000000000000000000000000000000009.000000000000000000000000000000	NO	decimal	NULL	NULL	63	30	NULL	NULL	decimal(63,30) unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f190	15	88.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb4	f191	16	88.8	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb4	f192	17	00000000000000000088.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f193	18	00000000000000000088.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f191	16	88.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb4	f192	17	00000000000000000088.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f193	18	00000000000000000088.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f194	19	55.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb4	f195	20	55.5	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb4	f196	21	00000000000000000055.5	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f197	22	00000000000000000055.5	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f195	20	55.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb4	f196	21	00000000000000000055.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f197	22	00000000000000000055.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f198	23	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb4	f199	24	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f200	25	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f201	26	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f199	24	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f200	25	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f201	26	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f202	27	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb4	f203	28	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb4	f204	29	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f205	30	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f206	31	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f207	32	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f208	33	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f209	34	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f204	29	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f205	30	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f206	31	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f207	32	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f208	33	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f209	34	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f210	35	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb4	f211	36	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb4	f212	37	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f213	38	NULL	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb4	f214	39	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f215	40	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f216	41	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f217	42	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f212	37	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f213	38	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb4	f214	39	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f215	40	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f216	41	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f217	42	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f218	43	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
 NULL	test	tb4	f219	44	NULL	YES	time	NULL	NULL	NULL	NULL	NULL	NULL	time			select,insert,update,references	
 NULL	test	tb4	f220	45	NULL	YES	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select,insert,update,references	
@@ -626,7 +626,7 @@ NULL	test	tb4	f238	55	NULL	YES	varchar	2
 NULL	test	tb4	f239	56	NULL	YES	varbinary	0	0	NULL	NULL	NULL	NULL	varbinary(0)			select,insert,update,references	
 NULL	test	tb4	f240	57	NULL	YES	varchar	1200	1200	NULL	NULL	latin1	latin1_swedish_ci	varchar(1200)			select,insert,update,references	
 NULL	test	tb4	f241	53	NULL	YES	char	255	255	NULL	NULL	latin1	latin1_swedish_ci	char(255)			select,insert,update,references	
-NULL	test1	tb2	f100	42	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f100	42	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f101	43	2000-01-01	NO	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
 NULL	test1	tb2	f102	44	00:00:20	NO	time	NULL	NULL	NULL	NULL	NULL	NULL	time			select,insert,update,references	
 NULL	test1	tb2	f103	45	0002-02-02 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select,insert,update,references	
@@ -651,32 +651,32 @@ NULL	test1	tb2	f70	12	NULL	YES	decimal	N
 NULL	test1	tb2	f71	13	NULL	YES	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f72	14	NULL	YES	decimal	NULL	NULL	63	30	NULL	NULL	decimal(63,30) unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f73	15	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test1	tb2	f74	16	NULL	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test1	tb2	f75	17	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f76	18	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f74	16	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test1	tb2	f75	17	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f76	18	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f77	19	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test1	tb2	f78	20	7.7	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test1	tb2	f79	21	00000000000000000007.7	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f80	22	00000000000000000008.8	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f78	20	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test1	tb2	f79	21	00000000000000000007.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f80	22	00000000000000000008.8	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f81	23	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test1	tb2	f82	24	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f83	25	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f84	26	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f82	24	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f83	25	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f84	26	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f85	27	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test1	tb2	f86	28	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test1	tb2	f87	29	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f88	30	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f89	31	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f90	32	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f91	33	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f92	34	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f87	29	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f88	30	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f89	31	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f90	32	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f91	33	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f92	34	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f93	35	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test1	tb2	f94	36	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test1	tb2	f95	37	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f96	38	8.8	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test1	tb2	f97	39	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f98	40	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f99	41	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f95	37	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f96	38	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test1	tb2	f97	39	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f98	40	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f99	41	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test4	t6	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
 NULL	test4	t6	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
 NULL	test4	t6	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
@@ -728,11 +728,7 @@ NULL	date	NULL	NULL
 NULL	datetime	NULL	NULL
 NULL	decimal	NULL	NULL
 NULL	double	NULL	NULL
-NULL	double unsigned	NULL	NULL
-NULL	double unsigned zerofill	NULL	NULL
 NULL	float	NULL	NULL
-NULL	float unsigned	NULL	NULL
-NULL	float unsigned zerofill	NULL	NULL
 NULL	int	NULL	NULL
 NULL	mediumint	NULL	NULL
 NULL	smallint	NULL	NULL
@@ -866,33 +862,33 @@ NULL	test	tb2	f70	decimal	NULL	NULL	NULL
 NULL	test	tb2	f71	decimal	NULL	NULL	NULL	NULL	decimal(10,0) unsigned zerofill
 NULL	test	tb2	f72	decimal	NULL	NULL	NULL	NULL	decimal(63,30) unsigned zerofill
 NULL	test	tb2	f73	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb2	f74	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb2	f75	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb2	f76	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f74	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb2	f75	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f76	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb2	f77	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb2	f78	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb2	f79	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb2	f80	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f78	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb2	f79	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f80	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb2	f81	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb2	f82	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f83	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f84	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f82	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f83	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f84	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb2	f85	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb2	f86	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb2	f87	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f88	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f89	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f90	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f91	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f92	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f87	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f88	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f89	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f90	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f91	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f92	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb2	f93	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb2	f94	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb2	f95	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f96	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb2	f97	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f98	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb2	f99	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f100	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f95	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f96	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb2	f97	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f98	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f99	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f100	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb2	f101	date	NULL	NULL	NULL	NULL	date
 NULL	test	tb2	f102	time	NULL	NULL	NULL	NULL	time
 NULL	test	tb2	f103	datetime	NULL	NULL	NULL	NULL	datetime
@@ -969,33 +965,33 @@ NULL	test	tb4	f187	decimal	NULL	NULL	NUL
 NULL	test	tb4	f188	decimal	NULL	NULL	NULL	NULL	decimal(10,0) unsigned zerofill
 NULL	test	tb4	f189	decimal	NULL	NULL	NULL	NULL	decimal(63,30) unsigned zerofill
 NULL	test	tb4	f190	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb4	f191	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb4	f192	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb4	f193	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f191	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb4	f192	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f193	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb4	f194	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb4	f195	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb4	f196	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb4	f197	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f195	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb4	f196	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f197	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb4	f198	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb4	f199	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f200	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f201	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f199	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f200	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f201	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb4	f202	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb4	f203	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb4	f204	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f205	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f206	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f207	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f208	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f209	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f204	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f205	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f206	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f207	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f208	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f209	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb4	f210	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb4	f211	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb4	f212	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f213	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb4	f214	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f215	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb4	f216	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f217	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f212	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f213	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb4	f214	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f215	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f216	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f217	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb4	f218	date	NULL	NULL	NULL	NULL	date
 NULL	test	tb4	f219	time	NULL	NULL	NULL	NULL	time
 NULL	test	tb4	f220	datetime	NULL	NULL	NULL	NULL	datetime
@@ -1026,33 +1022,33 @@ NULL	test1	tb2	f70	decimal	NULL	NULL	NUL
 NULL	test1	tb2	f71	decimal	NULL	NULL	NULL	NULL	decimal(10,0) unsigned zerofill
 NULL	test1	tb2	f72	decimal	NULL	NULL	NULL	NULL	decimal(63,30) unsigned zerofill
 NULL	test1	tb2	f73	double	NULL	NULL	NULL	NULL	double
-NULL	test1	tb2	f74	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test1	tb2	f75	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test1	tb2	f76	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f74	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test1	tb2	f75	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f76	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test1	tb2	f77	double	NULL	NULL	NULL	NULL	double
-NULL	test1	tb2	f78	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test1	tb2	f79	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test1	tb2	f80	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f78	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test1	tb2	f79	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f80	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test1	tb2	f81	float	NULL	NULL	NULL	NULL	float
-NULL	test1	tb2	f82	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f83	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f84	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f82	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f83	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f84	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test1	tb2	f85	float	NULL	NULL	NULL	NULL	float
 NULL	test1	tb2	f86	float	NULL	NULL	NULL	NULL	float
-NULL	test1	tb2	f87	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f88	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f89	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f90	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f91	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f92	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f87	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f88	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f89	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f90	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f91	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f92	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test1	tb2	f93	float	NULL	NULL	NULL	NULL	float
 NULL	test1	tb2	f94	double	NULL	NULL	NULL	NULL	double
-NULL	test1	tb2	f95	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f96	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test1	tb2	f97	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f98	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test1	tb2	f99	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f100	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f95	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f96	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test1	tb2	f97	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f98	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f99	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f100	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test1	tb2	f101	date	NULL	NULL	NULL	NULL	date
 NULL	test1	tb2	f102	time	NULL	NULL	NULL	NULL	time
 NULL	test1	tb2	f103	datetime	NULL	NULL	NULL	NULL	datetime

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_myisam.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_myisam.result	2009-01-31 19:22:59 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_myisam.result	2009-03-05 11:15:47 +0000
@@ -514,7 +514,7 @@ NULL	test	tb1	f6	6	NULL	YES	mediumtext	1
 NULL	test	tb1	f7	7	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	latin1	latin1_swedish_ci	longtext			select,insert,update,references	
 NULL	test	tb1	f8	8	NULL	YES	tinyblob	255	255	NULL	NULL	NULL	NULL	tinyblob			select,insert,update,references	
 NULL	test	tb1	f9	9	NULL	YES	blob	65535	65535	NULL	NULL	NULL	NULL	blob			select,insert,update,references	
-NULL	test	tb2	f100	42	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f100	42	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f101	43	2000-01-01	NO	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
 NULL	test	tb2	f102	44	00:00:20	NO	time	NULL	NULL	NULL	NULL	NULL	NULL	time			select,insert,update,references	
 NULL	test	tb2	f103	45	0002-02-02 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select,insert,update,references	
@@ -547,32 +547,32 @@ NULL	test	tb2	f70	12	NULL	YES	decimal	NU
 NULL	test	tb2	f71	13	NULL	YES	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f72	14	NULL	YES	decimal	NULL	NULL	63	30	NULL	NULL	decimal(63,30) unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f73	15	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb2	f74	16	NULL	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb2	f75	17	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f76	18	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f74	16	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb2	f75	17	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f76	18	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f77	19	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb2	f78	20	7.7	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb2	f79	21	00000000000000000007.7	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f80	22	00000000000000000008.8	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f78	20	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb2	f79	21	00000000000000000007.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f80	22	00000000000000000008.8	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f81	23	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb2	f82	24	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f83	25	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f84	26	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f82	24	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f83	25	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f84	26	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f85	27	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb2	f86	28	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb2	f87	29	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f88	30	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f89	31	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f90	32	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f91	33	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f92	34	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f87	29	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f88	30	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f89	31	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f90	32	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f91	33	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f92	34	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb2	f93	35	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb2	f94	36	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb2	f95	37	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb2	f96	38	8.8	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb2	f97	39	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f98	40	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb2	f99	41	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f95	37	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb2	f96	38	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb2	f97	39	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f98	40	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb2	f99	41	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb3	f118	1	a	NO	char	1	1	NULL	NULL	latin1	latin1_swedish_ci	char(1)			select,insert,update,references	
 NULL	test	tb3	f119	2		NO	char	1	1	NULL	NULL	latin1	latin1_bin	char(1)			select,insert,update,references	
 NULL	test	tb3	f120	3		NO	char	1	1	NULL	NULL	latin1	latin1_swedish_ci	char(1)			select,insert,update,references	
@@ -646,33 +646,33 @@ NULL	test	tb4	f187	12	000000000000000000
 NULL	test	tb4	f188	13	0000000009	NO	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f189	14	000000000000000000000000000000009.000000000000000000000000000000	NO	decimal	NULL	NULL	63	30	NULL	NULL	decimal(63,30) unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f190	15	88.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb4	f191	16	88.8	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb4	f192	17	00000000000000000088.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f193	18	00000000000000000088.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f191	16	88.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb4	f192	17	00000000000000000088.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f193	18	00000000000000000088.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f194	19	55.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb4	f195	20	55.5	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb4	f196	21	00000000000000000055.5	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f197	22	00000000000000000055.5	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f195	20	55.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb4	f196	21	00000000000000000055.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f197	22	00000000000000000055.5	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f198	23	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb4	f199	24	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f200	25	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f201	26	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f199	24	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f200	25	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f201	26	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f202	27	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb4	f203	28	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test	tb4	f204	29	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f205	30	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f206	31	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f207	32	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f208	33	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f209	34	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f204	29	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f205	30	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f206	31	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f207	32	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f208	33	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f209	34	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f210	35	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test	tb4	f211	36	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test	tb4	f212	37	NULL	YES	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test	tb4	f213	38	NULL	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test	tb4	f214	39	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f215	40	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f216	41	NULL	YES	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test	tb4	f217	42	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f212	37	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test	tb4	f213	38	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test	tb4	f214	39	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f215	40	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f216	41	NULL	YES	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test	tb4	f217	42	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test	tb4	f218	43	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
 NULL	test	tb4	f219	44	NULL	YES	time	NULL	NULL	NULL	NULL	NULL	NULL	time			select,insert,update,references	
 NULL	test	tb4	f220	45	NULL	YES	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select,insert,update,references	
@@ -698,7 +698,7 @@ NULL	test	tb4	f239	64	NULL	YES	varbinary
 NULL	test	tb4	f240	65	NULL	YES	varchar	120	120	NULL	NULL	latin1	latin1_swedish_ci	varchar(120)			select,insert,update,references	
 NULL	test	tb4	f241	66	NULL	YES	char	100	100	NULL	NULL	latin1	latin1_swedish_ci	char(100)			select,insert,update,references	
 NULL	test	tb4	f242	67	NULL	YES	bit	NULL	NULL	30	NULL	NULL	NULL	bit(30)			select,insert,update,references	
-NULL	test1	tb2	f100	42	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f100	42	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f101	43	2000-01-01	NO	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
 NULL	test1	tb2	f102	44	00:00:20	NO	time	NULL	NULL	NULL	NULL	NULL	NULL	time			select,insert,update,references	
 NULL	test1	tb2	f103	45	0002-02-02 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select,insert,update,references	
@@ -731,32 +731,32 @@ NULL	test1	tb2	f70	12	NULL	YES	decimal	N
 NULL	test1	tb2	f71	13	NULL	YES	decimal	NULL	NULL	10	0	NULL	NULL	decimal(10,0) unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f72	14	NULL	YES	decimal	NULL	NULL	63	30	NULL	NULL	decimal(63,30) unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f73	15	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test1	tb2	f74	16	NULL	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test1	tb2	f75	17	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f76	18	NULL	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f74	16	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test1	tb2	f75	17	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f76	18	NULL	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f77	19	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test1	tb2	f78	20	7.7	YES	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test1	tb2	f79	21	00000000000000000007.7	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f80	22	00000000000000000008.8	YES	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f78	20	7.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test1	tb2	f79	21	00000000000000000007.7	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f80	22	00000000000000000008.8	YES	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f81	23	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test1	tb2	f82	24	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f83	25	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f84	26	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f82	24	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f83	25	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f84	26	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f85	27	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test1	tb2	f86	28	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
-NULL	test1	tb2	f87	29	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f88	30	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f89	31	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f90	32	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f91	33	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f92	34	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f87	29	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f88	30	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f89	31	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f90	32	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f91	33	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f92	34	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test1	tb2	f93	35	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float			select,insert,update,references	
 NULL	test1	tb2	f94	36	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double			select,insert,update,references	
-NULL	test1	tb2	f95	37	8.8	NO	float unsigned	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
-NULL	test1	tb2	f96	38	8.8	NO	double unsigned	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
-NULL	test1	tb2	f97	39	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f98	40	00000000000000000008.8	NO	double unsigned zerofill	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
-NULL	test1	tb2	f99	41	0000000008.8	NO	float unsigned zerofill	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f95	37	8.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned			select,insert,update,references	
+NULL	test1	tb2	f96	38	8.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned			select,insert,update,references	
+NULL	test1	tb2	f97	39	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f98	40	00000000000000000008.8	NO	double	NULL	NULL	22	NULL	NULL	NULL	double unsigned zerofill			select,insert,update,references	
+NULL	test1	tb2	f99	41	0000000008.8	NO	float	NULL	NULL	12	NULL	NULL	NULL	float unsigned zerofill			select,insert,update,references	
 NULL	test4	t6	f1	1	NULL	YES	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)			select,insert,update,references	
 NULL	test4	t6	f2	2	NULL	YES	char	25	25	NULL	NULL	latin1	latin1_swedish_ci	char(25)			select,insert,update,references	
 NULL	test4	t6	f3	3	NULL	YES	date	NULL	NULL	NULL	NULL	NULL	NULL	date			select,insert,update,references	
@@ -817,11 +817,7 @@ NULL	date	NULL	NULL
 NULL	datetime	NULL	NULL
 NULL	decimal	NULL	NULL
 NULL	double	NULL	NULL
-NULL	double unsigned	NULL	NULL
-NULL	double unsigned zerofill	NULL	NULL
 NULL	float	NULL	NULL
-NULL	float unsigned	NULL	NULL
-NULL	float unsigned zerofill	NULL	NULL
 NULL	int	NULL	NULL
 NULL	mediumint	NULL	NULL
 NULL	smallint	NULL	NULL
@@ -963,33 +959,33 @@ NULL	test	tb2	f70	decimal	NULL	NULL	NULL
 NULL	test	tb2	f71	decimal	NULL	NULL	NULL	NULL	decimal(10,0) unsigned zerofill
 NULL	test	tb2	f72	decimal	NULL	NULL	NULL	NULL	decimal(63,30) unsigned zerofill
 NULL	test	tb2	f73	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb2	f74	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb2	f75	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb2	f76	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f74	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb2	f75	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f76	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb2	f77	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb2	f78	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb2	f79	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb2	f80	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f78	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb2	f79	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f80	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb2	f81	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb2	f82	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f83	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f84	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f82	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f83	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f84	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb2	f85	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb2	f86	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb2	f87	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f88	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f89	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f90	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f91	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f92	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f87	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f88	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f89	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f90	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f91	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f92	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb2	f93	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb2	f94	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb2	f95	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb2	f96	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb2	f97	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f98	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb2	f99	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb2	f100	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f95	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb2	f96	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb2	f97	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f98	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb2	f99	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb2	f100	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb2	f101	date	NULL	NULL	NULL	NULL	date
 NULL	test	tb2	f102	time	NULL	NULL	NULL	NULL	time
 NULL	test	tb2	f103	datetime	NULL	NULL	NULL	NULL	datetime
@@ -1080,33 +1076,33 @@ NULL	test	tb4	f187	decimal	NULL	NULL	NUL
 NULL	test	tb4	f188	decimal	NULL	NULL	NULL	NULL	decimal(10,0) unsigned zerofill
 NULL	test	tb4	f189	decimal	NULL	NULL	NULL	NULL	decimal(63,30) unsigned zerofill
 NULL	test	tb4	f190	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb4	f191	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb4	f192	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb4	f193	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f191	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb4	f192	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f193	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb4	f194	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb4	f195	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb4	f196	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb4	f197	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f195	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb4	f196	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f197	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb4	f198	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb4	f199	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f200	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f201	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f199	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f200	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f201	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb4	f202	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb4	f203	float	NULL	NULL	NULL	NULL	float
-NULL	test	tb4	f204	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f205	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f206	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f207	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f208	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f209	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f204	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f205	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f206	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f207	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f208	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f209	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test	tb4	f210	float	NULL	NULL	NULL	NULL	float
 NULL	test	tb4	f211	double	NULL	NULL	NULL	NULL	double
-NULL	test	tb4	f212	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test	tb4	f213	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test	tb4	f214	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f215	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test	tb4	f216	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test	tb4	f217	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f212	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test	tb4	f213	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test	tb4	f214	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f215	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test	tb4	f216	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test	tb4	f217	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test	tb4	f218	date	NULL	NULL	NULL	NULL	date
 NULL	test	tb4	f219	time	NULL	NULL	NULL	NULL	time
 NULL	test	tb4	f220	datetime	NULL	NULL	NULL	NULL	datetime
@@ -1147,33 +1143,33 @@ NULL	test1	tb2	f70	decimal	NULL	NULL	NUL
 NULL	test1	tb2	f71	decimal	NULL	NULL	NULL	NULL	decimal(10,0) unsigned zerofill
 NULL	test1	tb2	f72	decimal	NULL	NULL	NULL	NULL	decimal(63,30) unsigned zerofill
 NULL	test1	tb2	f73	double	NULL	NULL	NULL	NULL	double
-NULL	test1	tb2	f74	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test1	tb2	f75	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test1	tb2	f76	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f74	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test1	tb2	f75	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f76	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test1	tb2	f77	double	NULL	NULL	NULL	NULL	double
-NULL	test1	tb2	f78	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test1	tb2	f79	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test1	tb2	f80	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f78	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test1	tb2	f79	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f80	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test1	tb2	f81	float	NULL	NULL	NULL	NULL	float
-NULL	test1	tb2	f82	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f83	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f84	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f82	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f83	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f84	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test1	tb2	f85	float	NULL	NULL	NULL	NULL	float
 NULL	test1	tb2	f86	float	NULL	NULL	NULL	NULL	float
-NULL	test1	tb2	f87	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f88	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f89	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f90	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f91	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f92	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f87	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f88	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f89	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f90	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f91	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f92	float	NULL	NULL	NULL	NULL	float unsigned zerofill
 NULL	test1	tb2	f93	float	NULL	NULL	NULL	NULL	float
 NULL	test1	tb2	f94	double	NULL	NULL	NULL	NULL	double
-NULL	test1	tb2	f95	float unsigned	NULL	NULL	NULL	NULL	float unsigned
-NULL	test1	tb2	f96	double unsigned	NULL	NULL	NULL	NULL	double unsigned
-NULL	test1	tb2	f97	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f98	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
-NULL	test1	tb2	f99	float unsigned zerofill	NULL	NULL	NULL	NULL	float unsigned zerofill
-NULL	test1	tb2	f100	double unsigned zerofill	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f95	float	NULL	NULL	NULL	NULL	float unsigned
+NULL	test1	tb2	f96	double	NULL	NULL	NULL	NULL	double unsigned
+NULL	test1	tb2	f97	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f98	double	NULL	NULL	NULL	NULL	double unsigned zerofill
+NULL	test1	tb2	f99	float	NULL	NULL	NULL	NULL	float unsigned zerofill
+NULL	test1	tb2	f100	double	NULL	NULL	NULL	NULL	double unsigned zerofill
 NULL	test1	tb2	f101	date	NULL	NULL	NULL	NULL	date
 NULL	test1	tb2	f102	time	NULL	NULL	NULL	NULL	time
 NULL	test1	tb2	f103	datetime	NULL	NULL	NULL	NULL	datetime

=== modified file 'mysql-test/suite/funcs_1/r/memory_views.result'
--- a/mysql-test/suite/funcs_1/r/memory_views.result	2009-02-14 16:00:11 +0000
+++ b/mysql-test/suite/funcs_1/r/memory_views.result	2009-02-27 15:06:23 +0000
@@ -21369,7 +21369,7 @@ ERROR 42S02: Table 'test.v1' doesn't exi
 CHECK TABLE v1;
 Table	Op	Msg_type	Msg_text
 test.v1	check	Error	Table 'test.v1' doesn't exist
-test.v1	check	error	Corrupt
+test.v1	check	status	Operation failed
 DESCRIBE v1;
 ERROR 42S02: Table 'test.v1' doesn't exist
 EXPLAIN SELECT * FROM v1;

=== modified file 'mysql-test/suite/funcs_1/r/myisam_views.result'
--- a/mysql-test/suite/funcs_1/r/myisam_views.result	2009-02-14 16:00:11 +0000
+++ b/mysql-test/suite/funcs_1/r/myisam_views.result	2009-03-04 12:18:56 +0000
@@ -23044,7 +23044,7 @@ ERROR 42S02: Table 'test.v1' doesn't exi
 CHECK TABLE v1;
 Table	Op	Msg_type	Msg_text
 test.v1	check	Error	Table 'test.v1' doesn't exist
-test.v1	check	error	Corrupt
+test.v1	check	status	Operation failed
 DESCRIBE v1;
 ERROR 42S02: Table 'test.v1' doesn't exist
 EXPLAIN SELECT * FROM v1;

=== modified file 'mysql-test/suite/funcs_1/r/ndb_views.result'
--- a/mysql-test/suite/funcs_1/r/ndb_views.result	2009-02-15 11:11:50 +0000
+++ b/mysql-test/suite/funcs_1/r/ndb_views.result	2009-02-27 15:06:23 +0000
@@ -21367,7 +21367,7 @@ ERROR 42S02: Table 'test.v1' doesn't exi
 CHECK TABLE v1;
 Table	Op	Msg_type	Msg_text
 test.v1	check	Error	Table 'test.v1' doesn't exist
-test.v1	check	error	Corrupt
+test.v1	check	status	Operation failed
 DESCRIBE v1;
 ERROR 42S02: Table 'test.v1' doesn't exist
 EXPLAIN SELECT * FROM v1;

=== modified file 'mysql-test/suite/rpl/r/rpl_failed_optimize.result'
--- a/mysql-test/suite/rpl/r/rpl_failed_optimize.result	2008-08-11 18:02:03 +0000
+++ b/mysql-test/suite/rpl/r/rpl_failed_optimize.result	2009-02-27 15:06:23 +0000
@@ -17,7 +17,7 @@ Error	1205	Lock wait timeout exceeded; t
 OPTIMIZE TABLE non_existing;
 Table	Op	Msg_type	Msg_text
 test.non_existing	optimize	Error	Table 'test.non_existing' doesn't exist
-test.non_existing	optimize	error	Corrupt
+test.non_existing	optimize	status	Operation failed
 select * from t1;
 a
 1

=== added file 'mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result'
--- a/mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result	2009-03-05 19:54:53 +0000
@@ -0,0 +1,32 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8;
+CREATE TABLE t1 (`bit_key` bit, `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t2 (`bit_key` bit(4), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t3 (`bit_key` bit(7), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t4 (`bit_key` bit(8), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t5 (`bit_key` bit(9), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t6 (`bit_key` bit(14), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t7 (`bit_key` bit(15), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t8 (`bit_key` bit(16), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+INSERT INTO `t1` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t1` WHERE `bit` < 2 LIMIT 4;
+INSERT INTO `t2` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t2` WHERE `bit` < 2 LIMIT 4;
+INSERT INTO `t3` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t3` WHERE `bit` < 2 LIMIT 4;
+INSERT INTO `t4` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t4` WHERE `bit` < 2 LIMIT 4;
+INSERT INTO `t5` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t5` WHERE `bit` < 2 LIMIT 4;
+INSERT INTO `t6` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t6` WHERE `bit` < 2 LIMIT 4;
+INSERT INTO `t7` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t7` WHERE `bit` < 2 LIMIT 4;
+INSERT INTO `t8` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t8` WHERE `bit` < 2 LIMIT 4;
+DROP TABLE t1, t2, t3, t4, t5, t6, t7, t8;

=== added file 'mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test'
--- a/mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test	2009-03-05 19:54:53 +0000
@@ -0,0 +1,78 @@
+#
+# BUG
+# ---
+#  BUG#39753: Replication failure on MIXED + bit + myisam + no PK
+#
+# Description
+# -----------
+#  Simple statements against a bit column cause failure in mixed-mode
+#  replication.
+#
+#  Implementation is as follows:
+#     i) A table with two bit fields is created. One of them is a key.
+#    ii) A record is inserted without specifying the key value.
+#   iii) The record is deleted using a where clause that matches it.
+#    iv) repeat i-iii) for bit key that has different size, generating
+#        different extra bits values 
+#     v) The slave is synchronized with master 
+#    vi) The table is dropped on master and the slave is re-synchronized
+#        with master.
+#
+#  Step v) made the bug evident before the patch, as the slave would 
+#  fail to find the correspondent row in its database (although it did
+#  the insert in step ii) ).
+#
+# Obs
+# --- 
+#  This test is based on the "how to repeat" section from the bug report.
+#
+#
+
+--source include/master-slave.inc
+
+--disable_warnings
+# setup
+
+DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8;
+CREATE TABLE t1 (`bit_key` bit, `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t2 (`bit_key` bit(4), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t3 (`bit_key` bit(7), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t4 (`bit_key` bit(8), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t5 (`bit_key` bit(9), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t6 (`bit_key` bit(14), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t7 (`bit_key` bit(15), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+CREATE TABLE t8 (`bit_key` bit(16), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
+
+# insert and delete
+INSERT INTO `t1` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t1` WHERE `bit` < 2 LIMIT 4;
+
+INSERT INTO `t2` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t2` WHERE `bit` < 2 LIMIT 4;
+
+INSERT INTO `t3` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t3` WHERE `bit` < 2 LIMIT 4;
+
+INSERT INTO `t4` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t4` WHERE `bit` < 2 LIMIT 4;
+
+INSERT INTO `t5` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t5` WHERE `bit` < 2 LIMIT 4;
+
+INSERT INTO `t6` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t6` WHERE `bit` < 2 LIMIT 4;
+
+INSERT INTO `t7` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t7` WHERE `bit` < 2 LIMIT 4;
+
+INSERT INTO `t8` ( `bit` ) VALUES ( 0 );
+DELETE FROM `t8` WHERE `bit` < 2 LIMIT 4;
+
+
+--enable_warnings
+sync_slave_with_master;
+
+# clean up 
+connection master;
+DROP TABLE t1, t2, t3, t4, t5, t6, t7, t8;
+sync_slave_with_master;

=== modified file 'mysql-test/t/ddl_i18n_koi8r.test'
--- a/mysql-test/t/ddl_i18n_koi8r.test	2008-02-22 10:30:33 +0000
+++ b/mysql-test/t/ddl_i18n_koi8r.test	2009-03-04 12:45:49 +0000
@@ -143,10 +143,12 @@ set names koi8r|
 
 #  - Dump mysqltest1;
 
+--let $views_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql
+
 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.views.mysqltest1.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $views_dump1
 
 #   - Clean mysqltest1;
 
@@ -161,7 +163,9 @@ DROP DATABASE mysqltest1|
 --echo
 
 --echo ---> Restoring mysqltest1...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql
+--exec $MYSQL test < $views_dump1
+
+--remove_file $views_dump1
 
 #
 # Third-round checks.
@@ -398,6 +402,9 @@ set names koi8r|
 
 #  - Dump mysqltest1, mysqltest2;
 
+--let $sp_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql
+--let $sp_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql
+
 --echo
 --echo ---> Dump of mysqltest1
 
@@ -406,7 +413,7 @@ set names koi8r|
 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.sp.mysqltest1.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $sp_dump1
 
 --echo
 --echo ---> Dump of mysqltest2
@@ -416,7 +423,7 @@ set names koi8r|
 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.sp.mysqltest2.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $sp_dump2
 
 #   - Clean mysqltest1, mysqltest2;
 
@@ -432,10 +439,13 @@ DROP DATABASE mysqltest2|
 --echo
 
 --echo ---> Restoring mysqltest1...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql
+--exec $MYSQL test < $sp_dump1
 
 --echo ---> Restoring mysqltest2...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql
+--exec $MYSQL test < $sp_dump2
+
+--remove_file $sp_dump1
+--remove_file $sp_dump2
 
 #
 # Third-round checks.
@@ -669,6 +679,9 @@ use mysqltest1|
 
 #  - Dump mysqltest1, mysqltest2;
 
+--let $triggers_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql
+--let $triggers_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql
+
 --echo
 --echo ---> Dump of mysqltest1
 
@@ -677,7 +690,7 @@ use mysqltest1|
 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.triggers.mysqltest1.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $triggers_dump1
 
 --echo
 --echo ---> Dump of mysqltest2
@@ -687,7 +700,7 @@ use mysqltest1|
 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.triggers.mysqltest2.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $triggers_dump2
 
 #   - Clean mysqltest1, mysqltest2;
 
@@ -703,10 +716,13 @@ DROP DATABASE mysqltest2|
 --echo
 
 --echo ---> Restoring mysqltest1...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql
+--exec $MYSQL test < $triggers_dump1
 
 --echo ---> Restoring mysqltest2...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql
+--exec $MYSQL test < $triggers_dump2
+
+--remove_file $triggers_dump1
+--remove_file $triggers_dump2
 
 #
 # Third-round checks.
@@ -924,6 +940,9 @@ set names koi8r|
 
 #  - Dump mysqltest1, mysqltest2;
 
+--let $events_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql
+--let $events_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql
+
 --echo
 --echo ---> Dump of mysqltest1
 
@@ -932,7 +951,7 @@ set names koi8r|
 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.events.mysqltest1.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $events_dump1
 
 --echo
 --echo ---> Dump of mysqltest2
@@ -942,7 +961,7 @@ set names koi8r|
 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.events.mysqltest2.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $events_dump2
 
 #   - Clean mysqltest1, mysqltest2;
 
@@ -958,10 +977,13 @@ DROP DATABASE mysqltest2|
 --echo
 
 --echo ---> Restoring mysqltest1...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql
+--exec $MYSQL test < $events_dump1
 
 --echo ---> Restoring mysqltest2...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql
+--exec $MYSQL test < $events_dump2
+
+--remove_file $events_dump1
+--remove_file $events_dump2
 
 #
 # Third-round checks.

=== modified file 'mysql-test/t/ddl_i18n_utf8.test'
--- a/mysql-test/t/ddl_i18n_utf8.test	2008-02-22 10:30:33 +0000
+++ b/mysql-test/t/ddl_i18n_utf8.test	2009-03-04 12:45:49 +0000
@@ -143,10 +143,12 @@ set names utf8|
 
 #  - Dump mysqltest1;
 
+--let $views_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8views.mysqltest1.sql
+
 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_utf8views.mysqltest1.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8views.mysqltest1.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $views_dump1
 
 #   - Clean mysqltest1;
 
@@ -161,7 +163,9 @@ DROP DATABASE mysqltest1|
 --echo
 
 --echo ---> Restoring mysqltest1...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8views.mysqltest1.sql
+--exec $MYSQL test < $views_dump1
+
+--remove_file $views_dump1
 
 #
 # Third-round checks.
@@ -398,6 +402,9 @@ set names utf8|
 
 #  - Dump mysqltest1, mysqltest2;
 
+--let $sp_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest1.sql
+--let $sp_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest2.sql
+
 --echo
 --echo ---> Dump of mysqltest1
 
@@ -406,7 +413,7 @@ set names utf8|
 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_utf8sp.mysqltest1.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest1.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $sp_dump1
 
 --echo
 --echo ---> Dump of mysqltest2
@@ -416,7 +423,7 @@ set names utf8|
 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_utf8sp.mysqltest2.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest2.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $sp_dump2
 
 #   - Clean mysqltest1, mysqltest2;
 
@@ -432,10 +439,13 @@ DROP DATABASE mysqltest2|
 --echo
 
 --echo ---> Restoring mysqltest1...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest1.sql
+--exec $MYSQL test < $sp_dump1
 
 --echo ---> Restoring mysqltest2...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest2.sql
+--exec $MYSQL test < $sp_dump2
+
+--remove_file $sp_dump1
+--remove_file $sp_dump2
 
 #
 # Third-round checks.
@@ -669,6 +679,9 @@ use mysqltest1|
 
 #  - Dump mysqltest1, mysqltest2;
 
+--let $triggers_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest1.sql
+--let $triggers_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest2.sql
+
 --echo
 --echo ---> Dump of mysqltest1
 
@@ -677,7 +690,7 @@ use mysqltest1|
 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_utf8triggers.mysqltest1.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest1.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $triggers_dump1
 
 --echo
 --echo ---> Dump of mysqltest2
@@ -687,7 +700,7 @@ use mysqltest1|
 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_utf8triggers.mysqltest2.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest2.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $triggers_dump2
 
 #   - Clean mysqltest1, mysqltest2;
 
@@ -703,10 +716,13 @@ DROP DATABASE mysqltest2|
 --echo
 
 --echo ---> Restoring mysqltest1...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest1.sql
+--exec $MYSQL test < $triggers_dump1
 
 --echo ---> Restoring mysqltest2...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest2.sql
+--exec $MYSQL test < $triggers_dump2
+
+--remove_file $triggers_dump1
+--remove_file $triggers_dump2
 
 #
 # Third-round checks.
@@ -924,6 +940,9 @@ set names utf8|
 
 #  - Dump mysqltest1, mysqltest2;
 
+--let $events_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest1.sql
+--let $events_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest2.sql
+
 --echo
 --echo ---> Dump of mysqltest1
 
@@ -932,7 +951,7 @@ set names utf8|
 --echo
 --echo ---> Dumping mysqltest1 to ddl_i18n_utf8events.mysqltest1.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest1.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $events_dump1
 
 --echo
 --echo ---> Dump of mysqltest2
@@ -942,7 +961,7 @@ set names utf8|
 --echo
 --echo ---> Dumping mysqltest2 to ddl_i18n_utf8events.mysqltest2.sql
 
---exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest2.sql
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $events_dump2
 
 #   - Clean mysqltest1, mysqltest2;
 
@@ -958,10 +977,13 @@ DROP DATABASE mysqltest2|
 --echo
 
 --echo ---> Restoring mysqltest1...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest1.sql
+--exec $MYSQL test < $events_dump1
 
 --echo ---> Restoring mysqltest2...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest2.sql
+--exec $MYSQL test < $events_dump2
+
+--remove_file $events_dump1
+--remove_file $events_dump2
 
 #
 # Third-round checks.

=== modified file 'mysql-test/t/drop.test'
--- a/mysql-test/t/drop.test	2008-04-03 19:40:10 +0000
+++ b/mysql-test/t/drop.test	2009-03-04 12:45:49 +0000
@@ -150,17 +150,30 @@ DROP DATABASE IF EXISTS mysql_test;
 CREATE DATABASE mysql_test;
 
 let $MYSQLD_DATADIR= `select @@datadir`;
---copy_file $MYSQLD_DATADIR/mysql/proc.frm $MYSQLTEST_VARDIR/tmp/bug29958.proc.frm
---copy_file $MYSQLD_DATADIR/mysql/proc.MYD $MYSQLTEST_VARDIR/tmp/bug29958.proc.MYD
---copy_file $MYSQLD_DATADIR/mysql/proc.MYI $MYSQLTEST_VARDIR/tmp/bug29958.proc.MYI
+
+--let $proc_frm = $MYSQLD_DATADIR/mysql/proc.frm
+--let $proc_MYD = $MYSQLD_DATADIR/mysql/proc.MYD
+--let $proc_MYI = $MYSQLD_DATADIR/mysql/proc.MYI
+
+--let $copy_of_proc_frm = $MYSQLTEST_VARDIR/tmp/bug29958.copy.frm
+--let $copy_of_proc_MYD = $MYSQLTEST_VARDIR/tmp/bug29958.copy.MYD
+--let $copy_of_proc_MYI = $MYSQLTEST_VARDIR/tmp/bug29958.copy.MYI
+
+--copy_file $proc_frm $copy_of_proc_frm
+--copy_file $proc_MYD $copy_of_proc_MYD
+--copy_file $proc_MYI $copy_of_proc_MYI
 
 DROP TABLE mysql.proc;
 
 DROP DATABASE mysql_test;
 
---copy_file $MYSQLTEST_VARDIR/tmp/bug29958.proc.frm $MYSQLD_DATADIR/mysql/proc.frm
---copy_file $MYSQLTEST_VARDIR/tmp/bug29958.proc.MYD $MYSQLD_DATADIR/mysql/proc.MYD
---copy_file $MYSQLTEST_VARDIR/tmp/bug29958.proc.MYI $MYSQLD_DATADIR/mysql/proc.MYI
+--copy_file $copy_of_proc_frm $proc_frm
+--copy_file $copy_of_proc_MYD $proc_MYD
+--copy_file $copy_of_proc_MYI $proc_MYI
+
+--remove_file $copy_of_proc_frm
+--remove_file $copy_of_proc_MYD
+--remove_file $copy_of_proc_MYI
 
 --echo
 --echo # --

=== modified file 'mysql-test/t/func_group.test'
--- a/mysql-test/t/func_group.test	2008-11-24 16:00:09 +0000
+++ b/mysql-test/t/func_group.test	2009-02-26 17:17:06 +0000
@@ -18,6 +18,8 @@ insert into t1 values (3,5,"C");
 insert into t1 values (3,6,"D");
 
 # Test of MySQL field extension with and without matching records.
+#### Note: The two following statements may fail if the execution plan
+#### or optimizer is changed. The result for column c is undefined.
 select a,c,sum(a) from t1 group by a;
 select a,c,sum(a) from t1 where a > 10 group by a;
 select sum(a) from t1 where a > 10;

=== modified file 'mysql-test/t/group_by.test'
--- a/mysql-test/t/group_by.test	2008-11-12 17:51:47 +0000
+++ b/mysql-test/t/group_by.test	2009-02-26 17:17:06 +0000
@@ -1139,4 +1139,22 @@ DROP TABLE t1;
 SET @@sql_mode = @old_sql_mode;
 
 
+#
+# Bug#42567 Invalid GROUP BY error
+#
+
+# Setup of the subtest
+SET @old_sql_mode = @@sql_mode;
+SET @@sql_mode='ONLY_FULL_GROUP_BY';
+
+CREATE TABLE t1(i INT);
+INSERT INTO t1 VALUES (1), (10);
+
+# The actual test
+SELECT COUNT(i) FROM t1;
+SELECT COUNT(i) FROM t1 WHERE i > 1;
+
+# Cleanup of subtest
+DROP TABLE t1;
+SET @@sql_mode = @old_sql_mode;
 

=== modified file 'mysql-test/t/group_min_max.test'
--- a/mysql-test/t/group_min_max.test	2008-08-28 09:54:50 +0000
+++ b/mysql-test/t/group_min_max.test	2009-02-27 15:07:27 +0000
@@ -961,3 +961,25 @@ insert into t1 (a,b) select a, max(b)+1
 select * from t1;
 explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a;
 drop table t1;
+
+
+#
+# Bug #41610: key_infix_len can be overwritten causing some group by queries
+# to return no rows
+#
+
+CREATE TABLE t1 (a int, b int, c int, d int,
+  KEY foo (c,d,a,b), KEY bar (c,a,b,d));
+
+INSERT INTO t1 VALUES (1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 3), (1, 1, 1, 4);
+INSERT INTO t1 SELECT * FROM t1;
+INSERT INTO t1 SELECT * FROM t1;
+INSERT INTO t1 SELECT a,b,c+1,d FROM t1;
+
+#Should be non-empty
+EXPLAIN SELECT DISTINCT c FROM t1 WHERE d=4;
+SELECT DISTINCT c FROM t1 WHERE d=4;
+
+DROP TABLE t1;
+
+--echo End of 5.0 tests

=== modified file 'mysql-test/t/lock.test'
--- a/mysql-test/t/lock.test	2007-08-02 09:59:02 +0000
+++ b/mysql-test/t/lock.test	2009-03-05 14:22:33 +0000
@@ -214,4 +214,34 @@ create view v_bug5719 as select * from t
 --echo
 drop table t2, t3;
 
+--echo #
+--echo # Bug#39843 DELETE requires write access to table in subquery in where clause
+--echo #
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2;
+--enable_warnings
+CREATE TABLE t1 (
+table1_rowid SMALLINT NOT NULL
+);
+CREATE TABLE t2 (
+table2_rowid SMALLINT NOT NULL
+);
+INSERT INTO t1 VALUES (1);
+INSERT INTO t2 VALUES (1);
+LOCK TABLES t1 WRITE, t2 READ;
+--echo # Sub-select should not try to aquire a write lock.
+DELETE FROM t1 
+WHERE EXISTS 
+( 
+SELECT 'x' 
+FROM t2
+WHERE t1.table1_rowid = t2.table2_rowid
+) ;
+--echo # While implementing the patch we didn't break old behavior;
+--echo # The following sub-select should still requires a write lock:
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+SELECT * FROM t1 WHERE 1 IN (SELECT * FROM t2 FOR UPDATE);
+UNLOCK TABLES;
+DROP TABLE t1,t2;
+
 --echo End of 5.1 tests.

=== modified file 'mysql-test/t/mysql.test'
--- a/mysql-test/t/mysql.test	2009-02-25 09:34:27 +0000
+++ b/mysql-test/t/mysql.test	2009-03-02 10:22:38 +0000
@@ -98,35 +98,43 @@ drop table t1;
 # Bug #20432: mysql client interprets commands in comments
 #
 
+--let $file = $MYSQLTEST_VARDIR/tmp/bug20432.sql
+
 # if the client sees the 'use' within the comment, we haven't fixed
---exec echo "/*"          >  $MYSQLTEST_VARDIR/tmp/bug20432.sql
---exec echo "use"         >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
---exec echo "*/"          >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
---exec $MYSQL              < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
+--exec echo "/*"          >  $file
+--exec echo "use"         >> $file
+--exec echo "*/"          >> $file
+--exec $MYSQL              < $file 2>&1
 
 # SQL can have embedded comments => workie
---exec echo "select /*"   >  $MYSQLTEST_VARDIR/tmp/bug20432.sql
---exec echo "use"         >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
---exec echo "*/ 1"        >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
---exec $MYSQL              < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
+--exec echo "select /*"   >  $file
+--exec echo "use"         >> $file
+--exec echo "*/ 1"        >> $file
+--exec $MYSQL              < $file 2>&1
 
 # client commands on the other hand must be at BOL => error
---exec echo "/*"          >  $MYSQLTEST_VARDIR/tmp/bug20432.sql
---exec echo "xxx"         >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
---exec echo "*/ use"      >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
+--exec echo "/*"          >  $file
+--exec echo "xxx"         >> $file
+--exec echo "*/ use"      >> $file
 --error 1
---exec $MYSQL              < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
+--exec $MYSQL              < $file 2>&1
 
 # client comment recognized, but parameter missing => error
---exec echo "use"         >  $MYSQLTEST_VARDIR/tmp/bug20432.sql
---exec $MYSQL              < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
+--exec echo "use"         >  $file
+--exec $MYSQL              < $file 2>&1
+
+--remove_file $file
 
 #
 # Bug #20328: mysql client interprets commands in comments
 #
---exec $MYSQL -e "help" > $MYSQLTEST_VARDIR/tmp/bug20328_1.result
---exec $MYSQL -e "help " > $MYSQLTEST_VARDIR/tmp/bug20328_2.result
---diff_files $MYSQLTEST_VARDIR/tmp/bug20328_1.result $MYSQLTEST_VARDIR/tmp/bug20328_2.result
+--let $file1 = $MYSQLTEST_VARDIR/tmp/bug20328_1.result
+--let $file2 = $MYSQLTEST_VARDIR/tmp/bug20328_2.result
+--exec $MYSQL -e "help" > $file1
+--exec $MYSQL -e "help " > $file2
+--diff_files $file1 $file2
+--remove_file $file1
+--remove_file $file2
 
 #
 # Bug #19216: Client crashes on long SELECT
@@ -152,13 +160,15 @@ EOF
 #
 # Bug #20103: Escaping with backslash does not work
 #
---exec echo "SET SQL_MODE = 'NO_BACKSLASH_ESCAPES';"  > $MYSQLTEST_VARDIR/tmp/bug20103.sql
---exec echo "SELECT '\';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
---exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
-
---exec echo "SET SQL_MODE = '';"  > $MYSQLTEST_VARDIR/tmp/bug20103.sql
---exec echo "SELECT '\';';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
---exec $MYSQL              < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
+--let $file = $MYSQLTEST_VARDIR/tmp/bug20103.sql
+--exec echo "SET SQL_MODE = 'NO_BACKSLASH_ESCAPES';"  > $file
+--exec echo "SELECT '\';" >> $file
+--exec $MYSQL < $file 2>&1
+
+--exec echo "SET SQL_MODE = '';"  > $file
+--exec echo "SELECT '\';';" >> $file
+--exec $MYSQL              < $file 2>&1
+--remove_file $file
 
 #
 # Bug#17583: mysql drops connection when stdout is not writable

=== modified file 'mysql-test/t/mysqldump-compat.test'
--- a/mysql-test/t/mysqldump-compat.test	2007-08-31 11:59:07 +0000
+++ b/mysql-test/t/mysqldump-compat.test	2009-03-02 10:03:13 +0000
@@ -5,9 +5,13 @@
 # Bug #30126: semicolon before closing */ in /*!... CREATE DATABASE ;*/
 #
 
+--let $file = $MYSQLTEST_VARDIR/tmp/bug30126.sql
+
 CREATE DATABASE mysqldump_30126;
 USE mysqldump_30126;
 CREATE TABLE t1 (c1 int);
---exec $MYSQL_DUMP --add-drop-database mysqldump_30126 > $MYSQLTEST_VARDIR/tmp/bug30126.sql
---exec $MYSQL mysqldump_30126 < $MYSQLTEST_VARDIR/tmp/bug30126.sql
+--exec $MYSQL_DUMP --add-drop-database mysqldump_30126 > $file
+--exec $MYSQL mysqldump_30126 < $file
 DROP DATABASE mysqldump_30126;
+
+--remove_file $file

=== modified file 'mysql-test/t/mysqltest.test'
--- a/mysql-test/t/mysqltest.test	2009-02-19 23:24:25 +0000
+++ b/mysql-test/t/mysqltest.test	2009-03-02 10:22:38 +0000
@@ -1463,7 +1463,7 @@ select "this will be executed";
 
 remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.result;
 --error 0,1
-remove_file $MYSQLTEST_VARDIR/log/zero_length_file.reject;
+remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.reject;
 --error 0,1
 remove_file $MYSQL_TEST_DIR/r/zero_length_file.reject;
 

=== modified file 'mysql-test/t/show_check.test'
--- a/mysql-test/t/show_check.test	2008-09-06 00:51:17 +0000
+++ b/mysql-test/t/show_check.test	2009-03-02 10:22:38 +0000
@@ -897,10 +897,12 @@ CREATE TABLE t1(ËÏÌÏÎËÁ1 INT);
 # Check:
 #   - Dump mysqltest1;
 
+--let $outfile1=$MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
+
 --echo
---echo ---> Dumping mysqltest1 to show_check.mysqltest1.sql
+--echo ---> Dumping mysqltest1 to outfile1
 
---exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
+--exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $outfile1
 
 #   - Clean mysqltest1;
 
@@ -915,7 +917,8 @@ DROP DATABASE mysqltest1;
 --echo
 
 --echo ---> Restoring mysqltest1...
---exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
+--exec $MYSQL test < $outfile1
+--remove_file $outfile1
 
 #   - Check definition of the table.
 

=== modified file 'mysql-test/t/skip_name_resolve.test'
--- a/mysql-test/t/skip_name_resolve.test	2005-12-18 17:11:19 +0000
+++ b/mysql-test/t/skip_name_resolve.test	2009-03-04 12:33:56 +0000
@@ -15,6 +15,9 @@ DROP USER mysqltest_1@'127.0.0.1/255.255
 connect (con1, 127.0.0.1, root, , test, $MASTER_MYPORT, );
 --replace_column 1 #
 select user();
---replace_column 1 <id> 3 <host> 5 <command> 6 <time> 7 <state> 8 <info>
+# We are only interested in the fact that statement below doesn't
+# crash server.
+--disable_result_log
 show processlist;
+--enable_result_log
 connection default;

=== modified file 'mysql-test/t/strict.test'
--- a/mysql-test/t/strict.test	2008-12-01 04:17:52 +0000
+++ b/mysql-test/t/strict.test	2009-03-05 11:20:01 +0000
@@ -1163,11 +1163,11 @@ set @@sql_mode= @org_mode;
 # Bug #13934 Silent truncation of table comments
 #
 set @@sql_mode='traditional';
---error 1105
+--error ER_TOO_LONG_TABLE_COMMENT
 create table t1 (i int)
 comment '123456789*123456789*123456789*123456789*123456789*
          123456789*123456789*123456789*123456789*123456789*';
---error 1105
+--error ER_TOO_LONG_FIELD_COMMENT
 create table t1 (
 i int comment
 '123456789*123456789*123456789*123456789*

=== modified file 'mysql-test/t/variables.test'
--- a/mysql-test/t/variables.test	2009-02-27 20:43:43 +0000
+++ b/mysql-test/t/variables.test	2009-03-06 15:11:34 +0000
@@ -173,21 +173,63 @@ select @@timestamp>0;
 set @@rand_seed1=10000000,@@rand_seed2=1000000;
 select ROUND(RAND(),5);
 
-show variables like '%alloc%';
-select * from information_schema.session_variables where variable_name like '%alloc%' order by 1;
-set @@range_alloc_block_size=1024*16;
+
+--echo
+--echo ==+ Testing %alloc% system variables +==
+--echo ==+ NOTE:  These values *must* be a multiple of 1024 +==
+--echo ==+ Other values will be rounded down to nearest multiple +==
+--echo
+--echo ==+ Show initial values +==
+SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size');
+
+--echo ==+ information_schema data +==
+SELECT * FROM information_schema.session_variables 
+WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size') ORDER BY 1;
+--echo Testing values that are multiples of 1024
+set @@range_alloc_block_size=1024*15+1024;
+set @@query_alloc_block_size=1024*15+1024*2;
+set @@query_prealloc_size=1024*18-1024;
+set @@transaction_alloc_block_size=1024*21-1024*1;
+set @@transaction_prealloc_size=1024*21-2048;
+--echo ==+ Check manipulated values ==+
+select @@query_alloc_block_size;
+SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size');
+--echo ==+ information_schema data +==
+SELECT * FROM information_schema.session_variables
+WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size') ORDER BY 1;
+--echo ==+ Manipulate variable values +==
+--echo Testing values that are not 1024 multiples
+set @@range_alloc_block_size=1024*16+1023;
 set @@query_alloc_block_size=1024*17+2;
-set @@query_prealloc_size=1024*18;
+set @@query_prealloc_size=1024*18-1023;
 set @@transaction_alloc_block_size=1024*20-1;
 set @@transaction_prealloc_size=1024*21-1;
 select @@query_alloc_block_size;
-show variables like '%alloc%';
-select * from information_schema.session_variables where variable_name like '%alloc%' order by 1;
+--echo ==+ Check manipulated values ==+
+SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size');
+--echo ==+ information_schema data +==
+SELECT * FROM information_schema.session_variables 
+WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size') ORDER BY 1;
+--echo ==+ Set values back to the default values +==
 set @@range_alloc_block_size=default;
 set @@query_alloc_block_size=default, @@query_prealloc_size=default;
 set transaction_alloc_block_size=default, @@transaction_prealloc_size=default;
-show variables like '%alloc%';
-select * from information_schema.session_variables where variable_name like '%alloc%' order by 1;
+--echo ==+ Check the values now that they are reset +==
+SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
+'query_alloc_block_size', 'query_prealloc_size',
+'transaction_alloc_block_size', 'transaction_prealloc_size');
 
 #
 # Bug #10904 Illegal mix of collations between
@@ -1112,5 +1154,13 @@ SELECT @@global.expire_logs_days;
 SET GLOBAL expire_logs_days = @old_eld;
 
 
+#
+# Bug#41030 Wrong meta data (incorrect fieldlen)
+#
+
+--enable_metadata
+select @@storage_engine;
+--disable_metadata
+
 
 --echo End of 5.1 tests

=== modified file 'mysql-test/t/view_grant.test'
--- a/mysql-test/t/view_grant.test	2009-02-25 10:19:29 +0000
+++ b/mysql-test/t/view_grant.test	2009-02-26 17:20:50 +0000
@@ -1191,6 +1191,46 @@ DROP DATABASE mysqltest1;
 DROP DATABASE mysqltest2;
 DROP USER mysqltest_u1@localhost;
 
+
+#
+# Bug #41354: Access control is bypassed when all columns of a view are 
+# selected by * wildcard
+
+CREATE DATABASE db1;
+USE db1;
+CREATE TABLE t1(f1 INT, f2 INT);
+CREATE VIEW v1 AS SELECT f1, f2 FROM t1;
+
+GRANT SELECT (f1) ON t1 TO foo;
+GRANT SELECT (f1) ON v1 TO foo;
+
+connect (addconfoo, localhost, foo,,);
+connection addconfoo;
+USE db1;
+
+
+SELECT f1 FROM t1;
+--error ER_COLUMNACCESS_DENIED_ERROR
+SELECT f2 FROM t1;
+--error ER_TABLEACCESS_DENIED_ERROR
+SELECT * FROM t1;
+
+SELECT f1 FROM v1;
+--error ER_COLUMNACCESS_DENIED_ERROR
+SELECT f2 FROM v1;
+--error ER_TABLEACCESS_DENIED_ERROR
+SELECT * FROM v1;
+
+connection default;
+USE test;
+disconnect addconfoo;
+REVOKE SELECT (f1) ON db1.t1 FROM foo;
+REVOKE SELECT (f1) ON db1.v1 FROM foo;
+DROP USER foo;
+DROP VIEW db1.v1;
+DROP TABLE db1.t1;
+DROP DATABASE db1;
+
 --echo End of 5.0 tests.
 
 

=== modified file 'sql/item_func.cc'
--- a/sql/item_func.cc	2009-02-12 10:10:07 +0000
+++ b/sql/item_func.cc	2009-03-05 13:23:16 +0000
@@ -4837,7 +4837,9 @@ bool Item_func_get_system_var::is_writte
 
 void Item_func_get_system_var::fix_length_and_dec()
 {
+  char *cptr;
   maybe_null=0;
+  max_length= 0;
 
   if (var->check_type(var_type))
   {
@@ -4867,8 +4869,14 @@ void Item_func_get_system_var::fix_lengt
       break;
     case SHOW_CHAR:
     case SHOW_CHAR_PTR:
+      pthread_mutex_lock(&LOCK_global_system_variables);
+      cptr= var->show_type() == SHOW_CHAR_PTR ? 
+        *(char**) var->value_ptr(current_thd, var_type, &component) :
+        (char*) var->value_ptr(current_thd, var_type, &component);
+      if (cptr)
+        max_length= strlen(cptr) * system_charset_info->mbmaxlen;
+      pthread_mutex_unlock(&LOCK_global_system_variables);
       collation.set(system_charset_info, DERIVATION_SYSCONST);
-      max_length= MAX_BLOB_WIDTH;
       decimals=NOT_FIXED_DEC;
       break;
     case SHOW_BOOL:

=== modified file 'sql/log.cc'
--- a/sql/log.cc	2009-01-23 12:22:05 +0000
+++ b/sql/log.cc	2009-03-05 09:48:03 +0000
@@ -4650,10 +4650,14 @@ bool flush_error_log()
       uchar buf[IO_SIZE];
 
       freopen(err_temp,"a+",stderr);
+      setbuf(stderr, NULL);
       (void) my_delete(err_renamed, MYF(0));
       my_rename(log_error_file,err_renamed,MYF(0));
       if (freopen(log_error_file,"a+",stdout))
+      {
         freopen(log_error_file,"a+",stderr);
+        setbuf(stderr, NULL);
+      }
 
       if ((fd = my_open(err_temp, O_RDONLY, MYF(0))) >= 0)
       {
@@ -4669,7 +4673,10 @@ bool flush_error_log()
 #else
    my_rename(log_error_file,err_renamed,MYF(0));
    if (freopen(log_error_file,"a+",stdout))
+   {
      freopen(log_error_file,"a+",stderr);
+     setbuf(stderr, NULL);
+   }
    else
      result= 1;
 #endif

=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2009-02-25 08:49:02 +0000
+++ b/sql/mysqld.cc	2009-03-05 09:48:03 +0000
@@ -3703,7 +3703,10 @@ static int init_server_components()
 #ifndef EMBEDDED_LIBRARY
       if (freopen(log_error_file, "a+", stdout))
 #endif
+      {
         freopen(log_error_file, "a+", stderr);
+        setbuf(stderr, NULL);
+      }
     }
   }
 
@@ -4331,6 +4334,7 @@ we force server id to 2, but this MySQL
   {
     freopen(log_error_file,"a+",stdout);
     freopen(log_error_file,"a+",stderr);
+    setbuf(stderr, NULL);
     FreeConsole();				// Remove window
   }
 #endif

=== modified file 'sql/opt_range.cc'
--- a/sql/opt_range.cc	2009-01-05 16:10:20 +0000
+++ b/sql/opt_range.cc	2009-02-27 15:07:27 +0000
@@ -9239,32 +9239,37 @@ get_best_group_min_max(PARAM *param, SEL
   */
   KEY *cur_index_info= table->key_info;
   KEY *cur_index_info_end= cur_index_info + table->s->keys;
-  KEY_PART_INFO *cur_part= NULL;
-  KEY_PART_INFO *end_part; /* Last part for loops. */
-  /* Last index part. */
-  KEY_PART_INFO *last_part= NULL;
-  KEY_PART_INFO *first_non_group_part= NULL;
-  KEY_PART_INFO *first_non_infix_part= NULL;
-  uint key_infix_parts= 0;
-  uint cur_group_key_parts= 0;
-  uint cur_group_prefix_len= 0;
   /* Cost-related variables for the best index so far. */
   double best_read_cost= DBL_MAX;
   ha_rows best_records= 0;
   SEL_ARG *best_index_tree= NULL;
   ha_rows best_quick_prefix_records= 0;
   uint best_param_idx= 0;
-  double cur_read_cost= DBL_MAX;
-  ha_rows cur_records;
+
+  const uint pk= param->table->s->primary_key;
   SEL_ARG *cur_index_tree= NULL;
   ha_rows cur_quick_prefix_records= 0;
   uint cur_param_idx=MAX_KEY;
-  key_map cur_used_key_parts;
-  uint pk= param->table->s->primary_key;
 
   for (uint cur_index= 0 ; cur_index_info != cur_index_info_end ;
        cur_index_info++, cur_index++)
   {
+    KEY_PART_INFO *cur_part;
+    KEY_PART_INFO *end_part; /* Last part for loops. */
+    /* Last index part. */
+    KEY_PART_INFO *last_part;
+    KEY_PART_INFO *first_non_group_part;
+    KEY_PART_INFO *first_non_infix_part;
+    uint key_infix_parts;
+    uint cur_group_key_parts= 0;
+    uint cur_group_prefix_len= 0;
+    double cur_read_cost;
+    ha_rows cur_records;
+    key_map used_key_parts_map;
+    uint cur_key_infix_len= 0;
+    uchar cur_key_infix[MAX_KEY_LENGTH];
+    uint cur_used_key_parts;
+    
     /* Check (B1) - if current index is covering. */
     if (!table->covering_keys.is_set(cur_index))
       goto next_index;
@@ -9334,7 +9339,7 @@ get_best_group_min_max(PARAM *param, SEL
     else if (join->select_distinct)
     {
       select_items_it.rewind();
-      cur_used_key_parts.clear_all();
+      used_key_parts_map.clear_all();
       uint max_key_part= 0;
       while ((item= select_items_it++))
       {
@@ -9345,13 +9350,13 @@ get_best_group_min_max(PARAM *param, SEL
           Check if this attribute was already present in the select list.
           If it was present, then its corresponding key part was alredy used.
         */
-        if (cur_used_key_parts.is_set(key_part_nr))
+        if (used_key_parts_map.is_set(key_part_nr))
           continue;
         if (key_part_nr < 1 || key_part_nr > join->fields_list.elements)
           goto next_index;
         cur_part= cur_index_info->key_part + key_part_nr - 1;
         cur_group_prefix_len+= cur_part->store_length;
-        cur_used_key_parts.set_bit(key_part_nr);
+        used_key_parts_map.set_bit(key_part_nr);
         ++cur_group_key_parts;
         max_key_part= max(max_key_part,key_part_nr);
       }
@@ -9363,7 +9368,7 @@ get_best_group_min_max(PARAM *param, SEL
       */
       ulonglong all_parts, cur_parts;
       all_parts= (1<<max_key_part) - 1;
-      cur_parts= cur_used_key_parts.to_ulonglong() >> 1;
+      cur_parts= used_key_parts_map.to_ulonglong() >> 1;
       if (all_parts != cur_parts)
         goto next_index;
     }
@@ -9413,7 +9418,8 @@ get_best_group_min_max(PARAM *param, SEL
                                                         &dummy);
         if (!get_constant_key_infix(cur_index_info, index_range_tree,
                                     first_non_group_part, min_max_arg_part,
-                                    last_part, thd, key_infix, &key_infix_len,
+                                    last_part, thd, cur_key_infix, 
+                                    &cur_key_infix_len,
                                     &first_non_infix_part))
           goto next_index;
       }
@@ -9467,9 +9473,9 @@ get_best_group_min_max(PARAM *param, SEL
     }
 
     /* If we got to this point, cur_index_info passes the test. */
-    key_infix_parts= key_infix_len ?
+    key_infix_parts= cur_key_infix_len ?
                      (first_non_infix_part - first_non_group_part) : 0;
-    used_key_parts= cur_group_key_parts + key_infix_parts;
+    cur_used_key_parts= cur_group_key_parts + key_infix_parts;
 
     /* Compute the cost of using this index. */
     if (tree)
@@ -9481,7 +9487,7 @@ get_best_group_min_max(PARAM *param, SEL
       cur_quick_prefix_records= check_quick_select(param, cur_param_idx,
                                                     cur_index_tree, TRUE);
     }
-    cost_group_min_max(table, cur_index_info, used_key_parts,
+    cost_group_min_max(table, cur_index_info, cur_used_key_parts,
                        cur_group_key_parts, tree, cur_index_tree,
                        cur_quick_prefix_records, have_min, have_max,
                        &cur_read_cost, &cur_records);
@@ -9492,7 +9498,6 @@ get_best_group_min_max(PARAM *param, SEL
     */
     if (cur_read_cost < best_read_cost - (DBL_EPSILON * cur_read_cost))
     {
-      DBUG_ASSERT(tree != 0 || cur_param_idx == MAX_KEY);
       index_info= cur_index_info;
       index= cur_index;
       best_read_cost= cur_read_cost;
@@ -9502,11 +9507,13 @@ get_best_group_min_max(PARAM *param, SEL
       best_param_idx= cur_param_idx;
       group_key_parts= cur_group_key_parts;
       group_prefix_len= cur_group_prefix_len;
+      key_infix_len= cur_key_infix_len;
+      if (key_infix_len)
+        memcpy (key_infix, cur_key_infix, sizeof (key_infix));
+      used_key_parts= cur_used_key_parts;
     }
 
-  next_index:
-    cur_group_key_parts= 0;
-    cur_group_prefix_len= 0;
+  next_index:;
   }
   if (!index_info) /* No usable index found. */
     DBUG_RETURN(NULL);

=== modified file 'sql/protocol.cc'
--- a/sql/protocol.cc	2009-02-26 12:14:33 +0000
+++ b/sql/protocol.cc	2009-02-27 08:03:47 +0000
@@ -598,7 +598,8 @@ bool Protocol::send_fields(List<Item> *l
                      field.length / item->collation.collation->mbminlen :
                      field.length / item->collation.collation->mbmaxlen;
         max_length*= thd_charset->mbmaxlen;
-        field_length= (max_length > UINT_MAX32) ? UINT_MAX32 : max_length;
+        field_length= (max_length > UINT_MAX32) ? 
+          UINT_MAX32 : (uint32) max_length;
         int4store(pos + 2, field_length);
       }
       pos[6]= field.type;

=== modified file 'sql/rpl_record.cc'
--- a/sql/rpl_record.cc	2008-02-05 13:52:20 +0000
+++ b/sql/rpl_record.cc	2009-03-05 19:54:53 +0000
@@ -297,21 +297,16 @@ unpack_row(Relay_log_info const *rli,
 /**
   Fills @c table->record[0] with default values.
 
-  First @c empty_record() is called and then, additionally, fields are
-  initialized explicitly with a call to @c set_default().
-
-  For optimization reasons, the explicit initialization can be skipped for
-  first @c skip fields. This is useful if later we are going to fill these 
-  fields from other source (e.g. from a Rows replication event).
-
-  If @c check is true, fields are explicitly initialized only if they have
-  default value or can be NULL. Otherwise error is reported.
+  First @c restore_record() is called to restore the default values for
+  record concerning the given table. Then, if @c check is true, 
+  a check is performed to see if fields are have default value or can 
+  be NULL. Otherwise error is reported.
  
   @param table  Table whose record[0] buffer is prepared. 
-  @param skip   Number of columns for which default value initialization 
+  @param skip   Number of columns for which default/nullable check 
                 should be skipped.
-  @param check  Indicates if errors should be checked when setting default
-                values.
+  @param check  Indicates if errors should be raised when checking 
+                default/nullable field properties.
                 
   @returns 0 on success or a handler level error code
  */ 
@@ -321,25 +316,28 @@ int prepare_record(TABLE *const table,
   DBUG_ENTER("prepare_record");
 
   int error= 0;
-  empty_record(table);
+  restore_record(table, s->default_values);
 
-  if (skip >= table->s->fields)  // nothing to do
+  /*
+     This skip should be revisited in 6.0, because in 6.0 RBR one 
+     can have holes in the row (as the grain of the writeset is 
+     the column and not the entire row).
+   */
+  if (skip >= table->s->fields || !check)
     DBUG_RETURN(0);
 
-  /* Explicit initialization of fields */
+  /* Checking if exists default/nullable fields in the default values. */
 
   for (Field **field_ptr= table->field+skip ; *field_ptr ; ++field_ptr)
   {
     uint32 const mask= NOT_NULL_FLAG | NO_DEFAULT_VALUE_FLAG;
     Field *const f= *field_ptr;
 
-    if (check && ((f->flags & mask) == mask))
+    if (((f->flags & mask) == mask))
     {
       my_error(ER_NO_DEFAULT_FOR_FIELD, MYF(0), f->field_name);
       error = HA_ERR_ROWS_EVENT_APPLY;
     }
-    else
-      f->set_default();
   }
 
   DBUG_RETURN(error);

=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc	2009-03-05 15:42:12 +0000
+++ b/sql/set_var.cc	2009-03-06 15:11:34 +0000
@@ -110,6 +110,7 @@ static void sys_default_init_connect(THD
 static bool sys_update_init_slave(THD*, set_var*);
 static void sys_default_init_slave(THD*, enum_var_type type);
 static bool set_option_bit(THD *thd, set_var *var);
+static bool set_option_log_bin_bit(THD *thd, set_var *var);
 static bool set_option_autocommit(THD *thd, set_var *var);
 static int  check_log_update(THD *thd, set_var *var);
 static bool set_log_update(THD *thd, set_var *var);
@@ -729,7 +730,7 @@ static sys_var_thd_bit	sys_log_update(&v
 				       OPTION_BIN_LOG);
 static sys_var_thd_bit	sys_log_binlog(&vars, "sql_log_bin",
                                        check_log_update,
-				       set_option_bit,
+                                       set_option_log_bin_bit,
 				       OPTION_BIN_LOG);
 static sys_var_thd_bit	sys_sql_warnings(&vars, "sql_warnings", 0,
 					 set_option_bit,
@@ -3033,6 +3034,16 @@ static bool set_option_bit(THD *thd, set
   return 0;
 }
 
+/*
+  Functions to be only used to update thd->options OPTION_BIN_LOG bit
+*/
+static bool set_option_log_bin_bit(THD *thd, set_var *var)
+{
+  set_option_bit(thd, var);
+  if (!thd->in_sub_stmt)
+    thd->sql_log_bin_toplevel= thd->options & OPTION_BIN_LOG;
+  return 0;
+}
 
 static bool set_option_autocommit(THD *thd, set_var *var)
 {

=== modified file 'sql/share/errmsg.txt'
--- a/sql/share/errmsg.txt	2009-02-18 20:10:19 +0000
+++ b/sql/share/errmsg.txt	2009-03-05 11:20:01 +0000
@@ -6154,3 +6154,26 @@ WARN_PLUGIN_BUSY
 
 ER_VARIABLE_IS_READONLY
   eng "%s variable '%s' is read-only. Use SET %s to assign the value"
+
+ER_WARN_ENGINE_TRANSACTION_ROLLBACK
+  eng "Storage engine %s does not support rollback for this statement. Transaction rolled back and must be restarted"
+
+ER_SLAVE_HEARTBEAT_FAILURE
+  eng "Unexpected master's heartbeat data: %s"
+ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
+  eng "The requested value for the heartbeat period %s %s"
+
+ER_NDB_REPLICATION_SCHEMA_ERROR
+        eng "Bad schema for mysql.ndb_replication table. Message: %-.64s"
+ER_CONFLICT_FN_PARSE_ERROR
+        eng "Error in parsing conflict function. Message: %-.64s"
+ER_EXCEPTIONS_WRITE_ERROR
+        eng "Write to exceptions table failed. Message: %-.128s""
+
+ER_TOO_LONG_TABLE_COMMENT
+  eng "Comment for table '%-.64s' is too long (max = %lu)"
+  por "Comentário para a tabela '%-.64s' é longo demais (max = %lu)"
+
+ER_TOO_LONG_FIELD_COMMENT
+  eng "Comment for field '%-.64s' is too long (max = %lu)"
+  por "Comentário para o campo '%-.64s' é longo demais (max = %lu)"

=== modified file 'sql/sp.cc'
--- a/sql/sp.cc	2008-07-15 01:43:12 +0000
+++ b/sql/sp.cc	2009-02-28 01:35:18 +0000
@@ -936,10 +936,12 @@ sp_create_routine(THD *thd, int type, sp
         ret= SP_INTERNAL_ERROR;
         goto done;
       }
-
+      /* restore sql_mode when binloging */
+      thd->variables.sql_mode= saved_mode;
       /* Such a statement can always go directly to binlog, no trans cache */
       thd->binlog_query(THD::MYSQL_QUERY_TYPE,
                         log_query.c_ptr(), log_query.length(), FALSE, FALSE);
+      thd->variables.sql_mode= 0;
     }
 
   }

=== modified file 'sql/sql_cache.cc'
--- a/sql/sql_cache.cc	2009-02-19 21:09:35 +0000
+++ b/sql/sql_cache.cc	2009-03-06 10:19:02 +0000
@@ -418,6 +418,43 @@ TYPELIB query_cache_type_typelib=
   array_elements(query_cache_type_names)-1,"", query_cache_type_names, NULL
 };
 
+
+/**
+  Helper function for determine if a SELECT statement has a SQL_NO_CACHE
+  directive.
+  
+  @param sql A pointer to the first white space character after SELECT
+  
+  @return
+   @retval TRUE The character string contains SQL_NO_CACHE
+   @retval FALSE No directive found.
+*/
+ 
+static bool has_no_cache_directive(char *sql)
+{
+  int i=0;
+  while (sql[i] == ' ')
+    ++i;
+    
+  if (my_toupper(system_charset_info, sql[i])    == 'S' &&
+      my_toupper(system_charset_info, sql[i+1])  == 'Q' &&
+      my_toupper(system_charset_info, sql[i+2])  == 'L' &&
+      my_toupper(system_charset_info, sql[i+3])  == '_' &&
+      my_toupper(system_charset_info, sql[i+4])  == 'N' &&
+      my_toupper(system_charset_info, sql[i+5])  == 'O' &&
+      my_toupper(system_charset_info, sql[i+6])  == '_' &&
+      my_toupper(system_charset_info, sql[i+7])  == 'C' &&
+      my_toupper(system_charset_info, sql[i+8])  == 'A' &&
+      my_toupper(system_charset_info, sql[i+9])  == 'C' &&
+      my_toupper(system_charset_info, sql[i+10]) == 'H' &&
+      my_toupper(system_charset_info, sql[i+11]) == 'E' &&
+      my_toupper(system_charset_info, sql[i+12]) == ' ')
+    return TRUE;
+  
+  return FALSE;       
+}
+
+
 /*****************************************************************************
  Query_cache_block_table method(s)
 *****************************************************************************/
@@ -1233,6 +1270,16 @@ Query_cache::send_result_to_client(THD *
       DBUG_PRINT("qcache", ("The statement is not a SELECT; Not cached"));
       goto err;
     }
+    
+    if (query_length > 20 && has_no_cache_directive(&sql[i+6]))
+    {
+      /*
+        We do not increase 'refused' statistics here since it will be done
+        later when the query is parsed.
+      */
+      DBUG_PRINT("qcache", ("The statement has a SQL_NO_CACHE directive"));
+      goto err;
+    }
   }
 
   STRUCT_LOCK(&structure_guard_mutex);

=== modified file 'sql/sql_class.cc'
--- a/sql/sql_class.cc	2009-02-13 16:20:56 +0000
+++ b/sql/sql_class.cc	2009-03-06 10:19:02 +0000
@@ -538,6 +538,7 @@ THD::THD()
    Open_tables_state(refresh_version), rli_fake(0),
    lock_id(&main_lock_id),
    user_time(0), in_sub_stmt(0),
+   sql_log_bin_toplevel(false),
    binlog_table_maps(0), binlog_flags(0UL),
    table_map_for_update(0),
    arg_of_last_insert_id_function(FALSE),
@@ -787,6 +788,7 @@ void THD::init(void)
   update_charset();
   reset_current_stmt_binlog_row_based();
   bzero((char *) &status_var, sizeof(status_var));
+  sql_log_bin_toplevel= options & OPTION_BIN_LOG;
 }
 
 
@@ -3662,7 +3664,7 @@ int THD::binlog_query(THD::enum_binlog_q
     If we are in statement mode and trying to log an unsafe statement,
     we should print a warning.
   */
-  if (lex->is_stmt_unsafe() &&
+  if (sql_log_bin_toplevel && lex->is_stmt_unsafe() &&
       variables.binlog_format == BINLOG_FORMAT_STMT)
   {
     push_warning(this, MYSQL_ERROR::WARN_LEVEL_WARN,

=== modified file 'sql/sql_class.h'
--- a/sql/sql_class.h	2009-01-23 12:22:05 +0000
+++ b/sql/sql_class.h	2009-03-05 19:01:46 +0000
@@ -1350,6 +1350,8 @@ public:
 
   /* <> 0 if we are inside of trigger or stored function. */
   uint in_sub_stmt;
+  /* TRUE when the current top has SQL_LOG_BIN ON */
+  bool sql_log_bin_toplevel;
 
   /* container for handler's private per-connection data */
   Ha_data ha_data[MAX_HA];

=== modified file 'sql/sql_lex.cc'
--- a/sql/sql_lex.cc	2009-01-05 16:10:20 +0000
+++ b/sql/sql_lex.cc	2009-03-05 14:22:33 +0000
@@ -1559,6 +1559,7 @@ void st_select_lex::init_query()
   exclude_from_table_unique_test= no_wrap_view_item= FALSE;
   nest_level= 0;
   link_next= 0;
+  lock_option= TL_READ_DEFAULT;
 }
 
 void st_select_lex::init_select()

=== modified file 'sql/sql_lex.h'
--- a/sql/sql_lex.h	2009-01-15 18:11:25 +0000
+++ b/sql/sql_lex.h	2009-03-05 14:22:33 +0000
@@ -688,6 +688,15 @@ public:
   int cur_pos_in_select_list;
 
   List<udf_func>     udf_list;                  /* udf function calls stack */
+
+  /**
+    Per sub-query locking strategy.
+    Note: This variable might interfer with the corresponding statement-level
+    variable Lex::lock_option because on how different parser rules depend
+    on eachother.
+  */
+  thr_lock_type lock_option;
+
   /* 
     This is a copy of the original JOIN USING list that comes from
     the parser. The parser :

=== modified file 'sql/sql_parse.cc'
--- a/sql/sql_parse.cc	2009-02-16 11:38:15 +0000
+++ b/sql/sql_parse.cc	2009-03-06 09:52:43 +0000
@@ -5580,6 +5580,14 @@ void mysql_reset_thd_for_next_command(TH
 }
 
 
+/**
+  Resets the lex->current_select object.
+  @note It is assumed that lex->current_select != NULL
+
+  This function is a wrapper around select_lex->init_select() with an added
+  check for the special situation when using INTO OUTFILE and LOAD DATA.
+*/
+
 void
 mysql_init_select(LEX *lex)
 {
@@ -5594,6 +5602,18 @@ mysql_init_select(LEX *lex)
 }
 
 
+/**
+  Used to allocate a new SELECT_LEX object on the current thd mem_root and
+  link it into the relevant lists.
+
+  This function is always followed by mysql_init_select.
+
+  @see mysql_init_select
+
+  @retval TRUE An error occurred
+  @retval FALSE The new SELECT_LEX was successfully allocated.
+*/
+
 bool
 mysql_new_select(LEX *lex, bool move_down)
 {
@@ -6411,7 +6431,6 @@ void st_select_lex::set_lock_for_tables(
   DBUG_ENTER("set_lock_for_tables");
   DBUG_PRINT("enter", ("lock_type: %d  for_update: %d", lock_type,
 		       for_update));
-
   for (TABLE_LIST *tables= (TABLE_LIST*) table_list.first;
        tables;
        tables= tables->next_local)

=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc	2009-02-25 12:18:24 +0000
+++ b/sql/sql_show.cc	2009-03-05 11:15:47 +0000
@@ -3796,8 +3796,19 @@ static int get_schema_column_record(THD
                            cs);
     table->field[4]->store((longlong) count, TRUE);
     field->sql_type(type);
-    table->field[14]->store(type.ptr(), type.length(), cs);		
+    table->field[14]->store(type.ptr(), type.length(), cs);
+    /*
+      MySQL column type has the following format:
+      base_type [(dimension)] [unsigned] [zerofill].
+      For DATA_TYPE column we extract only base type.
+    */
     tmp_buff= strchr(type.ptr(), '(');
+    if (!tmp_buff)
+      /*
+        if there is no dimention part then check the presence of
+        [unsigned] [zerofill] attributes and cut them of if exist.
+      */
+      tmp_buff= strchr(type.ptr(), ' ');
     table->field[7]->store(type.ptr(),
                            (tmp_buff ? tmp_buff - type.ptr() :
                             type.length()), cs);

=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc	2009-02-20 10:21:45 +0000
+++ b/sql/sql_table.cc	2009-03-05 08:41:00 +0000
@@ -4297,7 +4297,14 @@ static bool mysql_admin_table(THD* thd,
           view_checksum(thd, table) == HA_ADMIN_WRONG_CHECKSUM)
         push_warning(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
                      ER_VIEW_CHECKSUM, ER(ER_VIEW_CHECKSUM));
-      result_code= HA_ADMIN_CORRUPT;
+      if (thd->main_da.is_error() && 
+          (thd->main_da.sql_errno() == ER_NO_SUCH_TABLE ||
+           thd->main_da.sql_errno() == ER_FILE_NOT_FOUND))
+        /* A missing table is just issued as a failed command */
+        result_code= HA_ADMIN_FAILED;
+      else
+        /* Default failure code is corrupt table */
+        result_code= HA_ADMIN_CORRUPT;
       goto send_result;
     }
 

=== modified file 'sql/sql_yacc.yy'
--- a/sql/sql_yacc.yy	2009-02-16 11:38:15 +0000
+++ b/sql/sql_yacc.yy	2009-03-05 14:22:33 +0000
@@ -6489,7 +6489,8 @@ select_option:
           {
             if (check_simple_select())
               MYSQL_YYABORT;
-            Lex->lock_option= TL_READ_HIGH_PRIORITY;
+            Lex->lock_option=  TL_READ_HIGH_PRIORITY;
+            Lex->current_select->lock_option= TL_READ_HIGH_PRIORITY;
           }
         | DISTINCT         { Select->options|= SELECT_DISTINCT; }
         | SQL_SMALL_RESULT { Select->options|= SELECT_SMALL_RESULT; }
@@ -6535,6 +6536,7 @@ select_lock_type:
           {
             LEX *lex=Lex;
             lex->current_select->set_lock_for_tables(TL_WRITE);
+            lex->current_select->lock_option= TL_WRITE;
             lex->safe_to_cache_query=0;
           }
         | LOCK_SYM IN_SYM SHARE_SYM MODE_SYM
@@ -6542,6 +6544,7 @@ select_lock_type:
             LEX *lex=Lex;
             lex->current_select->
               set_lock_for_tables(TL_READ_WITH_SHARED_LOCKS);
+            lex->current_select->lock_option= TL_READ_WITH_SHARED_LOCKS;
             lex->safe_to_cache_query=0;
           }
         ;
@@ -12909,6 +12912,18 @@ subselect_start:
 subselect_end:
           {
             LEX *lex=Lex;
+            /*
+              Set the required lock level for the tables associated with the
+              current sub-select. This will overwrite previous lock options set
+              using st_select_lex::add_table_to_list in any of the following
+              rules: single_multi, table_wild_one, load_data, table_alias_ref,
+              table_factor.
+              The default lock level is TL_READ_DEFAULT but it can be modified
+              with query options specific for a certain (sub-)SELECT.
+            */
+            lex->current_select->
+              set_lock_for_tables(lex->current_select->lock_option);
+
             lex->pop_context();
             SELECT_LEX *child= lex->current_select;
             lex->current_select = lex->current_select->return_after_parsing();

=== modified file 'sql/unireg.cc'
--- a/sql/unireg.cc	2009-01-26 15:27:51 +0000
+++ b/sql/unireg.cc	2009-03-05 11:20:01 +0000
@@ -229,16 +229,16 @@ bool mysql_create_frm(THD *thd, const ch
                                               create_info->comment.length, 60);
   if (tmp_len < create_info->comment.length)
   {
-    (void) my_snprintf(buff, sizeof(buff), "Too long comment for table '%s'",
-                       table);
     if ((thd->variables.sql_mode &
          (MODE_STRICT_TRANS_TABLES | MODE_STRICT_ALL_TABLES)))
     {
-      my_message(ER_UNKNOWN_ERROR, buff, MYF(0));
+      my_error(ER_TOO_LONG_TABLE_COMMENT, MYF(0), table, tmp_len);
       goto err;
     }
     push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
-                        ER_UNKNOWN_ERROR, ER(ER_UNKNOWN_ERROR), buff);
+                        ER_TOO_LONG_TABLE_COMMENT,
+                        ER(ER_TOO_LONG_TABLE_COMMENT),
+                        table, tmp_len);
     create_info->comment.length= tmp_len;
   }
 
@@ -613,17 +613,16 @@ static bool pack_header(uchar *forminfo,
                                                      255);
     if (tmp_len < field->comment.length)
     {
-      char buff[128];
-      (void) my_snprintf(buff,sizeof(buff), "Too long comment for field '%s'",
-                         field->field_name);
       if ((current_thd->variables.sql_mode &
 	   (MODE_STRICT_TRANS_TABLES | MODE_STRICT_ALL_TABLES)))
       {
-        my_message(ER_UNKNOWN_ERROR, buff, MYF(0));
+        my_error(ER_TOO_LONG_FIELD_COMMENT, MYF(0), field->field_name, tmp_len);
 	DBUG_RETURN(1);
       }
       push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
-                          ER_UNKNOWN_ERROR, ER(ER_UNKNOWN_ERROR), buff);
+                          ER_TOO_LONG_FIELD_COMMENT,
+                          ER(ER_TOO_LONG_FIELD_COMMENT),
+                          field->field_name, tmp_len);
       field->comment.length= tmp_len;
     }
 

=== modified file 'storage/innobase/dict/dict0load.c'
--- a/storage/innobase/dict/dict0load.c	2007-11-06 22:42:58 +0000
+++ b/storage/innobase/dict/dict0load.c	2009-03-03 01:08:02 +0000
@@ -868,11 +868,11 @@ err_exit:
 	of the error condition, since the user may want to dump data from the
 	clustered index. However we load the foreign key information only if
 	all indexes were loaded. */
-	if (err != DB_SUCCESS && !srv_force_recovery) {
-		dict_mem_table_free(table);
-		table = NULL;
-	} else if (err == DB_SUCCESS) {
+	if (err == DB_SUCCESS) {
 		err = dict_load_foreigns(table->name, TRUE);
+	} else if (!srv_force_recovery) {
+		dict_table_remove_from_cache(table);
+		table = NULL;
 	}
 #if 0
 	if (err != DB_SUCCESS && table != NULL) {

=== modified file 'storage/innobase/include/rem0rec.h'
--- a/storage/innobase/include/rem0rec.h	2006-09-21 07:39:09 +0000
+++ b/storage/innobase/include/rem0rec.h	2009-03-03 01:32:04 +0000
@@ -365,8 +365,9 @@ rec_set_field_extern_bits(
 /***************************************************************
 This is used to modify the value of an already existing field in a record.
 The previous value must have exactly the same size as the new value. If len
-is UNIV_SQL_NULL then the field is treated as an SQL null for old-style
-records. For new-style records, len must not be UNIV_SQL_NULL. */
+is UNIV_SQL_NULL then the field is treated as an SQL null.
+For records in ROW_FORMAT=COMPACT (new-style records), len must not be
+UNIV_SQL_NULL unless the field already is SQL null. */
 UNIV_INLINE
 void
 rec_set_nth_field(
@@ -375,11 +376,7 @@ rec_set_nth_field(
 	const ulint*	offsets,/* in: array returned by rec_get_offsets() */
 	ulint		n,	/* in: index number of the field */
 	const void*	data,	/* in: pointer to the data if not SQL null */
-	ulint		len);	/* in: length of the data or UNIV_SQL_NULL.
-				If not SQL null, must have the same
-				length as the previous value.
-				If SQL null, previous value must be
-				SQL null. */
+	ulint		len);	/* in: length of the data or UNIV_SQL_NULL */
 /**************************************************************
 The following function returns the data size of an old-style physical
 record, that is the sum of field lengths. SQL null fields

=== modified file 'storage/innobase/include/rem0rec.ic'
--- a/storage/innobase/include/rem0rec.ic	2007-11-06 22:42:58 +0000
+++ b/storage/innobase/include/rem0rec.ic	2009-03-03 01:32:04 +0000
@@ -1219,8 +1219,9 @@ rec_get_nth_field_size(
 /***************************************************************
 This is used to modify the value of an already existing field in a record.
 The previous value must have exactly the same size as the new value. If len
-is UNIV_SQL_NULL then the field is treated as an SQL null for old-style
-records. For new-style records, len must not be UNIV_SQL_NULL. */
+is UNIV_SQL_NULL then the field is treated as an SQL null.
+For records in ROW_FORMAT=COMPACT (new-style records), len must not be
+UNIV_SQL_NULL unless the field already is SQL null. */
 UNIV_INLINE
 void
 rec_set_nth_field(
@@ -1230,11 +1231,7 @@ rec_set_nth_field(
 	ulint		n,	/* in: index number of the field */
 	const void*	data,	/* in: pointer to the data
 				if not SQL null */
-	ulint		len)	/* in: length of the data or UNIV_SQL_NULL.
-				If not SQL null, must have the same
-				length as the previous value.
-				If SQL null, previous value must be
-				SQL null. */
+	ulint		len)	/* in: length of the data or UNIV_SQL_NULL */
 {
 	byte*	data2;
 	ulint	len2;
@@ -1242,9 +1239,11 @@ rec_set_nth_field(
 	ut_ad(rec);
 	ut_ad(rec_offs_validate(rec, NULL, offsets));
 
-	if (len == UNIV_SQL_NULL) {
-		ut_ad(!rec_offs_comp(offsets));
-		rec_set_nth_field_sql_null(rec, n);
+	if (UNIV_UNLIKELY(len == UNIV_SQL_NULL)) {
+		if (!rec_offs_nth_sql_null(offsets, n)) {
+			ut_a(!rec_offs_comp(offsets));
+			rec_set_nth_field_sql_null(rec, n);
+		}
 
 		return;
 	}

=== modified file 'storage/innobase/include/trx0roll.h'
--- a/storage/innobase/include/trx0roll.h	2006-04-26 04:30:37 +0000
+++ b/storage/innobase/include/trx0roll.h	2009-03-03 01:06:44 +0000
@@ -15,6 +15,8 @@ Created 3/26/1996 Heikki Tuuri
 #include "mtr0mtr.h"
 #include "trx0sys.h"
 
+#define trx_roll_free_all_savepoints(s) trx_roll_savepoints_free((s), NULL)
+
 /***********************************************************************
 Returns a transaction savepoint taken at this point in time. */
 
@@ -237,7 +239,17 @@ trx_release_savepoint_for_mysql(
 	const char*	savepoint_name);	/* in: savepoint name */
 
 /***********************************************************************
-Frees savepoint structs. */
+Frees a single savepoint struct. */
+
+void
+trx_roll_savepoint_free(
+/*=====================*/
+	trx_t*			trx,	/* in: transaction handle */
+	trx_named_savept_t*	savep);	/* in: savepoint to free */
+
+/***********************************************************************
+Frees savepoint structs starting from savep, if savep == NULL then
+free all savepoints. */
 
 void
 trx_roll_savepoints_free(

=== modified file 'storage/innobase/lock/lock0lock.c'
--- a/storage/innobase/lock/lock0lock.c	2008-12-14 20:00:37 +0000
+++ b/storage/innobase/lock/lock0lock.c	2009-03-03 01:10:37 +0000
@@ -681,7 +681,10 @@ lock_is_table_exclusive(
 	lock_t*	lock;
 	ibool	ok	= FALSE;
 
-	ut_ad(table && trx);
+	ut_ad(table);
+	ut_ad(trx);
+
+	lock_mutex_enter_kernel();
 
 	for (lock = UT_LIST_GET_FIRST(table->locks);
 	     lock;
@@ -689,7 +692,7 @@ lock_is_table_exclusive(
 		if (lock->trx != trx) {
 			/* A lock on the table is held
 			by some other transaction. */
-			return(FALSE);
+			goto not_ok;
 		}
 
 		if (!(lock_get_type(lock) & LOCK_TABLE)) {
@@ -706,11 +709,16 @@ lock_is_table_exclusive(
 			auto_increment lock. */
 			break;
 		default:
+not_ok:
 			/* Other table locks than LOCK_IX are not allowed. */
-			return(FALSE);
+			ok = FALSE;
+			goto func_exit;
 		}
 	}
 
+func_exit:
+	lock_mutex_exit_kernel();
+
 	return(ok);
 }
 
@@ -3664,6 +3672,7 @@ lock_table_has_to_wait_in_queue(
 	dict_table_t*	table;
 	lock_t*		lock;
 
+	ut_ad(mutex_own(&kernel_mutex));
 	ut_ad(lock_get_wait(wait_lock));
 
 	table = wait_lock->un_member.tab_lock.table;

=== modified file 'storage/innobase/trx/trx0roll.c'
--- a/storage/innobase/trx/trx0roll.c	2007-03-22 21:59:35 +0000
+++ b/storage/innobase/trx/trx0roll.c	2009-03-03 01:06:44 +0000
@@ -185,7 +185,25 @@ trx_rollback_last_sql_stat_for_mysql(
 }
 
 /***********************************************************************
-Frees savepoint structs. */
+Frees a single savepoint struct. */
+
+void
+trx_roll_savepoint_free(
+/*=====================*/
+	trx_t*			trx,	/* in: transaction handle */
+	trx_named_savept_t*	savep)	/* in: savepoint to free */
+{
+	ut_a(savep != NULL);
+	ut_a(UT_LIST_GET_LEN(trx->trx_savepoints) > 0);
+
+	UT_LIST_REMOVE(trx_savepoints, trx->trx_savepoints, savep);
+	mem_free(savep->name);
+	mem_free(savep);
+}
+
+/***********************************************************************
+Frees savepoint structs starting from savep, if savep == NULL then
+free all savepoints. */
 
 void
 trx_roll_savepoints_free(
@@ -206,9 +224,7 @@ trx_roll_savepoints_free(
 	while (savep != NULL) {
 		next_savep = UT_LIST_GET_NEXT(trx_savepoints, savep);
 
-		UT_LIST_REMOVE(trx_savepoints, trx->trx_savepoints, savep);
-		mem_free(savep->name);
-		mem_free(savep);
+		trx_roll_savepoint_free(trx, savep);
 
 		savep = next_savep;
 	}
@@ -343,8 +359,8 @@ trx_savepoint_for_mysql(
 }
 
 /***********************************************************************
-Releases a named savepoint. Savepoints which
-were set after this savepoint are deleted. */
+Releases only the named savepoint. Savepoints which were set after this
+savepoint are left as is. */
 
 ulint
 trx_release_savepoint_for_mysql(
@@ -360,31 +376,16 @@ trx_release_savepoint_for_mysql(
 
 	savep = UT_LIST_GET_FIRST(trx->trx_savepoints);
 
+	/* Search for the savepoint by name and free if found. */
 	while (savep != NULL) {
 		if (0 == ut_strcmp(savep->name, savepoint_name)) {
-			/* Found */
-			break;
+			trx_roll_savepoint_free(trx, savep);
+			return(DB_SUCCESS);
 		}
 		savep = UT_LIST_GET_NEXT(trx_savepoints, savep);
 	}
 
-	if (savep == NULL) {
-
-		return(DB_NO_SAVEPOINT);
-	}
-
-	/* We can now free all savepoints strictly later than this one */
-
-	trx_roll_savepoints_free(trx, savep);
-
-	/* Now we can free this savepoint too */
-
-	UT_LIST_REMOVE(trx_savepoints, trx->trx_savepoints, savep);
-
-	mem_free(savep->name);
-	mem_free(savep);
-
-	return(DB_SUCCESS);
+	return(DB_NO_SAVEPOINT);
 }
 
 /***********************************************************************

=== modified file 'storage/innobase/trx/trx0trx.c'
--- a/storage/innobase/trx/trx0trx.c	2009-01-12 22:31:05 +0000
+++ b/storage/innobase/trx/trx0trx.c	2009-03-03 01:06:44 +0000
@@ -930,8 +930,8 @@ trx_commit_off_kernel(
 		mutex_enter(&kernel_mutex);
 	}
 
-	/* Free savepoints */
-	trx_roll_savepoints_free(trx, NULL);
+	/* Free all savepoints */
+	trx_roll_free_all_savepoints(trx);
 
 	trx->conc_state = TRX_NOT_STARTED;
 	trx->rseg = NULL;

Attachment: [text/bzr-bundle] bzr/azundris@mysql.com-20090306151134-5wx8jeuugh6l3mxu.bundle
Thread
bzr commit into mysql-5.1-bugteam branch (azundris:2827) Tatiana A. Nurnberg6 Mar