diff --git a/client/mysqldump.c b/client/mysqldump.c
index e9e3124b9cb..22d3f376e3e 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -3316,7 +3316,7 @@ static void dump_table(char *table, char *db)
           {
             if (length)
             {
-              if (!IS_NUM_FIELD(field))
+              if (!(field->flags & NUM_FLAG))
               {
                 /*
                   "length * 2 + 2" is OK for both HEX and non-HEX modes:
@@ -3384,7 +3384,7 @@ static void dump_table(char *table, char *db)
           }
           if (row[i])
           {
-            if (!IS_NUM_FIELD(field))
+            if (!(field->flags & NUM_FLAG))
             {
               if (opt_xml)
               {
diff --git a/include/mysql.h b/include/mysql.h
index d114afb6c93..70faf3cb2c1 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -86,9 +86,11 @@ extern char *mysql_unix_port;
 #define IS_PRI_KEY(n)	((n) & PRI_KEY_FLAG)
 #define IS_NOT_NULL(n)	((n) & NOT_NULL_FLAG)
 #define IS_BLOB(n)	((n) & BLOB_FLAG)
-#define IS_NUM(t)	((t) <= MYSQL_TYPE_INT24 || (t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
-#define IS_NUM_FIELD(f)	 ((f)->flags & NUM_FLAG)
-#define INTERNAL_NUM_FIELD(f) (((f)->type <= MYSQL_TYPE_INT24 && ((f)->type != MYSQL_TYPE_TIMESTAMP || (f)->length == 14 || (f)->length == 8)) || (f)->type == MYSQL_TYPE_YEAR)
+/**
+   Returns true if the value is a number which does not need quotes for
+   the sql_lex.cc parser to parse correctly.
+*/
+#define IS_NUM(t)	(((t) <= MYSQL_TYPE_INT24 && (t) != MYSQL_TYPE_TIMESTAMP) || (t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
 #define IS_LONGDATA(t) ((t) >= MYSQL_TYPE_TINY_BLOB && (t) <= MYSQL_TYPE_STRING)
 
 
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
index 64822f8fad6..4b3822dd250 100644
--- a/libmysqld/lib_sql.cc
+++ b/libmysqld/lib_sql.cc
@@ -952,7 +952,7 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
     client_field->catalog= dup_str_aux(field_alloc, "def", 3, cs, thd_cs);
     client_field->catalog_length= 3;
 
-    if (INTERNAL_NUM_FIELD(client_field))
+    if (IS_NUM(client_field->type))
       client_field->flags|= NUM_FLAG;
 
     if (flags & (int) Protocol::SEND_DEFAULTS)
diff --git a/mysql-test/r/bigint.result b/mysql-test/r/bigint.result
index 7c23f1267c2..6b0954655e9 100644
--- a/mysql-test/r/bigint.result
+++ b/mysql-test/r/bigint.result
@@ -385,7 +385,7 @@ def					-((9223372036854775808))	8	20	20	N	32897	0	63
 -9223372036854775808
 select -(-(9223372036854775808));
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					-(-(9223372036854775808))	246	21	19	N	129	0	63
+def					-(-(9223372036854775808))	246	21	19	N	32897	0	63
 -(-(9223372036854775808))
 9223372036854775808
 select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
diff --git a/mysql-test/r/metadata.result b/mysql-test/r/metadata.result
index 6b498e55d85..58dd97ee9f3 100644
--- a/mysql-test/r/metadata.result
+++ b/mysql-test/r/metadata.result
@@ -2,7 +2,7 @@ drop table if exists t1,t2;
 select 1, 1.0, -1, "hello", NULL;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
 def					1	8	1	1	N	32897	0	63
-def					1.0	246	4	3	N	129	1	63
+def					1.0	246	4	3	N	32897	1	63
 def					-1	8	2	2	N	32897	0	63
 def					hello	253	5	5	N	1	31	8
 def					NULL	6	0	0	Y	32896	0	63
@@ -18,7 +18,7 @@ def	test	t1	t1	d	d	3	11	0	Y	32768	0	63
 def	test	t1	t1	e	e	8	20	0	Y	32768	0	63
 def	test	t1	t1	f	f	4	3	0	Y	32768	2	63
 def	test	t1	t1	g	g	5	4	0	Y	32768	3	63
-def	test	t1	t1	h	h	246	7	0	Y	0	4	63
+def	test	t1	t1	h	h	246	7	0	Y	32768	4	63
 def	test	t1	t1	i	i	13	4	0	Y	32864	0	63
 def	test	t1	t1	j	j	10	10	0	Y	128	0	63
 def	test	t1	t1	k	k	7	19	0	N	9441	0	63
@@ -199,3 +199,95 @@ def				IFNULL(d, d)	IFNULL(d, d)	10	10	10	Y	128	0	63
 def				LEAST(d, d)	LEAST(d, d)	10	10	10	Y	128	0	63
 DROP TABLE t1;
 End of 5.0 tests
+create table t1(
+# numeric types
+bool_col bool,
+boolean_col boolean,
+bit_col bit(5),
+tiny tinyint,
+tiny_uns tinyint unsigned,
+small smallint,
+small_uns smallint unsigned,
+medium mediumint,
+medium_uns mediumint unsigned,
+int_col int,
+int_col_uns int unsigned,
+big bigint,
+big_uns bigint unsigned,
+decimal_col decimal(10,5),
+# synonyms of DECIMAL
+numeric_col numeric(10),
+fixed_col fixed(10),
+dec_col dec(10),
+decimal_col_uns decimal(10,5) unsigned,
+fcol float,
+fcol_uns float unsigned,
+dcol double,
+double_precision_col double precision,
+dcol_uns double unsigned,
+# date/time types
+date_col date,
+time_col time,
+timestamp_col timestamp,
+year_col year,
+datetime_col datetime,
+# string types
+char_col char(5),
+varchar_col varchar(10),
+binary_col binary(10),
+varbinary_col varbinary(10),
+tinyblob_col tinyblob,
+blob_col blob,
+mediumblob_col mediumblob,
+longblob_col longblob,
+text_col text,
+mediumtext_col mediumtext,
+longtext_col longtext,
+enum_col enum("A","B","C"),
+set_col set("F","E","D")
+);
+select * from t1;
+Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
+def	test	t1	t1	bool_col	bool_col	1	1	0	Y	32768	0	63
+def	test	t1	t1	boolean_col	boolean_col	1	1	0	Y	32768	0	63
+def	test	t1	t1	bit_col	bit_col	16	5	0	Y	32	0	63
+def	test	t1	t1	tiny	tiny	1	4	0	Y	32768	0	63
+def	test	t1	t1	tiny_uns	tiny_uns	1	3	0	Y	32800	0	63
+def	test	t1	t1	small	small	2	6	0	Y	32768	0	63
+def	test	t1	t1	small_uns	small_uns	2	5	0	Y	32800	0	63
+def	test	t1	t1	medium	medium	9	9	0	Y	32768	0	63
+def	test	t1	t1	medium_uns	medium_uns	9	8	0	Y	32800	0	63
+def	test	t1	t1	int_col	int_col	3	11	0	Y	32768	0	63
+def	test	t1	t1	int_col_uns	int_col_uns	3	10	0	Y	32800	0	63
+def	test	t1	t1	big	big	8	20	0	Y	32768	0	63
+def	test	t1	t1	big_uns	big_uns	8	20	0	Y	32800	0	63
+def	test	t1	t1	decimal_col	decimal_col	246	12	0	Y	32768	5	63
+def	test	t1	t1	numeric_col	numeric_col	246	11	0	Y	32768	0	63
+def	test	t1	t1	fixed_col	fixed_col	246	11	0	Y	32768	0	63
+def	test	t1	t1	dec_col	dec_col	246	11	0	Y	32768	0	63
+def	test	t1	t1	decimal_col_uns	decimal_col_uns	246	11	0	Y	32800	5	63
+def	test	t1	t1	fcol	fcol	4	12	0	Y	32768	31	63
+def	test	t1	t1	fcol_uns	fcol_uns	4	12	0	Y	32800	31	63
+def	test	t1	t1	dcol	dcol	5	22	0	Y	32768	31	63
+def	test	t1	t1	double_precision_col	double_precision_col	5	22	0	Y	32768	31	63
+def	test	t1	t1	dcol_uns	dcol_uns	5	22	0	Y	32800	31	63
+def	test	t1	t1	date_col	date_col	10	10	0	Y	128	0	63
+def	test	t1	t1	time_col	time_col	11	8	0	Y	128	0	63
+def	test	t1	t1	timestamp_col	timestamp_col	7	19	0	N	9441	0	63
+def	test	t1	t1	year_col	year_col	13	4	0	Y	32864	0	63
+def	test	t1	t1	datetime_col	datetime_col	12	19	0	Y	128	0	63
+def	test	t1	t1	char_col	char_col	254	5	0	Y	0	0	8
+def	test	t1	t1	varchar_col	varchar_col	253	10	0	Y	0	0	8
+def	test	t1	t1	binary_col	binary_col	254	10	0	Y	128	0	63
+def	test	t1	t1	varbinary_col	varbinary_col	253	10	0	Y	128	0	63
+def	test	t1	t1	tinyblob_col	tinyblob_col	252	255	0	Y	144	0	63
+def	test	t1	t1	blob_col	blob_col	252	65535	0	Y	144	0	63
+def	test	t1	t1	mediumblob_col	mediumblob_col	252	16777215	0	Y	144	0	63
+def	test	t1	t1	longblob_col	longblob_col	252	4294967295	0	Y	144	0	63
+def	test	t1	t1	text_col	text_col	252	65535	0	Y	16	0	8
+def	test	t1	t1	mediumtext_col	mediumtext_col	252	16777215	0	Y	16	0	8
+def	test	t1	t1	longtext_col	longtext_col	252	4294967295	0	Y	16	0	8
+def	test	t1	t1	enum_col	enum_col	254	1	0	Y	256	0	8
+def	test	t1	t1	set_col	set_col	254	5	0	Y	2048	0	8
+bool_col	boolean_col	bit_col	tiny	tiny_uns	small	small_uns	medium	medium_uns	int_col	int_col_uns	big	big_uns	decimal_col	numeric_col	fixed_col	dec_col	decimal_col_uns	fcol	fcol_uns	dcol	double_precision_col	dcol_uns	date_col	time_col	timestamp_col	year_col	datetime_col	char_col	varchar_col	binary_col	varbinary_col	tinyblob_col	blob_col	mediumblob_col	longblob_col	text_col	mediumtext_col	longtext_col	enum_col	set_col
+drop table t1;
diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result
index 8162e1aca05..e4889b86987 100644
--- a/mysql-test/r/mysqldump.result
+++ b/mysql-test/r/mysqldump.result
@@ -40,7 +40,7 @@ CREATE TABLE `t1` (
   `a` decimal(64,20) DEFAULT NULL
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 /*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `t1` VALUES ('1234567890123456789012345678901234567890.00000000000000000000'),('987654321098765432109876543210987654321.00000000000000000000');
+INSERT INTO `t1` VALUES (1234567890123456789012345678901234567890.00000000000000000000),(987654321098765432109876543210987654321.00000000000000000000);
 DROP TABLE t1;
 #
 # Bug#2055 mysqldump should replace "-inf" numeric field values with "NULL"
@@ -77,7 +77,7 @@ CREATE TABLE `t1` (
   `b` float DEFAULT NULL
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 /*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `t1` VALUES ('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456);
+INSERT INTO `t1` VALUES (1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456);
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
 /*!40101 SET character_set_client = utf8 */;
 CREATE TABLE `t1` (
@@ -85,7 +85,7 @@ CREATE TABLE `t1` (
   `b` float DEFAULT NULL
 );
 /*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `t1` VALUES ('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456);
+INSERT INTO `t1` VALUES (1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456);
 
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -108,7 +108,7 @@ CREATE TABLE `t1` (
 
 LOCK TABLES `t1` WRITE;
 /*!40000 ALTER TABLE `t1` DISABLE KEYS */;
-INSERT INTO `t1` VALUES ('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456);
+INSERT INTO `t1` VALUES (1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456);
 /*!40000 ALTER TABLE `t1` ENABLE KEYS */;
 UNLOCK TABLES;
 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
@@ -135,7 +135,7 @@ CREATE TABLE `t1` (
 );
 /*!40101 SET character_set_client = @saved_cs_client */;
 
-INSERT INTO `t1` VALUES ('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456),('1.23450',2.3456);
+INSERT INTO `t1` VALUES (1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456);
 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 
 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
diff --git a/mysql-test/r/ps_2myisam.result b/mysql-test/r/ps_2myisam.result
index a91d13d11a1..c51863b73f7 100644
--- a/mysql-test/r/ps_2myisam.result
+++ b/mysql-test/r/ps_2myisam.result
@@ -59,8 +59,8 @@ def	test	t9	t9	c7	c7	4	12	1	Y	32768	31	63
 def	test	t9	t9	c8	c8	5	22	1	Y	32768	31	63
 def	test	t9	t9	c9	c9	5	22	1	Y	32768	31	63
 def	test	t9	t9	c10	c10	5	22	1	Y	32768	31	63
-def	test	t9	t9	c11	c11	246	9	6	Y	0	4	63
-def	test	t9	t9	c12	c12	246	10	6	Y	0	4	63
+def	test	t9	t9	c11	c11	246	9	6	Y	32768	4	63
+def	test	t9	t9	c12	c12	246	10	6	Y	32768	4	63
 def	test	t9	t9	c13	c13	10	10	10	Y	128	0	63
 def	test	t9	t9	c14	c14	12	19	19	Y	128	0	63
 def	test	t9	t9	c15	c15	7	19	19	N	9441	0	63
@@ -1807,8 +1807,8 @@ select * from t5 ;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
 def	test	t5	t5	const01	const01	3	1	1	N	32769	0	63
 def	test	t5	t5	param01	param01	8	20	1	Y	32768	0	63
-def	test	t5	t5	const02	const02	246	4	3	N	1	1	63
-def	test	t5	t5	param02	param02	246	67	32	Y	0	30	63
+def	test	t5	t5	const02	const02	246	4	3	N	32769	1	63
+def	test	t5	t5	param02	param02	246	67	32	Y	32768	30	63
 def	test	t5	t5	const03	const03	5	17	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	23	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	253	3	3	N	1	0	8
@@ -1829,7 +1829,7 @@ def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
 def	test	t5	t5	param11	param11	8	20	4	Y	32768	0	63
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
-def	test	t5	t5	param13	param13	246	67	0	Y	0	30	63
+def	test	t5	t5	param13	param13	246	67	0	Y	32768	30	63
 def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
 def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
@@ -1927,8 +1927,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -1974,8 +1974,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2024,8 +2024,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2064,8 +2064,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2112,8 +2112,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2156,8 +2156,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2202,8 +2202,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2240,8 +2240,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
diff --git a/mysql-test/r/ps_3innodb.result b/mysql-test/r/ps_3innodb.result
index 50c94d6cc4e..2670451f24e 100644
--- a/mysql-test/r/ps_3innodb.result
+++ b/mysql-test/r/ps_3innodb.result
@@ -59,8 +59,8 @@ def	test	t9	t9	c7	c7	4	12	1	Y	32768	31	63
 def	test	t9	t9	c8	c8	5	22	1	Y	32768	31	63
 def	test	t9	t9	c9	c9	5	22	1	Y	32768	31	63
 def	test	t9	t9	c10	c10	5	22	1	Y	32768	31	63
-def	test	t9	t9	c11	c11	246	9	6	Y	0	4	63
-def	test	t9	t9	c12	c12	246	10	6	Y	0	4	63
+def	test	t9	t9	c11	c11	246	9	6	Y	32768	4	63
+def	test	t9	t9	c12	c12	246	10	6	Y	32768	4	63
 def	test	t9	t9	c13	c13	10	10	10	Y	128	0	63
 def	test	t9	t9	c14	c14	12	19	19	Y	128	0	63
 def	test	t9	t9	c15	c15	7	19	19	N	9441	0	63
@@ -1790,8 +1790,8 @@ select * from t5 ;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
 def	test	t5	t5	const01	const01	3	1	1	N	32769	0	63
 def	test	t5	t5	param01	param01	8	20	1	Y	32768	0	63
-def	test	t5	t5	const02	const02	246	4	3	N	1	1	63
-def	test	t5	t5	param02	param02	246	67	32	Y	0	30	63
+def	test	t5	t5	const02	const02	246	4	3	N	32769	1	63
+def	test	t5	t5	param02	param02	246	67	32	Y	32768	30	63
 def	test	t5	t5	const03	const03	5	17	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	23	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	253	3	3	N	1	0	8
@@ -1812,7 +1812,7 @@ def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
 def	test	t5	t5	param11	param11	8	20	4	Y	32768	0	63
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
-def	test	t5	t5	param13	param13	246	67	0	Y	0	30	63
+def	test	t5	t5	param13	param13	246	67	0	Y	32768	30	63
 def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
 def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
@@ -1910,8 +1910,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -1957,8 +1957,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2007,8 +2007,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2047,8 +2047,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2095,8 +2095,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2139,8 +2139,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2185,8 +2185,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2223,8 +2223,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
diff --git a/mysql-test/r/ps_4heap.result b/mysql-test/r/ps_4heap.result
index a85809d3800..4372c470b2d 100644
--- a/mysql-test/r/ps_4heap.result
+++ b/mysql-test/r/ps_4heap.result
@@ -60,8 +60,8 @@ def	test	t9	t9	c7	c7	4	12	1	Y	32768	31	63
 def	test	t9	t9	c8	c8	5	22	1	Y	32768	31	63
 def	test	t9	t9	c9	c9	5	22	1	Y	32768	31	63
 def	test	t9	t9	c10	c10	5	22	1	Y	32768	31	63
-def	test	t9	t9	c11	c11	246	9	6	Y	0	4	63
-def	test	t9	t9	c12	c12	246	10	6	Y	0	4	63
+def	test	t9	t9	c11	c11	246	9	6	Y	32768	4	63
+def	test	t9	t9	c12	c12	246	10	6	Y	32768	4	63
 def	test	t9	t9	c13	c13	10	10	10	Y	128	0	63
 def	test	t9	t9	c14	c14	12	19	19	Y	128	0	63
 def	test	t9	t9	c15	c15	7	19	19	N	9441	0	63
@@ -1791,8 +1791,8 @@ select * from t5 ;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
 def	test	t5	t5	const01	const01	3	1	1	N	32769	0	63
 def	test	t5	t5	param01	param01	8	20	1	Y	32768	0	63
-def	test	t5	t5	const02	const02	246	4	3	N	1	1	63
-def	test	t5	t5	param02	param02	246	67	32	Y	0	30	63
+def	test	t5	t5	const02	const02	246	4	3	N	32769	1	63
+def	test	t5	t5	param02	param02	246	67	32	Y	32768	30	63
 def	test	t5	t5	const03	const03	5	17	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	23	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	253	3	3	N	1	0	8
@@ -1813,7 +1813,7 @@ def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
 def	test	t5	t5	param11	param11	8	20	4	Y	32768	0	63
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
-def	test	t5	t5	param13	param13	246	67	0	Y	0	30	63
+def	test	t5	t5	param13	param13	246	67	0	Y	32768	30	63
 def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
 def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
@@ -1911,8 +1911,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -1958,8 +1958,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2008,8 +2008,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2048,8 +2048,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2096,8 +2096,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2140,8 +2140,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2186,8 +2186,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2224,8 +2224,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
diff --git a/mysql-test/r/ps_5merge.result b/mysql-test/r/ps_5merge.result
index fd1b69c0ffd..35a43f7c032 100644
--- a/mysql-test/r/ps_5merge.result
+++ b/mysql-test/r/ps_5merge.result
@@ -102,8 +102,8 @@ def	test	t9	t9	c7	c7	4	12	1	Y	32768	31	63
 def	test	t9	t9	c8	c8	5	22	1	Y	32768	31	63
 def	test	t9	t9	c9	c9	5	22	1	Y	32768	31	63
 def	test	t9	t9	c10	c10	5	22	1	Y	32768	31	63
-def	test	t9	t9	c11	c11	246	9	6	Y	0	4	63
-def	test	t9	t9	c12	c12	246	10	6	Y	0	4	63
+def	test	t9	t9	c11	c11	246	9	6	Y	32768	4	63
+def	test	t9	t9	c12	c12	246	10	6	Y	32768	4	63
 def	test	t9	t9	c13	c13	10	10	10	Y	128	0	63
 def	test	t9	t9	c14	c14	12	19	19	Y	128	0	63
 def	test	t9	t9	c15	c15	7	19	19	N	9441	0	63
@@ -1727,8 +1727,8 @@ select * from t5 ;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
 def	test	t5	t5	const01	const01	3	1	1	N	32769	0	63
 def	test	t5	t5	param01	param01	8	20	1	Y	32768	0	63
-def	test	t5	t5	const02	const02	246	4	3	N	1	1	63
-def	test	t5	t5	param02	param02	246	67	32	Y	0	30	63
+def	test	t5	t5	const02	const02	246	4	3	N	32769	1	63
+def	test	t5	t5	param02	param02	246	67	32	Y	32768	30	63
 def	test	t5	t5	const03	const03	5	17	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	23	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	253	3	3	N	1	0	8
@@ -1749,7 +1749,7 @@ def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
 def	test	t5	t5	param11	param11	8	20	4	Y	32768	0	63
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
-def	test	t5	t5	param13	param13	246	67	0	Y	0	30	63
+def	test	t5	t5	param13	param13	246	67	0	Y	32768	30	63
 def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
 def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
@@ -1847,8 +1847,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -1894,8 +1894,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -1944,8 +1944,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -1984,8 +1984,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2032,8 +2032,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2076,8 +2076,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2122,8 +2122,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2160,8 +2160,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -3124,8 +3124,8 @@ def	test	t9	t9	c7	c7	4	12	1	Y	32768	31	63
 def	test	t9	t9	c8	c8	5	22	1	Y	32768	31	63
 def	test	t9	t9	c9	c9	5	22	1	Y	32768	31	63
 def	test	t9	t9	c10	c10	5	22	1	Y	32768	31	63
-def	test	t9	t9	c11	c11	246	9	6	Y	0	4	63
-def	test	t9	t9	c12	c12	246	10	6	Y	0	4	63
+def	test	t9	t9	c11	c11	246	9	6	Y	32768	4	63
+def	test	t9	t9	c12	c12	246	10	6	Y	32768	4	63
 def	test	t9	t9	c13	c13	10	10	10	Y	128	0	63
 def	test	t9	t9	c14	c14	12	19	19	Y	128	0	63
 def	test	t9	t9	c15	c15	7	19	19	N	9441	0	63
@@ -4749,8 +4749,8 @@ select * from t5 ;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
 def	test	t5	t5	const01	const01	3	1	1	N	32769	0	63
 def	test	t5	t5	param01	param01	8	20	1	Y	32768	0	63
-def	test	t5	t5	const02	const02	246	4	3	N	1	1	63
-def	test	t5	t5	param02	param02	246	67	32	Y	0	30	63
+def	test	t5	t5	const02	const02	246	4	3	N	32769	1	63
+def	test	t5	t5	param02	param02	246	67	32	Y	32768	30	63
 def	test	t5	t5	const03	const03	5	17	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	23	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	253	3	3	N	1	0	8
@@ -4771,7 +4771,7 @@ def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
 def	test	t5	t5	param11	param11	8	20	4	Y	32768	0	63
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
-def	test	t5	t5	param13	param13	246	67	0	Y	0	30	63
+def	test	t5	t5	param13	param13	246	67	0	Y	32768	30	63
 def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
 def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
@@ -4869,8 +4869,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -4916,8 +4916,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -4966,8 +4966,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -5006,8 +5006,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -5054,8 +5054,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -5098,8 +5098,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -5144,8 +5144,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -5182,8 +5182,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
diff --git a/mysql-test/suite/ndb/r/ps_7ndb.result b/mysql-test/suite/ndb/r/ps_7ndb.result
index 73a2e0c1dda..e57fdcb6df6 100644
--- a/mysql-test/suite/ndb/r/ps_7ndb.result
+++ b/mysql-test/suite/ndb/r/ps_7ndb.result
@@ -59,8 +59,8 @@ def	test	t9	t9	c7	c7	4	12	1	Y	32768	31	63
 def	test	t9	t9	c8	c8	5	22	1	Y	32768	31	63
 def	test	t9	t9	c9	c9	5	22	1	Y	32768	31	63
 def	test	t9	t9	c10	c10	5	22	1	Y	32768	31	63
-def	test	t9	t9	c11	c11	246	9	6	Y	0	4	63
-def	test	t9	t9	c12	c12	246	10	6	Y	0	4	63
+def	test	t9	t9	c11	c11	246	9	6	Y	32768	4	63
+def	test	t9	t9	c12	c12	246	10	6	Y	32768	4	63
 def	test	t9	t9	c13	c13	10	10	10	Y	128	0	63
 def	test	t9	t9	c14	c14	12	19	19	Y	128	0	63
 def	test	t9	t9	c15	c15	7	19	19	N	9441	0	63
@@ -1790,8 +1790,8 @@ select * from t5 ;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
 def	test	t5	t5	const01	const01	3	1	1	N	32769	0	63
 def	test	t5	t5	param01	param01	8	20	1	Y	32768	0	63
-def	test	t5	t5	const02	const02	246	4	3	N	1	1	63
-def	test	t5	t5	param02	param02	246	67	32	Y	0	30	63
+def	test	t5	t5	const02	const02	246	4	3	N	32769	1	63
+def	test	t5	t5	param02	param02	246	67	32	Y	32768	30	63
 def	test	t5	t5	const03	const03	5	17	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	23	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	253	3	3	N	1	0	8
@@ -1812,7 +1812,7 @@ def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
 def	test	t5	t5	param11	param11	8	20	4	Y	32768	0	63
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
-def	test	t5	t5	param13	param13	246	67	0	Y	0	30	63
+def	test	t5	t5	param13	param13	246	67	0	Y	32768	30	63
 def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
 def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
@@ -1910,8 +1910,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -1957,8 +1957,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2007,8 +2007,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2047,8 +2047,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2095,8 +2095,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2139,8 +2139,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2185,8 +2185,8 @@ def					@arg07	5	23	1	Y	32896	31	63
 def					@arg08	5	23	1	Y	32896	31	63
 def					@arg09	5	23	1	Y	32896	31	63
 def					@arg10	5	23	1	Y	32896	31	63
-def					@arg11	246	83	6	Y	128	30	63
-def					@arg12	246	83	6	Y	128	30	63
+def					@arg11	246	83	6	Y	32896	30	63
+def					@arg12	246	83	6	Y	32896	30	63
 def					@arg13	251	16777216	10	Y	128	31	63
 def					@arg14	251	16777216	19	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
@@ -2223,8 +2223,8 @@ def					@arg07	5	23	0	Y	32896	31	63
 def					@arg08	5	23	0	Y	32896	31	63
 def					@arg09	5	23	0	Y	32896	31	63
 def					@arg10	5	23	0	Y	32896	31	63
-def					@arg11	246	83	0	Y	128	30	63
-def					@arg12	246	83	0	Y	128	30	63
+def					@arg11	246	83	0	Y	32896	30	63
+def					@arg12	246	83	0	Y	32896	30	63
 def					@arg13	251	16777216	0	Y	128	31	63
 def					@arg14	251	16777216	0	Y	128	31	63
 def					@arg15	251	16777216	19	Y	128	31	63
diff --git a/mysql-test/t/metadata.test b/mysql-test/t/metadata.test
index a10767579fb..a42dcfd618d 100644
--- a/mysql-test/t/metadata.test
+++ b/mysql-test/t/metadata.test
@@ -130,3 +130,60 @@ SELECT COALESCE(d, d), IFNULL(d, d), IF(i, d, d),
 DROP TABLE t1;
 
 --echo End of 5.0 tests
+
+# Verify that column metadata is correct for all possible data types.
+# Originally about BUG#42980 "Client doesn't set NUM_FLAG for DECIMAL"
+
+create table t1(
+# numeric types
+bool_col bool,
+boolean_col boolean,
+bit_col bit(5),
+tiny tinyint,
+tiny_uns tinyint unsigned,
+small smallint,
+small_uns smallint unsigned,
+medium mediumint,
+medium_uns mediumint unsigned,
+int_col int,
+int_col_uns int unsigned,
+big bigint,
+big_uns bigint unsigned,
+decimal_col decimal(10,5),
+# synonyms of DECIMAL
+numeric_col numeric(10),
+fixed_col fixed(10),
+dec_col dec(10),
+decimal_col_uns decimal(10,5) unsigned,
+fcol float,
+fcol_uns float unsigned,
+dcol double,
+double_precision_col double precision,
+dcol_uns double unsigned,
+# date/time types
+date_col date,
+time_col time,
+timestamp_col timestamp,
+year_col year,
+datetime_col datetime,
+# string types
+char_col char(5),
+varchar_col varchar(10),
+binary_col binary(10),
+varbinary_col varbinary(10),
+tinyblob_col tinyblob,
+blob_col blob,
+mediumblob_col mediumblob,
+longblob_col longblob,
+text_col text,
+mediumtext_col mediumtext,
+longtext_col longtext,
+enum_col enum("A","B","C"),
+set_col set("F","E","D")
+);
+
+--enable_metadata
+select * from t1;
+--disable_metadata
+
+drop table t1;
diff --git a/sql-common/client.c b/sql-common/client.c
index 1c0262f3414..3ee6c600387 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -1350,7 +1350,7 @@ unpack_fields(MYSQL_DATA *data,MEM_ROOT *alloc,uint fields,
       field->flags=	uint2korr(pos+7);
       field->decimals=  (uint) pos[9];
 
-      if (INTERNAL_NUM_FIELD(field))
+      if (IS_NUM(field->type))
         field->flags|= NUM_FLAG;
       if (default_value && row->data[7])
       {
@@ -1391,7 +1391,7 @@ unpack_fields(MYSQL_DATA *data,MEM_ROOT *alloc,uint fields,
         field->flags=   (uint) (uchar) row->data[4][0];
         field->decimals=(uint) (uchar) row->data[4][1];
       }
-      if (INTERNAL_NUM_FIELD(field))
+      if (IS_NUM(field->type))
         field->flags|= NUM_FLAG;
       if (default_value && row->data[5])
       {