MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Sergey Glukhov Date:January 15 2010 11:45am
Subject:bzr push into mysql-5.5-next-mr branch (Sergey.Glukhov:2959 to 2960)
WL#2003 WL#2822
View as plain text  
 2960 Sergey Glukhov	2010-01-15
      backported:
      -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
      -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
      -addon for 'I_S optimization' WL
     @ mysql-test/include/ddl_i18n.check_sp.inc
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/ddl_i18n_koi8r.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/ddl_i18n_utf8.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/information_schema.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/information_schema_db.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/information_schema_parameters.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/information_schema_routines.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/mysqlcheck.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/mysqlshow.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/show_check.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/sp-ucs2.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/sp.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/trigger-compat.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/r/trigger_notembedded.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/datadict/is_routines.inc
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/r/innodb_storedproc_08.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/r/is_columns_is.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/r/is_routines.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/r/is_tables_is.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/r/memory_storedproc_08.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/r/myisam_storedproc_08.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/r/ndb_storedproc_08.result
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/t/information_schema_parameters.test
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ mysql-test/t/information_schema_routines.test
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/handler.h
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/mysql_priv.h
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/sp.cc
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/sp.h
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/sp_head.h
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/sql_base.cc
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/sql_parse.cc
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/sql_show.cc
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/sql_trigger.cc
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/sql_view.cc
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL
     @ sql/unireg.h
        backported:
        -WL#2822 INFORMATION_SCHEMA.ROUTINES: Add missing columns
        -WL#2003 INFORMATION_SCHEMA: PARAMETERS view
        -addon for 'I_S optimization' WL

    added:
      mysql-test/r/information_schema_parameters.result
      mysql-test/r/information_schema_routines.result
      mysql-test/t/information_schema_parameters.test
      mysql-test/t/information_schema_routines.test
    modified:
      mysql-test/include/ddl_i18n.check_sp.inc
      mysql-test/r/ddl_i18n_koi8r.result
      mysql-test/r/ddl_i18n_utf8.result
      mysql-test/r/information_schema.result
      mysql-test/r/information_schema_db.result
      mysql-test/r/mysqlcheck.result
      mysql-test/r/mysqlshow.result
      mysql-test/r/show_check.result
      mysql-test/r/sp-ucs2.result
      mysql-test/r/sp.result
      mysql-test/r/trigger-compat.result
      mysql-test/r/trigger_notembedded.result
      mysql-test/suite/funcs_1/datadict/is_routines.inc
      mysql-test/suite/funcs_1/r/innodb_storedproc_08.result
      mysql-test/suite/funcs_1/r/is_columns_is.result
      mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
      mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
      mysql-test/suite/funcs_1/r/is_routines.result
      mysql-test/suite/funcs_1/r/is_tables_is.result
      mysql-test/suite/funcs_1/r/memory_storedproc_08.result
      mysql-test/suite/funcs_1/r/myisam_storedproc_08.result
      mysql-test/suite/funcs_1/r/ndb_storedproc_08.result
      mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc
      sql/handler.h
      sql/mysql_priv.h
      sql/sp.cc
      sql/sp.h
      sql/sp_head.h
      sql/sql_base.cc
      sql/sql_parse.cc
      sql/sql_show.cc
      sql/sql_trigger.cc
      sql/sql_view.cc
      sql/unireg.h
 2959 Alexander Nozdrin	2010-01-12
      Enable WL#4435.

    modified:
      libmysql/client_settings.h
      tests/mysql_client_test.c
=== modified file 'mysql-test/include/ddl_i18n.check_sp.inc'
--- a/mysql-test/include/ddl_i18n.check_sp.inc	2007-06-28 17:34:54 +0000
+++ b/mysql-test/include/ddl_i18n.check_sp.inc	2010-01-15 11:42:15 +0000
@@ -36,19 +36,19 @@ SHOW PROCEDURE STATUS LIKE 'p4'|
 --echo
 --echo
 
---replace_column 16 CREATED 17 ALTERED
+--replace_column 23 CREATED 24 ALTERED
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
 
 --echo
---replace_column 16 CREATED 17 ALTERED
+--replace_column 23 CREATED 24 ALTERED
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
 
 --echo
---replace_column 16 CREATED 17 ALTERED
+--replace_column 23 CREATED 24 ALTERED
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
 
 --echo
---replace_column 16 CREATED 17 ALTERED
+--replace_column 23 CREATED 24 ALTERED
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
 
 #   - Initialize the used variables (actual values don't matter);

=== modified file 'mysql-test/r/ddl_i18n_koi8r.result'
--- a/mysql-test/r/ddl_i18n_koi8r.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/r/ddl_i18n_koi8r.result	2010-01-15 11:42:15 +0000
@@ -361,8 +361,8 @@ mysqltest2	p4	PROCEDURE	root@localhost	M
 
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p1	def	mysqltest1	p1	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p1	def	mysqltest1	p1	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ) AS c1,
@@ -379,8 +379,8 @@ SET ��� = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	koi8r	koi8r_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p2	def	mysqltest1	p2	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p2	def	mysqltest1	p2	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -397,8 +397,8 @@ SET ��L	DEFINER	CREATED	ALTERED			root@localhost	koi8r	koi8r_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p3	def	mysqltest2	p3	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p3	def	mysqltest2	p3	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10);
 SELECT
 COLLATION(���) AS c1,
@@ -415,8 +415,8 @@ SET ��� = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	koi8r	koi8r_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p4	def	mysqltest2	p4	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p4	def	mysqltest2	p4	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -607,8 +607,8 @@ mysqltest2	p4	PROCEDURE	root@localhost	M
 
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p1	def	mysqltest1	p1	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p1	def	mysqltest1	p1	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10);
 SELECT
 COLLATION(���) AS c1,
@@ -625,8 +625,8 @@ SET ��� = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	koi8r	koi8r_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p2	def	mysqltest1	p2	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p2	def	mysqltest1	p2	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -643,8 +643,8 @@ SET ��� = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	koi8r	koi8r_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p3	def	mysqltest2	p3	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p3	def	mysqltest2	p3	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10);
 SELECT
 COLLATION(���) AS c1,
@@ -661,8 +661,8 @@ SET ��� = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	koi8r	koi8r_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p4	def	mysqltest2	p4	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p4	def	mysqltest2	p4	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -1009,8 +1009,8 @@ mysqltest2	p4	PROCEDURE	root@localhost	M
 
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p1	def	mysqltest1	p1	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p1	def	mysqltest1	p1	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10);
 SELECT
 COLLATION(���) AS c1,
@@ -1027,8 +1027,8 @@ SET ��� = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	koi8r	koi8r_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p2	def	mysqltest1	p2	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p2	def	mysqltest1	p2	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,
@@ -1045,8 +1045,8 @@ SET ��� = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	koi8r	koi8r_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p3	def	mysqltest2	p3	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p3	def	mysqltest2	p3	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10);
 SELECT
 COLLATION(���) AS c1,
@@ -1063,8 +1063,8 @@ SET ��� = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	koi8r	koi8r_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p4	def	mysqltest2	p4	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p4	def	mysqltest2	p4	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE ��� CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(���) AS c1,

=== modified file 'mysql-test/r/ddl_i18n_utf8.result'
--- a/mysql-test/r/ddl_i18n_utf8.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/r/ddl_i18n_utf8.result	2010-01-15 11:42:15 +0000
@@ -361,8 +361,8 @@ mysqltest2	p4	PROCEDURE	root@localhost	M
 
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p1	def	mysqltest1	p1	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p1	def	mysqltest1	p1	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(перем1) AS c1,
@@ -379,8 +379,8 @@ SET пSQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	utf8	utf8_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p2	def	mysqltest1	p2	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p2	def	mysqltest1	p2	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -397,8 +397,8 @@ SET парам2 = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	utf8	utf8_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p3	def	mysqltest2	p3	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p3	def	mysqltest2	p3	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(перем1) AS c1,
@@ -415,8 +415,8 @@ SET парам2 = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	utf8	utf8_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p4	def	mysqltest2	p4	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p4	def	mysqltest2	p4	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE п COLLATION(перем1) AS c1,
@@ -607,8 +607,8 @@ mysqltest2	p4	PROCEDURE	root@localhost	M
 
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p1	def	mysqltest1	p1	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p1	def	mysqltest1	p1	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(перем1) AS c1,
@@ -625,8 +625,8 @@ SET пSQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	utf8	utf8_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p2	def	mysqltest1	p2	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p2	def	mysqltest1	p2	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -643,8 +643,8 @@ SET парам2 = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	utf8	utf8_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p3	def	mysqltest2	p3	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p3	def	mysqltest2	p3	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(перем1) AS c1,
@@ -661,8 +661,8 @@ SET парам2 = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	utf8	utf8_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p4	def	mysqltest2	p4	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p4	def	mysqltest2	p4	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE п COLLATION(перем1) AS c1,
@@ -1009,8 +1009,8 @@ mysqltest2	p4	PROCEDURE	root@localhost	M
 
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p1	def	mysqltest1	p1	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p1	def	mysqltest1	p1	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(перем1) AS c1,
@@ -1027,8 +1027,8 @@ SET парам2 = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	utf8	utf8_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p2	def	mysqltest1	p2	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p2	def	mysqltest1	p2	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,
@@ -1045,8 +1045,8 @@ SET парам2 = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	utf8	utf8_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p3	def	mysqltest2	p3	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p3	def	mysqltest2	p3	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10);
 SELECT
 COLLATION(перем1) AS c1,
@@ -1063,8 +1063,8 @@ SET парам2 = 'b';
 END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	CREATED	ALTERED			root@localhost	utf8	utf8_general_ci	utf8_unicode_ci
 
 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'|
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-p4	def	mysqltest2	p4	PROCEDURE	NULL	SQL	BEGIN
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+p4	def	mysqltest2	p4	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
 DECLARE перем1 CHAR(10) CHARACTER SET utf8;
 SELECT
 COLLATION(перем1) AS c1,

=== modified file 'mysql-test/r/information_schema.result'
--- a/mysql-test/r/information_schema.result	2009-12-07 12:22:51 +0000
+++ b/mysql-test/r/information_schema.result	2010-01-15 11:42:15 +0000
@@ -53,6 +53,7 @@ FILES
 GLOBAL_STATUS
 GLOBAL_VARIABLES
 KEY_COLUMN_USAGE
+PARAMETERS
 PARTITIONS
 PLUGINS
 PROCESSLIST
@@ -772,11 +773,13 @@ table_schema	table_name	column_name
 information_schema	COLUMNS	COLUMN_DEFAULT
 information_schema	COLUMNS	COLUMN_TYPE
 information_schema	EVENTS	EVENT_DEFINITION
+information_schema	PARAMETERS	DTD_IDENTIFIER
 information_schema	PARTITIONS	PARTITION_EXPRESSION
 information_schema	PARTITIONS	SUBPARTITION_EXPRESSION
 information_schema	PARTITIONS	PARTITION_DESCRIPTION
 information_schema	PLUGINS	PLUGIN_DESCRIPTION
 information_schema	PROCESSLIST	INFO
+information_schema	ROUTINES	DTD_IDENTIFIER
 information_schema	ROUTINES	ROUTINE_DEFINITION
 information_schema	ROUTINES	ROUTINE_COMMENT
 information_schema	TRIGGERS	ACTION_CONDITION
@@ -862,7 +865,7 @@ table_schema IN ('mysql', 'INFORMATION_S
 AND table_name not like 'ndb%' AND table_name not like 'innodb_%'
 GROUP BY TABLE_SCHEMA;
 table_schema	count(*)
-information_schema	29
+information_schema	30
 mysql	22
 create table t1 (i int, j int);
 create trigger trg1 before insert on t1 for each row
@@ -1312,6 +1315,7 @@ FILES	information_schema.FILES	1
 GLOBAL_STATUS	information_schema.GLOBAL_STATUS	1
 GLOBAL_VARIABLES	information_schema.GLOBAL_VARIABLES	1
 KEY_COLUMN_USAGE	information_schema.KEY_COLUMN_USAGE	1
+PARAMETERS	information_schema.PARAMETERS	1
 PARTITIONS	information_schema.PARTITIONS	1
 PLUGINS	information_schema.PLUGINS	1
 PROCESSLIST	information_schema.PROCESSLIST	1
@@ -1707,7 +1711,7 @@ id	select_type	table	type	possible_keys	
 EXPLAIN SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
 WHERE EVENT_OBJECT_SCHEMA='test';
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	TRIGGERS	ALL	NULL	EVENT_OBJECT_SCHEMA	NULL	NULL	NULL	Using where; Open_full_table; Scanned 1 database
+1	SIMPLE	TRIGGERS	ALL	NULL	EVENT_OBJECT_SCHEMA	NULL	NULL	NULL	Using where; Open_frm_only; Scanned 1 database
 SELECT *
 FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
 LEFT JOIN INFORMATION_SCHEMA.COLUMNS 

=== modified file 'mysql-test/r/information_schema_db.result'
--- a/mysql-test/r/information_schema_db.result	2009-12-09 11:03:34 +0000
+++ b/mysql-test/r/information_schema_db.result	2010-01-15 11:42:15 +0000
@@ -16,6 +16,7 @@ FILES
 GLOBAL_STATUS
 GLOBAL_VARIABLES
 KEY_COLUMN_USAGE
+PARAMETERS
 PARTITIONS
 PLUGINS
 PROCESSLIST

=== added file 'mysql-test/r/information_schema_parameters.result'
--- a/mysql-test/r/information_schema_parameters.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/information_schema_parameters.result	2010-01-15 11:42:15 +0000
@@ -0,0 +1,457 @@
+# ========== parameters.1 ==========
+USE INFORMATION_SCHEMA;
+SHOW CREATE TABLE INFORMATION_SCHEMA.PARAMETERS;
+Table	Create Table
+PARAMETERS	CREATE TEMPORARY TABLE `PARAMETERS` (
+  `SPECIFIC_CATALOG` varchar(512) NOT NULL DEFAULT '',
+  `SPECIFIC_SCHEMA` varchar(64) NOT NULL DEFAULT '',
+  `SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
+  `ORDINAL_POSITION` int(21) NOT NULL DEFAULT '0',
+  `PARAMETER_MODE` varchar(5) DEFAULT NULL,
+  `PARAMETER_NAME` varchar(64) DEFAULT NULL,
+  `DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
+  `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL,
+  `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL,
+  `NUMERIC_PRECISION` int(21) DEFAULT NULL,
+  `NUMERIC_SCALE` int(21) DEFAULT NULL,
+  `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
+  `COLLATION_NAME` varchar(64) DEFAULT NULL,
+  `DTD_IDENTIFIER` longtext NOT NULL,
+  `ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT ''
+)  DEFAULT CHARSET=utf8
+SELECT * FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+  AND table_name   = 'parameters'
+ORDER BY ordinal_position;
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	SPECIFIC_CATALOG
+ORDINAL_POSITION	1
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	512
+CHARACTER_OCTET_LENGTH	1536
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(512)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	SPECIFIC_SCHEMA
+ORDINAL_POSITION	2
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	SPECIFIC_NAME
+ORDINAL_POSITION	3
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	ORDINAL_POSITION
+ORDINAL_POSITION	4
+COLUMN_DEFAULT	0
+IS_NULLABLE	NO
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	int(21)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	PARAMETER_MODE
+ORDINAL_POSITION	5
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	5
+CHARACTER_OCTET_LENGTH	15
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(5)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	PARAMETER_NAME
+ORDINAL_POSITION	6
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	DATA_TYPE
+ORDINAL_POSITION	7
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	CHARACTER_MAXIMUM_LENGTH
+ORDINAL_POSITION	8
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	int(21)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	CHARACTER_OCTET_LENGTH
+ORDINAL_POSITION	9
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	int(21)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	NUMERIC_PRECISION
+ORDINAL_POSITION	10
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	int(21)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	NUMERIC_SCALE
+ORDINAL_POSITION	11
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	int(21)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	CHARACTER_SET_NAME
+ORDINAL_POSITION	12
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	COLLATION_NAME
+ORDINAL_POSITION	13
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	DTD_IDENTIFIER
+ORDINAL_POSITION	14
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	NO
+DATA_TYPE	longtext
+CHARACTER_MAXIMUM_LENGTH	4294967295
+CHARACTER_OCTET_LENGTH	4294967295
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	longtext
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	parameters
+COLUMN_NAME	ROUTINE_TYPE
+ORDINAL_POSITION	15
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	9
+CHARACTER_OCTET_LENGTH	27
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(9)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+DESCRIBE INFORMATION_SCHEMA.PARAMETERS;
+Field	Type	Null	Key	Default	Extra
+SPECIFIC_CATALOG	varchar(512)	NO			
+SPECIFIC_SCHEMA	varchar(64)	NO			
+SPECIFIC_NAME	varchar(64)	NO			
+ORDINAL_POSITION	int(21)	NO		0	
+PARAMETER_MODE	varchar(5)	YES		NULL	
+PARAMETER_NAME	varchar(64)	YES		NULL	
+DATA_TYPE	varchar(64)	NO			
+CHARACTER_MAXIMUM_LENGTH	int(21)	YES		NULL	
+CHARACTER_OCTET_LENGTH	int(21)	YES		NULL	
+NUMERIC_PRECISION	int(21)	YES		NULL	
+NUMERIC_SCALE	int(21)	YES		NULL	
+CHARACTER_SET_NAME	varchar(64)	YES		NULL	
+COLLATION_NAME	varchar(64)	YES		NULL	
+DTD_IDENTIFIER	longtext	NO		NULL	
+ROUTINE_TYPE	varchar(9)	NO			
+# ========== parameters.2 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!');
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!')' at line 1
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+# ========== parameters.3 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_func1	0	NULL	NULL	char	50	50	NULL	NULL	latin1	latin1_swedish_ci	char(50)	FUNCTION
+def	i_s_parameters_test	test_func1	1	IN	s	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)	FUNCTION
+DROP FUNCTION test_func1;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+# ========== parameters.4 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE PROCEDURE testproc (OUT param1 INT)
+BEGIN
+SELECT 2+2 as param1;
+END;
+//
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'testproc';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	testproc	1	OUT	param1	int	NULL	NULL	10	0	NULL	NULL	int(11)	PROCEDURE
+# ========== parameters.5 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE PROCEDURE test_proc(INOUT P INT) SET @x=P*2;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_proc	1	INOUT	P	int	NULL	NULL	10	0	NULL	NULL	int(11)	PROCEDURE
+# ========== parameters.6 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE PROCEDURE test_proc(OUT p VARCHAR(10)) SET P='test';
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_proc	1	OUT	p	varchar	10	10	NULL	NULL	latin1	latin1_swedish_ci	varchar(10)	PROCEDURE
+# ========== parameters.7 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func1 (s char(20), t char(20)) RETURNS CHAR(40)
+RETURN CONCAT(s,t);
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_func1	0	NULL	NULL	char	40	40	NULL	NULL	latin1	latin1_swedish_ci	char(40)	FUNCTION
+def	i_s_parameters_test	test_func1	1	IN	s	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)	FUNCTION
+def	i_s_parameters_test	test_func1	2	IN	t	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)	FUNCTION
+# ========== parameters.8 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_func1	0	NULL	NULL	char	50	50	NULL	NULL	latin1	latin1_swedish_ci	char(50)	FUNCTION
+def	i_s_parameters_test	test_func1	1	IN	s	char	20	20	NULL	NULL	latin1	latin1_swedish_ci	char(20)	FUNCTION
+# ========== parameters.9 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func2';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_func2	0	NULL	NULL	int	NULL	NULL	10	0	NULL	NULL	int(11)	FUNCTION
+def	i_s_parameters_test	test_func2	1	IN	s	int	NULL	NULL	10	0	NULL	NULL	int(11)	FUNCTION
+# ========== parameters.10 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_func5	0	NULL	NULL	timestamp	NULL	NULL	NULL	NULL	NULL	NULL	timestamp	FUNCTION
+def	i_s_parameters_test	test_func5	1	IN	s	date	NULL	NULL	NULL	NULL	NULL	NULL	date	FUNCTION
+# ========== parameters.11 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_func5	0	NULL	NULL	timestamp	NULL	NULL	NULL	NULL	NULL	NULL	timestamp	FUNCTION
+def	i_s_parameters_test	test_func5	1	IN	s	date	NULL	NULL	NULL	NULL	NULL	NULL	date	FUNCTION
+ALTER FUNCTION test_func5 COMMENT 'new comment added';
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_func5	0	NULL	NULL	timestamp	NULL	NULL	NULL	NULL	NULL	NULL	timestamp	FUNCTION
+def	i_s_parameters_test	test_func5	1	IN	s	date	NULL	NULL	NULL	NULL	NULL	NULL	date	FUNCTION
+# ========== parameters.12 ==========
+DROP DATABASE IF EXISTS i_s_parameters_test;
+CREATE DATABASE i_s_parameters_test CHARACTER SET  utf8;
+USE i_s_parameters_test;
+CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30)
+RETURN CONCAT('XYZ, ' ,s);
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+SPECIFIC_CATALOG	SPECIFIC_SCHEMA	SPECIFIC_NAME	ORDINAL_POSITION	PARAMETER_MODE	PARAMETER_NAME	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_TYPE
+def	i_s_parameters_test	test_func5	0	NULL	NULL	varchar	30	90	NULL	NULL	utf8	utf8_general_ci	varchar(30)	FUNCTION
+def	i_s_parameters_test	test_func5	1	IN	s	char	20	60	NULL	NULL	utf8	utf8_general_ci	char(20)	FUNCTION
+DROP DATABASE i_s_parameters_test;

=== added file 'mysql-test/r/information_schema_routines.result'
--- a/mysql-test/r/information_schema_routines.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/information_schema_routines.result	2010-01-15 11:42:15 +0000
@@ -0,0 +1,737 @@
+# ========== routines.1 ==========
+USE INFORMATION_SCHEMA;
+SHOW CREATE TABLE INFORMATION_SCHEMA.ROUTINES;
+Table	Create Table
+ROUTINES	CREATE TEMPORARY TABLE `ROUTINES` (
+  `SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
+  `ROUTINE_CATALOG` varchar(512) NOT NULL DEFAULT '',
+  `ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
+  `ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
+  `ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '',
+  `DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
+  `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL,
+  `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL,
+  `NUMERIC_PRECISION` int(21) DEFAULT NULL,
+  `NUMERIC_SCALE` int(21) DEFAULT NULL,
+  `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
+  `COLLATION_NAME` varchar(64) DEFAULT NULL,
+  `DTD_IDENTIFIER` longtext,
+  `ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
+  `ROUTINE_DEFINITION` longtext,
+  `EXTERNAL_NAME` varchar(64) DEFAULT NULL,
+  `EXTERNAL_LANGUAGE` varchar(64) DEFAULT NULL,
+  `PARAMETER_STYLE` varchar(8) NOT NULL DEFAULT '',
+  `IS_DETERMINISTIC` varchar(3) NOT NULL DEFAULT '',
+  `SQL_DATA_ACCESS` varchar(64) NOT NULL DEFAULT '',
+  `SQL_PATH` varchar(64) DEFAULT NULL,
+  `SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
+  `CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
+  `ROUTINE_COMMENT` longtext NOT NULL,
+  `DEFINER` varchar(77) NOT NULL DEFAULT '',
+  `CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
+  `COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
+  `DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
+)  DEFAULT CHARSET=utf8
+SELECT * FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+  AND table_name   = 'routines'
+ORDER BY ordinal_position;
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	SPECIFIC_NAME
+ORDINAL_POSITION	1
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	ROUTINE_CATALOG
+ORDINAL_POSITION	2
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	512
+CHARACTER_OCTET_LENGTH	1536
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(512)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	ROUTINE_SCHEMA
+ORDINAL_POSITION	3
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	ROUTINE_NAME
+ORDINAL_POSITION	4
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	ROUTINE_TYPE
+ORDINAL_POSITION	5
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	9
+CHARACTER_OCTET_LENGTH	27
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(9)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	DATA_TYPE
+ORDINAL_POSITION	6
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	CHARACTER_MAXIMUM_LENGTH
+ORDINAL_POSITION	7
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	int(21)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	CHARACTER_OCTET_LENGTH
+ORDINAL_POSITION	8
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	int(21)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	NUMERIC_PRECISION
+ORDINAL_POSITION	9
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	int(21)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	NUMERIC_SCALE
+ORDINAL_POSITION	10
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	int(21)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	CHARACTER_SET_NAME
+ORDINAL_POSITION	11
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	COLLATION_NAME
+ORDINAL_POSITION	12
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	DTD_IDENTIFIER
+ORDINAL_POSITION	13
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	longtext
+CHARACTER_MAXIMUM_LENGTH	4294967295
+CHARACTER_OCTET_LENGTH	4294967295
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	longtext
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	ROUTINE_BODY
+ORDINAL_POSITION	14
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	8
+CHARACTER_OCTET_LENGTH	24
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(8)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	ROUTINE_DEFINITION
+ORDINAL_POSITION	15
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	longtext
+CHARACTER_MAXIMUM_LENGTH	4294967295
+CHARACTER_OCTET_LENGTH	4294967295
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	longtext
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	EXTERNAL_NAME
+ORDINAL_POSITION	16
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	EXTERNAL_LANGUAGE
+ORDINAL_POSITION	17
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	PARAMETER_STYLE
+ORDINAL_POSITION	18
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	8
+CHARACTER_OCTET_LENGTH	24
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(8)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	IS_DETERMINISTIC
+ORDINAL_POSITION	19
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	3
+CHARACTER_OCTET_LENGTH	9
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(3)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	SQL_DATA_ACCESS
+ORDINAL_POSITION	20
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	SQL_PATH
+ORDINAL_POSITION	21
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	YES
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	64
+CHARACTER_OCTET_LENGTH	192
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(64)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	SECURITY_TYPE
+ORDINAL_POSITION	22
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	7
+CHARACTER_OCTET_LENGTH	21
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(7)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	CREATED
+ORDINAL_POSITION	23
+COLUMN_DEFAULT	0000-00-00 00:00:00
+IS_NULLABLE	NO
+DATA_TYPE	datetime
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	datetime
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	LAST_ALTERED
+ORDINAL_POSITION	24
+COLUMN_DEFAULT	0000-00-00 00:00:00
+IS_NULLABLE	NO
+DATA_TYPE	datetime
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
+COLUMN_TYPE	datetime
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	SQL_MODE
+ORDINAL_POSITION	25
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	8192
+CHARACTER_OCTET_LENGTH	24576
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(8192)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	ROUTINE_COMMENT
+ORDINAL_POSITION	26
+COLUMN_DEFAULT	NULL
+IS_NULLABLE	NO
+DATA_TYPE	longtext
+CHARACTER_MAXIMUM_LENGTH	4294967295
+CHARACTER_OCTET_LENGTH	4294967295
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	longtext
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	DEFINER
+ORDINAL_POSITION	27
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	77
+CHARACTER_OCTET_LENGTH	231
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(77)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	CHARACTER_SET_CLIENT
+ORDINAL_POSITION	28
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	32
+CHARACTER_OCTET_LENGTH	96
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(32)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	COLLATION_CONNECTION
+ORDINAL_POSITION	29
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	32
+CHARACTER_OCTET_LENGTH	96
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(32)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
+TABLE_NAME	routines
+COLUMN_NAME	DATABASE_COLLATION
+ORDINAL_POSITION	30
+COLUMN_DEFAULT	
+IS_NULLABLE	NO
+DATA_TYPE	varchar
+CHARACTER_MAXIMUM_LENGTH	32
+CHARACTER_OCTET_LENGTH	96
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	utf8
+COLLATION_NAME	utf8_general_ci
+COLUMN_TYPE	varchar(32)
+COLUMN_KEY	
+EXTRA	
+PRIVILEGES	#
+COLUMN_COMMENT	
+DESCRIBE INFORMATION_SCHEMA.ROUTINES;
+Field	Type	Null	Key	Default	Extra
+SPECIFIC_NAME	varchar(64)	NO			
+ROUTINE_CATALOG	varchar(512)	NO			
+ROUTINE_SCHEMA	varchar(64)	NO			
+ROUTINE_NAME	varchar(64)	NO			
+ROUTINE_TYPE	varchar(9)	NO			
+DATA_TYPE	varchar(64)	NO			
+CHARACTER_MAXIMUM_LENGTH	int(21)	YES		NULL	
+CHARACTER_OCTET_LENGTH	int(21)	YES		NULL	
+NUMERIC_PRECISION	int(21)	YES		NULL	
+NUMERIC_SCALE	int(21)	YES		NULL	
+CHARACTER_SET_NAME	varchar(64)	YES		NULL	
+COLLATION_NAME	varchar(64)	YES		NULL	
+DTD_IDENTIFIER	longtext	YES		NULL	
+ROUTINE_BODY	varchar(8)	NO			
+ROUTINE_DEFINITION	longtext	YES		NULL	
+EXTERNAL_NAME	varchar(64)	YES		NULL	
+EXTERNAL_LANGUAGE	varchar(64)	YES		NULL	
+PARAMETER_STYLE	varchar(8)	NO			
+IS_DETERMINISTIC	varchar(3)	NO			
+SQL_DATA_ACCESS	varchar(64)	NO			
+SQL_PATH	varchar(64)	YES		NULL	
+SECURITY_TYPE	varchar(7)	NO			
+CREATED	datetime	NO		0000-00-00 00:00:00	
+LAST_ALTERED	datetime	NO		0000-00-00 00:00:00	
+SQL_MODE	varchar(8192)	NO			
+ROUTINE_COMMENT	longtext	NO		NULL	
+DEFINER	varchar(77)	NO			
+CHARACTER_SET_CLIENT	varchar(32)	NO			
+COLLATION_CONNECTION	varchar(32)	NO			
+DATABASE_COLLATION	varchar(32)	NO			
+# ========== routines.2 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!');
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!')' at line 1
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+# ========== routines.3 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+test_func1	def	i_s_routines_test	test_func1	FUNCTION	char	50	50	NULL	NULL	latin1	latin1_swedish_ci	char(50)	SQL	RETURN CONCAT('Hello, ',s,'!')	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	<created>	<modified>			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+DROP FUNCTION test_func1;
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+# ========== routines.4 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE PROCEDURE testproc (OUT param1 INT)
+BEGIN
+SELECT 2+2 as param1;
+END;
+//
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'testproc';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+testproc	def	i_s_routines_test	testproc	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	BEGIN
+SELECT 2+2 as param1;
+END	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	<created>	<modified>			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+# ========== routines.5 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+test_func1	def	i_s_routines_test	test_func1	FUNCTION	char	50	50	NULL	NULL	latin1	latin1_swedish_ci	char(50)	SQL	RETURN CONCAT('Hello, ',s,'!')	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	<created>	<modified>			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+# ========== routines.6 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2;
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func2';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+test_func2	def	i_s_routines_test	test_func2	FUNCTION	int	NULL	NULL	10	0	NULL	NULL	int(11)	SQL	RETURN s*2	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	<created>	<modified>			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+# ========== routines.7 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+test_func5	def	i_s_routines_test	test_func5	FUNCTION	timestamp	NULL	NULL	NULL	NULL	NULL	NULL	timestamp	SQL	RETURN CURRENT_TIMESTAMP	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	<created>	<modified>			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+# ========== routines.8 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+test_func5	def	i_s_routines_test	test_func5	FUNCTION	timestamp	NULL	NULL	NULL	NULL	NULL	NULL	timestamp	SQL	RETURN CURRENT_TIMESTAMP	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	<created>	<modified>			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+ALTER FUNCTION test_func5 COMMENT 'new comment added';
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+test_func5	def	i_s_routines_test	test_func5	FUNCTION	timestamp	NULL	NULL	NULL	NULL	NULL	NULL	timestamp	SQL	RETURN CURRENT_TIMESTAMP	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	<created>	<modified>		new comment added	root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+# ========== routines.9 ==========
+DROP DATABASE IF EXISTS i_s_routines_test;
+CREATE DATABASE i_s_routines_test CHARACTER SET  utf8;
+USE i_s_routines_test;
+CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30)
+RETURN CONCAT('XYZ, ' ,s);
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+test_func5	def	i_s_routines_test	test_func5	FUNCTION	varchar	30	90	NULL	NULL	utf8	utf8_general_ci	varchar(30)	SQL	RETURN CONCAT('XYZ, ' ,s)	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	<created>	<modified>			root@localhost	latin1	latin1_swedish_ci	utf8_general_ci
+DROP DATABASE i_s_routines_test;

=== modified file 'mysql-test/r/mysqlcheck.result'
--- a/mysql-test/r/mysqlcheck.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/r/mysqlcheck.result	2010-01-15 11:42:15 +0000
@@ -164,9 +164,6 @@ WHERE TRIGGER_SCHEMA="#mysql50#a@b" ORDE
 TRIGGER_CATALOG	TRIGGER_SCHEMA	TRIGGER_NAME	EVENT_MANIPULATION	EVENT_OBJECT_CATALOG	EVENT_OBJECT_SCHEMA	EVENT_OBJECT_TABLE	ACTION_ORDER	ACTION_CONDITION	ACTION_STATEMENT	ACTION_ORIENTATION	ACTION_TIMING	ACTION_REFERENCE_OLD_TABLE	ACTION_REFERENCE_NEW_TABLE	ACTION_REFERENCE_OLD_ROW	ACTION_REFERENCE_NEW_ROW	CREATED	SQL_MODE	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
 def	#mysql50#a@b	tr1	INSERT	def	#mysql50#a@b	#mysql50#c@d	0	NULL	SET NEW.a = 10 * NEW.a	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
 def	#mysql50#a@b	tr2	INSERT	def	#mysql50#a@b	t1	0	NULL	SET NEW.a = 100 * NEW.a	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
-Warnings:
-Warning	1603	Triggers for table `#mysql50#a@b`.`#mysql50#c@d` have no creation context
-Warning	1603	Triggers for table `#mysql50#a@b`.`t1` have no creation context
 mysqlcheck --fix-db-names --fix-table-names --all-databases
 USE `a@b`;
 SELECT * FROM INFORMATION_SCHEMA.TRIGGERS

=== modified file 'mysql-test/r/mysqlshow.result'
--- a/mysql-test/r/mysqlshow.result	2009-12-07 12:22:51 +0000
+++ b/mysql-test/r/mysqlshow.result	2010-01-15 11:42:15 +0000
@@ -90,6 +90,7 @@ Database: information_schema
 | GLOBAL_STATUS                         |
 | GLOBAL_VARIABLES                      |
 | KEY_COLUMN_USAGE                      |
+| PARAMETERS                            |
 | PARTITIONS                            |
 | PLUGINS                               |
 | PROCESSLIST                           |
@@ -131,6 +132,7 @@ Database: INFORMATION_SCHEMA
 | GLOBAL_STATUS                         |
 | GLOBAL_VARIABLES                      |
 | KEY_COLUMN_USAGE                      |
+| PARAMETERS                            |
 | PARTITIONS                            |
 | PLUGINS                               |
 | PROCESSLIST                           |

=== modified file 'mysql-test/r/show_check.result'
--- a/mysql-test/r/show_check.result	2009-12-22 11:02:52 +0000
+++ b/mysql-test/r/show_check.result	2010-01-15 11:42:15 +0000
@@ -1105,7 +1105,7 @@ def	information_schema	ROUTINES	ROUTINES
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_SCHEMA	ROUTINE_SCHEMA	253	192	4	N	1	0	33
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_NAME	ROUTINE_NAME	253	192	2	N	1	0	33
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_TYPE	ROUTINE_TYPE	253	27	9	N	1	0	33
-def	information_schema	ROUTINES	ROUTINES	DTD_IDENTIFIER	DTD_IDENTIFIER	253	192	0	Y	0	0	33
+def	information_schema	ROUTINES	ROUTINES	DTD_IDENTIFIER	DTD_IDENTIFIER	252	589815	0	Y	16	0	33
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_BODY	ROUTINE_BODY	253	24	3	N	1	0	33
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_DEFINITION	ROUTINE_DEFINITION	252	589815	8	Y	16	0	33
 def	information_schema	ROUTINES	ROUTINES	EXTERNAL_NAME	EXTERNAL_NAME	253	192	0	Y	0	0	33
@@ -1160,7 +1160,7 @@ def	information_schema	ROUTINES	ROUTINES
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_SCHEMA	ROUTINE_SCHEMA	253	192	4	N	1	0	33
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_NAME	ROUTINE_NAME	253	192	2	N	1	0	33
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_TYPE	ROUTINE_TYPE	253	27	8	N	1	0	33
-def	information_schema	ROUTINES	ROUTINES	DTD_IDENTIFIER	DTD_IDENTIFIER	253	192	7	Y	0	0	33
+def	information_schema	ROUTINES	ROUTINES	DTD_IDENTIFIER	DTD_IDENTIFIER	252	589815	7	Y	16	0	33
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_BODY	ROUTINE_BODY	253	24	3	N	1	0	33
 def	information_schema	ROUTINES	ROUTINES	ROUTINE_DEFINITION	ROUTINE_DEFINITION	252	589815	8	Y	16	0	33
 def	information_schema	ROUTINES	ROUTINES	EXTERNAL_NAME	EXTERNAL_NAME	253	192	0	Y	0	0	33

=== modified file 'mysql-test/r/sp-ucs2.result'
--- a/mysql-test/r/sp-ucs2.result	2009-12-16 18:02:21 +0000
+++ b/mysql-test/r/sp-ucs2.result	2010-01-15 11:42:15 +0000
@@ -132,7 +132,7 @@ RETURN 0	utf8	utf8_general_ci	latin1_swe
 SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_NAME='bug48766';
 DTD_IDENTIFIER
-enum('w') CHARSET ucs2
+enum('w')
 DROP FUNCTION bug48766;
 CREATE FUNCTION bug48766 ()
 RETURNS ENUM('а','б','в','г') CHARACTER SET ucs2
@@ -144,5 +144,5 @@ RETURN 0	utf8	utf8_general_ci	latin1_swe
 SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_NAME='bug48766';
 DTD_IDENTIFIER
-enum('а','б','в','г') CHARSET ucs2
+enum('а','б','в','г')
 DROP FUNCTION bug48766;

=== modified file 'mysql-test/r/sp.result'
--- a/mysql-test/r/sp.result	2009-12-28 12:54:16 +0000
+++ b/mysql-test/r/sp.result	2010-01-15 11:42:15 +0000
@@ -4990,22 +4990,22 @@ SELECT dtd_identifier
 FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"|
 dtd_identifier
-char(10) CHARSET utf8
+char(10)
 SELECT dtd_identifier
 FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"|
 dtd_identifier
-char(10) CHARSET koi8r
+char(10)
 SELECT dtd_identifier
 FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"|
 dtd_identifier
-char(10) CHARSET utf8
+char(10)
 SELECT dtd_identifier
 FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"|
 dtd_identifier
-char(10) CHARSET koi8r
+char(10)
 SELECT CHARSET(bug16211_f1())|
 CHARSET(bug16211_f1())
 utf8
@@ -5040,22 +5040,22 @@ SELECT dtd_identifier
 FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"|
 dtd_identifier
-char(10) CHARSET utf8
+char(10)
 SELECT dtd_identifier
 FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"|
 dtd_identifier
-char(10) CHARSET koi8r
+char(10)
 SELECT dtd_identifier
 FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"|
 dtd_identifier
-char(10) CHARSET utf8
+char(10)
 SELECT dtd_identifier
 FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"|
 dtd_identifier
-char(10) CHARSET koi8r
+char(10)
 SELECT CHARSET(bug16211_f1())|
 CHARSET(bug16211_f1())
 utf8

=== modified file 'mysql-test/r/trigger-compat.result'
--- a/mysql-test/r/trigger-compat.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/r/trigger-compat.result	2010-01-15 11:42:15 +0000
@@ -26,8 +26,6 @@ SELECT trigger_name, definer FROM INFORM
 trigger_name	definer
 wl2818_trg1	
 wl2818_trg2	mysqltest_dfn@localhost
-Warnings:
-Warning	1454	No definer attribute for trigger 'mysqltest_db1'.'wl2818_trg1'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger.
 
 SELECT * FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_name;
 TRIGGER_CATALOG	TRIGGER_SCHEMA	TRIGGER_NAME	EVENT_MANIPULATION	EVENT_OBJECT_CATALOG	EVENT_OBJECT_SCHEMA	EVENT_OBJECT_TABLE	ACTION_ORDER	ACTION_CONDITION	ACTION_STATEMENT	ACTION_ORIENTATION	ACTION_TIMING	ACTION_REFERENCE_OLD_TABLE	ACTION_REFERENCE_NEW_TABLE	ACTION_REFERENCE_OLD_ROW	ACTION_REFERENCE_NEW_ROW	CREATED	SQL_MODE	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION

=== modified file 'mysql-test/r/trigger_notembedded.result'
--- a/mysql-test/r/trigger_notembedded.result	2009-12-01 19:07:18 +0000
+++ b/mysql-test/r/trigger_notembedded.result	2010-01-15 11:42:15 +0000
@@ -165,8 +165,6 @@ trg2	@
 trg3	@abc@def@@
 trg4	@hostname
 trg5	@abcdef@@@hostname
-Warnings:
-Warning	1454	No definer attribute for trigger 'mysqltest_db1'.'trg1'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger.
 
 SELECT * FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_name;
 TRIGGER_CATALOG	TRIGGER_SCHEMA	TRIGGER_NAME	EVENT_MANIPULATION	EVENT_OBJECT_CATALOG	EVENT_OBJECT_SCHEMA	EVENT_OBJECT_TABLE	ACTION_ORDER	ACTION_CONDITION	ACTION_STATEMENT	ACTION_ORIENTATION	ACTION_TIMING	ACTION_REFERENCE_OLD_TABLE	ACTION_REFERENCE_NEW_TABLE	ACTION_REFERENCE_OLD_ROW	ACTION_REFERENCE_NEW_ROW	CREATED	SQL_MODE	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION

=== modified file 'mysql-test/suite/funcs_1/datadict/is_routines.inc'
--- a/mysql-test/suite/funcs_1/datadict/is_routines.inc	2009-06-09 16:09:16 +0000
+++ b/mysql-test/suite/funcs_1/datadict/is_routines.inc	2010-01-15 11:42:15 +0000
@@ -181,19 +181,19 @@ FLUSH PRIVILEGES;
 --echo # Establish connection testuser1 (user=testuser1)
 --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
 connect (testuser1, localhost, testuser1, , db_datadict);
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss"
 SELECT * FROM information_schema.routines;
 
 --echo # Establish connection testuser2 (user=testuser2)
 --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
 connect (testuser2, localhost, testuser2, , db_datadict);
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss"
 SELECT * FROM information_schema.routines;
 
 --echo # Establish connection testuser3 (user=testuser3)
 --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
 connect (testuser3, localhost, testuser3, , test);
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss"
 SELECT * FROM information_schema.routines;
 
 # Cleanup
@@ -238,7 +238,7 @@ USE db_datadict;
 CREATE PROCEDURE sp_for_routines()      SELECT 'db_datadict';
 CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
 --vertical_results
---replace_column 16 <created> 17 <modified>
+--replace_column 23 <created> 24 <modified>
 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
 ORDER BY routine_name;
 --horizontal_results
@@ -246,7 +246,7 @@ ORDER BY routine_name;
 ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;
 ALTER FUNCTION function_for_routines COMMENT 'updated comments';
 --vertical_results
---replace_column 16 <created> 17 <modified>
+--replace_column 23 <created> 24 <modified>
 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
 ORDER BY routine_name;
 --horizontal_results
@@ -258,7 +258,7 @@ SELECT * FROM information_schema.routine
 CREATE PROCEDURE sp_for_routines()      SELECT 'db_datadict';
 CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
 --vertical_results
---replace_column 16 <created> 17 <modified>
+--replace_column 23 <created> 24 <modified>
 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
 ORDER BY routine_name;
 --horizontal_results
@@ -403,7 +403,7 @@ CALL db_datadict.sp_6_408004 ();
 SELECT * FROM db_datadict.res_6_408004_2;
 
 --vertical_results
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss"
 SELECT *, LENGTH(routine_definition) FROM information_schema.routines
 WHERE routine_schema = 'db_datadict';
 --horizontal_results

=== modified file 'mysql-test/suite/funcs_1/r/innodb_storedproc_08.result'
--- a/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result	2010-01-15 11:42:15 +0000
@@ -109,6 +109,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL

+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -136,6 +143,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -163,6 +177,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -188,6 +209,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -327,6 +355,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -354,6 +389,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -381,6 +423,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -406,6 +455,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -538,6 +594,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -565,6 +628,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -592,6 +662,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -617,6 +694,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_is.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_is.result	2009-12-07 12:22:51 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_is.result	2010-01-15 11:42:15 +0000
@@ -125,6 +125,21 @@ def	information_schema	KEY_COLUMN_USAGE	
 def	information_schema	KEY_COLUMN_USAGE	TABLE_CATALOG	4		NO	varchar	512	1536	NULL	NULL	utf8	utf8_general_ci	varchar(512)			select	
 def	information_schema	KEY_COLUMN_USAGE	TABLE_NAME	6		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
 def	information_schema	KEY_COLUMN_USAGE	TABLE_SCHEMA	5		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	PARAMETERS	CHARACTER_MAXIMUM_LENGTH	8	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)			select	
+def	information_schema	PARAMETERS	CHARACTER_OCTET_LENGTH	9	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)			select	
+def	information_schema	PARAMETERS	CHARACTER_SET_NAME	12	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	PARAMETERS	COLLATION_NAME	13	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	PARAMETERS	DATA_TYPE	7		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	PARAMETERS	DTD_IDENTIFIER	14	NULL	NO	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext			select	
+def	information_schema	PARAMETERS	NUMERIC_PRECISION	10	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)			select	
+def	information_schema	PARAMETERS	NUMERIC_SCALE	11	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)			select	
+def	information_schema	PARAMETERS	ORDINAL_POSITION	4	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(21)			select	
+def	information_schema	PARAMETERS	PARAMETER_MODE	5	NULL	YES	varchar	5	15	NULL	NULL	utf8	utf8_general_ci	varchar(5)			select	
+def	information_schema	PARAMETERS	PARAMETER_NAME	6	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	PARAMETERS	ROUTINE_TYPE	15		NO	varchar	9	27	NULL	NULL	utf8	utf8_general_ci	varchar(9)			select	
+def	information_schema	PARAMETERS	SPECIFIC_CATALOG	1		NO	varchar	512	1536	NULL	NULL	utf8	utf8_general_ci	varchar(512)			select	
+def	information_schema	PARAMETERS	SPECIFIC_NAME	3		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	PARAMETERS	SPECIFIC_SCHEMA	2		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
 def	information_schema	PARTITIONS	AVG_ROW_LENGTH	14	0	NO	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned			select	
 def	information_schema	PARTITIONS	CHECKSUM	22	NULL	YES	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned			select	
 def	information_schema	PARTITIONS	CHECK_TIME	21	NULL	YES	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select	
@@ -179,29 +194,36 @@ def	information_schema	REFERENTIAL_CONST
 def	information_schema	REFERENTIAL_CONSTRAINTS	UNIQUE_CONSTRAINT_NAME	6	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
 def	information_schema	REFERENTIAL_CONSTRAINTS	UNIQUE_CONSTRAINT_SCHEMA	5		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
 def	information_schema	REFERENTIAL_CONSTRAINTS	UPDATE_RULE	8		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
-def	information_schema	ROUTINES	CHARACTER_SET_CLIENT	21		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)			select	
-def	information_schema	ROUTINES	COLLATION_CONNECTION	22		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)			select	
-def	information_schema	ROUTINES	CREATED	16	0000-00-00 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select	
-def	information_schema	ROUTINES	DATABASE_COLLATION	23		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)			select	
-def	information_schema	ROUTINES	DEFINER	20		NO	varchar	77	231	NULL	NULL	utf8	utf8_general_ci	varchar(77)			select	
-def	information_schema	ROUTINES	DTD_IDENTIFIER	6	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
-def	information_schema	ROUTINES	EXTERNAL_LANGUAGE	10	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
-def	information_schema	ROUTINES	EXTERNAL_NAME	9	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
-def	information_schema	ROUTINES	IS_DETERMINISTIC	12		NO	varchar	3	9	NULL	NULL	utf8	utf8_general_ci	varchar(3)			select	
-def	information_schema	ROUTINES	LAST_ALTERED	17	0000-00-00 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select	
-def	information_schema	ROUTINES	PARAMETER_STYLE	11		NO	varchar	8	24	NULL	NULL	utf8	utf8_general_ci	varchar(8)			select	
-def	information_schema	ROUTINES	ROUTINE_BODY	7		NO	varchar	8	24	NULL	NULL	utf8	utf8_general_ci	varchar(8)			select	
+def	information_schema	ROUTINES	CHARACTER_MAXIMUM_LENGTH	7	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)			select	
+def	information_schema	ROUTINES	CHARACTER_OCTET_LENGTH	8	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)			select	
+def	information_schema	ROUTINES	CHARACTER_SET_CLIENT	28		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)			select	
+def	information_schema	ROUTINES	CHARACTER_SET_NAME	11	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	ROUTINES	COLLATION_CONNECTION	29		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)			select	
+def	information_schema	ROUTINES	COLLATION_NAME	12	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	ROUTINES	CREATED	23	0000-00-00 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select	
+def	information_schema	ROUTINES	DATABASE_COLLATION	30		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)			select	
+def	information_schema	ROUTINES	DATA_TYPE	6		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	ROUTINES	DEFINER	27		NO	varchar	77	231	NULL	NULL	utf8	utf8_general_ci	varchar(77)			select	
+def	information_schema	ROUTINES	DTD_IDENTIFIER	13	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext			select	
+def	information_schema	ROUTINES	EXTERNAL_LANGUAGE	17	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	ROUTINES	EXTERNAL_NAME	16	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	ROUTINES	IS_DETERMINISTIC	19		NO	varchar	3	9	NULL	NULL	utf8	utf8_general_ci	varchar(3)			select	
+def	information_schema	ROUTINES	LAST_ALTERED	24	0000-00-00 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime			select	
+def	information_schema	ROUTINES	NUMERIC_PRECISION	9	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)			select	
+def	information_schema	ROUTINES	NUMERIC_SCALE	10	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)			select	
+def	information_schema	ROUTINES	PARAMETER_STYLE	18		NO	varchar	8	24	NULL	NULL	utf8	utf8_general_ci	varchar(8)			select	
+def	information_schema	ROUTINES	ROUTINE_BODY	14		NO	varchar	8	24	NULL	NULL	utf8	utf8_general_ci	varchar(8)			select	
 def	information_schema	ROUTINES	ROUTINE_CATALOG	2		NO	varchar	512	1536	NULL	NULL	utf8	utf8_general_ci	varchar(512)			select	
-def	information_schema	ROUTINES	ROUTINE_COMMENT	19	NULL	NO	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext			select	
-def	information_schema	ROUTINES	ROUTINE_DEFINITION	8	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext			select	
+def	information_schema	ROUTINES	ROUTINE_COMMENT	26	NULL	NO	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext			select	
+def	information_schema	ROUTINES	ROUTINE_DEFINITION	15	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext			select	
 def	information_schema	ROUTINES	ROUTINE_NAME	4		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
 def	information_schema	ROUTINES	ROUTINE_SCHEMA	3		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
 def	information_schema	ROUTINES	ROUTINE_TYPE	5		NO	varchar	9	27	NULL	NULL	utf8	utf8_general_ci	varchar(9)			select	
-def	information_schema	ROUTINES	SECURITY_TYPE	15		NO	varchar	7	21	NULL	NULL	utf8	utf8_general_ci	varchar(7)			select	
+def	information_schema	ROUTINES	SECURITY_TYPE	22		NO	varchar	7	21	NULL	NULL	utf8	utf8_general_ci	varchar(7)			select	
 def	information_schema	ROUTINES	SPECIFIC_NAME	1		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
-def	information_schema	ROUTINES	SQL_DATA_ACCESS	13		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
-def	information_schema	ROUTINES	SQL_MODE	18		NO	varchar	8192	24576	NULL	NULL	utf8	utf8_general_ci	varchar(8192)			select	
-def	information_schema	ROUTINES	SQL_PATH	14	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	ROUTINES	SQL_DATA_ACCESS	20		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
+def	information_schema	ROUTINES	SQL_MODE	25		NO	varchar	8192	24576	NULL	NULL	utf8	utf8_general_ci	varchar(8192)			select	
+def	information_schema	ROUTINES	SQL_PATH	21	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)			select	
 def	information_schema	SCHEMATA	CATALOG_NAME	1		NO	varchar	512	1536	NULL	NULL	utf8	utf8_general_ci	varchar(512)			select	
 def	information_schema	SCHEMATA	DEFAULT_CHARACTER_SET_NAME	3		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)			select	
 def	information_schema	SCHEMATA	DEFAULT_COLLATION_NAME	4		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)			select	
@@ -489,6 +511,21 @@ NULL	information_schema	KEY_COLUMN_USAGE
 3.0000	information_schema	KEY_COLUMN_USAGE	REFERENCED_TABLE_SCHEMA	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	KEY_COLUMN_USAGE	REFERENCED_TABLE_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	KEY_COLUMN_USAGE	REFERENCED_COLUMN_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	PARAMETERS	SPECIFIC_CATALOG	varchar	512	1536	utf8	utf8_general_ci	varchar(512)
+3.0000	information_schema	PARAMETERS	SPECIFIC_SCHEMA	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	PARAMETERS	SPECIFIC_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+NULL	information_schema	PARAMETERS	ORDINAL_POSITION	int	NULL	NULL	NULL	NULL	int(21)
+3.0000	information_schema	PARAMETERS	PARAMETER_MODE	varchar	5	15	utf8	utf8_general_ci	varchar(5)
+3.0000	information_schema	PARAMETERS	PARAMETER_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	PARAMETERS	DATA_TYPE	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+NULL	information_schema	PARAMETERS	CHARACTER_MAXIMUM_LENGTH	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	PARAMETERS	CHARACTER_OCTET_LENGTH	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	PARAMETERS	NUMERIC_PRECISION	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	PARAMETERS	NUMERIC_SCALE	int	NULL	NULL	NULL	NULL	int(21)
+3.0000	information_schema	PARAMETERS	CHARACTER_SET_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	PARAMETERS	COLLATION_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+1.0000	information_schema	PARAMETERS	DTD_IDENTIFIER	longtext	4294967295	4294967295	utf8	utf8_general_ci	longtext
+3.0000	information_schema	PARAMETERS	ROUTINE_TYPE	varchar	9	27	utf8	utf8_general_ci	varchar(9)
 3.0000	information_schema	PARTITIONS	TABLE_CATALOG	varchar	512	1536	utf8	utf8_general_ci	varchar(512)
 3.0000	information_schema	PARTITIONS	TABLE_SCHEMA	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	PARTITIONS	TABLE_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
@@ -548,7 +585,14 @@ NULL	information_schema	PROCESSLIST	TIME
 3.0000	information_schema	ROUTINES	ROUTINE_SCHEMA	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	ROUTINES	ROUTINE_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	ROUTINES	ROUTINE_TYPE	varchar	9	27	utf8	utf8_general_ci	varchar(9)
-3.0000	information_schema	ROUTINES	DTD_IDENTIFIER	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	ROUTINES	DATA_TYPE	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+NULL	information_schema	ROUTINES	CHARACTER_MAXIMUM_LENGTH	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	ROUTINES	CHARACTER_OCTET_LENGTH	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	ROUTINES	NUMERIC_PRECISION	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	ROUTINES	NUMERIC_SCALE	int	NULL	NULL	NULL	NULL	int(21)
+3.0000	information_schema	ROUTINES	CHARACTER_SET_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	ROUTINES	COLLATION_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+1.0000	information_schema	ROUTINES	DTD_IDENTIFIER	longtext	4294967295	4294967295	utf8	utf8_general_ci	longtext
 3.0000	information_schema	ROUTINES	ROUTINE_BODY	varchar	8	24	utf8	utf8_general_ci	varchar(8)
 1.0000	information_schema	ROUTINES	ROUTINE_DEFINITION	longtext	4294967295	4294967295	utf8	utf8_general_ci	longtext
 3.0000	information_schema	ROUTINES	EXTERNAL_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_is_embedded.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result	2010-01-15 11:42:15 +0000
@@ -125,6 +125,21 @@ def	information_schema	KEY_COLUMN_USAGE	
 def	information_schema	KEY_COLUMN_USAGE	TABLE_CATALOG	4		NO	varchar	512	1536	NULL	NULL	utf8	utf8_general_ci	varchar(512)				
 def	information_schema	KEY_COLUMN_USAGE	TABLE_NAME	6		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	KEY_COLUMN_USAGE	TABLE_SCHEMA	5		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	PARAMETERS	CHARACTER_MAXIMUM_LENGTH	8	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)				
+def	information_schema	PARAMETERS	CHARACTER_OCTET_LENGTH	9	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)				
+def	information_schema	PARAMETERS	CHARACTER_SET_NAME	12	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	PARAMETERS	COLLATION_NAME	13	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	PARAMETERS	DATA_TYPE	7		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	PARAMETERS	DTD_IDENTIFIER	14	NULL	NO	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext				
+def	information_schema	PARAMETERS	NUMERIC_PRECISION	10	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)				
+def	information_schema	PARAMETERS	NUMERIC_SCALE	11	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)				
+def	information_schema	PARAMETERS	ORDINAL_POSITION	4	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(21)				
+def	information_schema	PARAMETERS	PARAMETER_MODE	5	NULL	YES	varchar	5	15	NULL	NULL	utf8	utf8_general_ci	varchar(5)				
+def	information_schema	PARAMETERS	PARAMETER_NAME	6	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	PARAMETERS	ROUTINE_TYPE	15		NO	varchar	9	27	NULL	NULL	utf8	utf8_general_ci	varchar(9)				
+def	information_schema	PARAMETERS	SPECIFIC_CATALOG	1		NO	varchar	512	1536	NULL	NULL	utf8	utf8_general_ci	varchar(512)				
+def	information_schema	PARAMETERS	SPECIFIC_NAME	3		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	PARAMETERS	SPECIFIC_SCHEMA	2		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	PARTITIONS	AVG_ROW_LENGTH	14	0	NO	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned				
 def	information_schema	PARTITIONS	CHECKSUM	22	NULL	YES	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned				
 def	information_schema	PARTITIONS	CHECK_TIME	21	NULL	YES	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime				
@@ -137,7 +152,7 @@ def	information_schema	PARTITIONS	NODEGR
 def	information_schema	PARTITIONS	PARTITION_COMMENT	23		NO	varchar	80	240	NULL	NULL	utf8	utf8_general_ci	varchar(80)				
 def	information_schema	PARTITIONS	PARTITION_DESCRIPTION	12	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext				
 def	information_schema	PARTITIONS	PARTITION_EXPRESSION	10	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext				
-def	information_schema	PARTITIONS	PARTITION_METHOD	8	NULL	YES	varchar	12	36	NULL	NULL	utf8	utf8_general_ci	varchar(12)				
+def	information_schema	PARTITIONS	PARTITION_METHOD	8	NULL	YES	varchar	18	54	NULL	NULL	utf8	utf8_general_ci	varchar(18)				
 def	information_schema	PARTITIONS	PARTITION_NAME	4	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	PARTITIONS	PARTITION_ORDINAL_POSITION	6	NULL	YES	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned				
 def	information_schema	PARTITIONS	SUBPARTITION_EXPRESSION	11	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext				
@@ -179,29 +194,36 @@ def	information_schema	REFERENTIAL_CONST
 def	information_schema	REFERENTIAL_CONSTRAINTS	UNIQUE_CONSTRAINT_NAME	6	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	REFERENTIAL_CONSTRAINTS	UNIQUE_CONSTRAINT_SCHEMA	5		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	REFERENTIAL_CONSTRAINTS	UPDATE_RULE	8		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
-def	information_schema	ROUTINES	CHARACTER_SET_CLIENT	21		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)				
-def	information_schema	ROUTINES	COLLATION_CONNECTION	22		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)				
-def	information_schema	ROUTINES	CREATED	16	0000-00-00 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime				
-def	information_schema	ROUTINES	DATABASE_COLLATION	23		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)				
-def	information_schema	ROUTINES	DEFINER	20		NO	varchar	77	231	NULL	NULL	utf8	utf8_general_ci	varchar(77)				
-def	information_schema	ROUTINES	DTD_IDENTIFIER	6	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
-def	information_schema	ROUTINES	EXTERNAL_LANGUAGE	10	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
-def	information_schema	ROUTINES	EXTERNAL_NAME	9	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
-def	information_schema	ROUTINES	IS_DETERMINISTIC	12		NO	varchar	3	9	NULL	NULL	utf8	utf8_general_ci	varchar(3)				
-def	information_schema	ROUTINES	LAST_ALTERED	17	0000-00-00 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime				
-def	information_schema	ROUTINES	PARAMETER_STYLE	11		NO	varchar	8	24	NULL	NULL	utf8	utf8_general_ci	varchar(8)				
-def	information_schema	ROUTINES	ROUTINE_BODY	7		NO	varchar	8	24	NULL	NULL	utf8	utf8_general_ci	varchar(8)				
+def	information_schema	ROUTINES	CHARACTER_MAXIMUM_LENGTH	7	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)				
+def	information_schema	ROUTINES	CHARACTER_OCTET_LENGTH	8	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)				
+def	information_schema	ROUTINES	CHARACTER_SET_CLIENT	28		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)				
+def	information_schema	ROUTINES	CHARACTER_SET_NAME	11	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	ROUTINES	COLLATION_CONNECTION	29		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)				
+def	information_schema	ROUTINES	COLLATION_NAME	12	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	ROUTINES	CREATED	23	0000-00-00 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime				
+def	information_schema	ROUTINES	DATABASE_COLLATION	30		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)				
+def	information_schema	ROUTINES	DATA_TYPE	6		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	ROUTINES	DEFINER	27		NO	varchar	77	231	NULL	NULL	utf8	utf8_general_ci	varchar(77)				
+def	information_schema	ROUTINES	DTD_IDENTIFIER	13	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext				
+def	information_schema	ROUTINES	EXTERNAL_LANGUAGE	17	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	ROUTINES	EXTERNAL_NAME	16	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	ROUTINES	IS_DETERMINISTIC	19		NO	varchar	3	9	NULL	NULL	utf8	utf8_general_ci	varchar(3)				
+def	information_schema	ROUTINES	LAST_ALTERED	24	0000-00-00 00:00:00	NO	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime				
+def	information_schema	ROUTINES	NUMERIC_PRECISION	9	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)				
+def	information_schema	ROUTINES	NUMERIC_SCALE	10	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	int(21)				
+def	information_schema	ROUTINES	PARAMETER_STYLE	18		NO	varchar	8	24	NULL	NULL	utf8	utf8_general_ci	varchar(8)				
+def	information_schema	ROUTINES	ROUTINE_BODY	14		NO	varchar	8	24	NULL	NULL	utf8	utf8_general_ci	varchar(8)				
 def	information_schema	ROUTINES	ROUTINE_CATALOG	2		NO	varchar	512	1536	NULL	NULL	utf8	utf8_general_ci	varchar(512)				
-def	information_schema	ROUTINES	ROUTINE_COMMENT	19		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
-def	information_schema	ROUTINES	ROUTINE_DEFINITION	8	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext				
+def	information_schema	ROUTINES	ROUTINE_COMMENT	26	NULL	NO	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext				
+def	information_schema	ROUTINES	ROUTINE_DEFINITION	15	NULL	YES	longtext	4294967295	4294967295	NULL	NULL	utf8	utf8_general_ci	longtext				
 def	information_schema	ROUTINES	ROUTINE_NAME	4		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	ROUTINES	ROUTINE_SCHEMA	3		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	ROUTINES	ROUTINE_TYPE	5		NO	varchar	9	27	NULL	NULL	utf8	utf8_general_ci	varchar(9)				
-def	information_schema	ROUTINES	SECURITY_TYPE	15		NO	varchar	7	21	NULL	NULL	utf8	utf8_general_ci	varchar(7)				
+def	information_schema	ROUTINES	SECURITY_TYPE	22		NO	varchar	7	21	NULL	NULL	utf8	utf8_general_ci	varchar(7)				
 def	information_schema	ROUTINES	SPECIFIC_NAME	1		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
-def	information_schema	ROUTINES	SQL_DATA_ACCESS	13		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
-def	information_schema	ROUTINES	SQL_MODE	18		NO	varchar	8192	24576	NULL	NULL	utf8	utf8_general_ci	varchar(8192)				
-def	information_schema	ROUTINES	SQL_PATH	14	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	ROUTINES	SQL_DATA_ACCESS	20		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	ROUTINES	SQL_MODE	25		NO	varchar	8192	24576	NULL	NULL	utf8	utf8_general_ci	varchar(8192)				
+def	information_schema	ROUTINES	SQL_PATH	21	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	SCHEMATA	CATALOG_NAME	1		NO	varchar	512	1536	NULL	NULL	utf8	utf8_general_ci	varchar(512)				
 def	information_schema	SCHEMATA	DEFAULT_CHARACTER_SET_NAME	3		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)				
 def	information_schema	SCHEMATA	DEFAULT_COLLATION_NAME	4		NO	varchar	32	96	NULL	NULL	utf8	utf8_general_ci	varchar(32)				
@@ -252,6 +274,15 @@ def	information_schema	TABLES	TABLE_SCHE
 def	information_schema	TABLES	TABLE_TYPE	4		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	TABLES	UPDATE_TIME	16	NULL	YES	datetime	NULL	NULL	NULL	NULL	NULL	NULL	datetime				
 def	information_schema	TABLES	VERSION	6	NULL	YES	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned				
+def	information_schema	TABLESPACES	AUTOEXTEND_SIZE	6	NULL	YES	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned				
+def	information_schema	TABLESPACES	ENGINE	2		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	TABLESPACES	EXTENT_SIZE	5	NULL	YES	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned				
+def	information_schema	TABLESPACES	LOGFILE_GROUP_NAME	4	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	TABLESPACES	MAXIMUM_SIZE	7	NULL	YES	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned				
+def	information_schema	TABLESPACES	NODEGROUP_ID	8	NULL	YES	bigint	NULL	NULL	19	0	NULL	NULL	bigint(21) unsigned				
+def	information_schema	TABLESPACES	TABLESPACE_COMMENT	9	NULL	YES	varchar	2048	6144	NULL	NULL	utf8	utf8_general_ci	varchar(2048)				
+def	information_schema	TABLESPACES	TABLESPACE_NAME	1		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
+def	information_schema	TABLESPACES	TABLESPACE_TYPE	3	NULL	YES	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	TABLE_CONSTRAINTS	CONSTRAINT_CATALOG	1		NO	varchar	512	1536	NULL	NULL	utf8	utf8_general_ci	varchar(512)				
 def	information_schema	TABLE_CONSTRAINTS	CONSTRAINT_NAME	3		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
 def	information_schema	TABLE_CONSTRAINTS	CONSTRAINT_SCHEMA	2		NO	varchar	64	192	NULL	NULL	utf8	utf8_general_ci	varchar(64)				
@@ -480,6 +511,21 @@ NULL	information_schema	KEY_COLUMN_USAGE
 3.0000	information_schema	KEY_COLUMN_USAGE	REFERENCED_TABLE_SCHEMA	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	KEY_COLUMN_USAGE	REFERENCED_TABLE_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	KEY_COLUMN_USAGE	REFERENCED_COLUMN_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	PARAMETERS	SPECIFIC_CATALOG	varchar	512	1536	utf8	utf8_general_ci	varchar(512)
+3.0000	information_schema	PARAMETERS	SPECIFIC_SCHEMA	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	PARAMETERS	SPECIFIC_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+NULL	information_schema	PARAMETERS	ORDINAL_POSITION	int	NULL	NULL	NULL	NULL	int(21)
+3.0000	information_schema	PARAMETERS	PARAMETER_MODE	varchar	5	15	utf8	utf8_general_ci	varchar(5)
+3.0000	information_schema	PARAMETERS	PARAMETER_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	PARAMETERS	DATA_TYPE	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+NULL	information_schema	PARAMETERS	CHARACTER_MAXIMUM_LENGTH	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	PARAMETERS	CHARACTER_OCTET_LENGTH	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	PARAMETERS	NUMERIC_PRECISION	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	PARAMETERS	NUMERIC_SCALE	int	NULL	NULL	NULL	NULL	int(21)
+3.0000	information_schema	PARAMETERS	CHARACTER_SET_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	PARAMETERS	COLLATION_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+1.0000	information_schema	PARAMETERS	DTD_IDENTIFIER	longtext	4294967295	4294967295	utf8	utf8_general_ci	longtext
+3.0000	information_schema	PARAMETERS	ROUTINE_TYPE	varchar	9	27	utf8	utf8_general_ci	varchar(9)
 3.0000	information_schema	PARTITIONS	TABLE_CATALOG	varchar	512	1536	utf8	utf8_general_ci	varchar(512)
 3.0000	information_schema	PARTITIONS	TABLE_SCHEMA	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	PARTITIONS	TABLE_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
@@ -487,7 +533,7 @@ NULL	information_schema	KEY_COLUMN_USAGE
 3.0000	information_schema	PARTITIONS	SUBPARTITION_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 NULL	information_schema	PARTITIONS	PARTITION_ORDINAL_POSITION	bigint	NULL	NULL	NULL	NULL	bigint(21) unsigned
 NULL	information_schema	PARTITIONS	SUBPARTITION_ORDINAL_POSITION	bigint	NULL	NULL	NULL	NULL	bigint(21) unsigned
-3.0000	information_schema	PARTITIONS	PARTITION_METHOD	varchar	12	36	utf8	utf8_general_ci	varchar(12)
+3.0000	information_schema	PARTITIONS	PARTITION_METHOD	varchar	18	54	utf8	utf8_general_ci	varchar(18)
 3.0000	information_schema	PARTITIONS	SUBPARTITION_METHOD	varchar	12	36	utf8	utf8_general_ci	varchar(12)
 1.0000	information_schema	PARTITIONS	PARTITION_EXPRESSION	longtext	4294967295	4294967295	utf8	utf8_general_ci	longtext
 1.0000	information_schema	PARTITIONS	SUBPARTITION_EXPRESSION	longtext	4294967295	4294967295	utf8	utf8_general_ci	longtext
@@ -539,7 +585,14 @@ NULL	information_schema	PROCESSLIST	TIME
 3.0000	information_schema	ROUTINES	ROUTINE_SCHEMA	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	ROUTINES	ROUTINE_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	ROUTINES	ROUTINE_TYPE	varchar	9	27	utf8	utf8_general_ci	varchar(9)
-3.0000	information_schema	ROUTINES	DTD_IDENTIFIER	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	ROUTINES	DATA_TYPE	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+NULL	information_schema	ROUTINES	CHARACTER_MAXIMUM_LENGTH	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	ROUTINES	CHARACTER_OCTET_LENGTH	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	ROUTINES	NUMERIC_PRECISION	int	NULL	NULL	NULL	NULL	int(21)
+NULL	information_schema	ROUTINES	NUMERIC_SCALE	int	NULL	NULL	NULL	NULL	int(21)
+3.0000	information_schema	ROUTINES	CHARACTER_SET_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	ROUTINES	COLLATION_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+1.0000	information_schema	ROUTINES	DTD_IDENTIFIER	longtext	4294967295	4294967295	utf8	utf8_general_ci	longtext
 3.0000	information_schema	ROUTINES	ROUTINE_BODY	varchar	8	24	utf8	utf8_general_ci	varchar(8)
 1.0000	information_schema	ROUTINES	ROUTINE_DEFINITION	longtext	4294967295	4294967295	utf8	utf8_general_ci	longtext
 3.0000	information_schema	ROUTINES	EXTERNAL_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
@@ -552,7 +605,7 @@ NULL	information_schema	PROCESSLIST	TIME
 NULL	information_schema	ROUTINES	CREATED	datetime	NULL	NULL	NULL	NULL	datetime
 NULL	information_schema	ROUTINES	LAST_ALTERED	datetime	NULL	NULL	NULL	NULL	datetime
 3.0000	information_schema	ROUTINES	SQL_MODE	varchar	8192	24576	utf8	utf8_general_ci	varchar(8192)
-3.0000	information_schema	ROUTINES	ROUTINE_COMMENT	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+1.0000	information_schema	ROUTINES	ROUTINE_COMMENT	longtext	4294967295	4294967295	utf8	utf8_general_ci	longtext
 3.0000	information_schema	ROUTINES	DEFINER	varchar	77	231	utf8	utf8_general_ci	varchar(77)
 3.0000	information_schema	ROUTINES	CHARACTER_SET_CLIENT	varchar	32	96	utf8	utf8_general_ci	varchar(32)
 3.0000	information_schema	ROUTINES	COLLATION_CONNECTION	varchar	32	96	utf8	utf8_general_ci	varchar(32)
@@ -607,6 +660,15 @@ NULL	information_schema	TABLES	CHECK_TIM
 NULL	information_schema	TABLES	CHECKSUM	bigint	NULL	NULL	NULL	NULL	bigint(21) unsigned
 3.0000	information_schema	TABLES	CREATE_OPTIONS	varchar	255	765	utf8	utf8_general_ci	varchar(255)
 3.0000	information_schema	TABLES	TABLE_COMMENT	varchar	80	240	utf8	utf8_general_ci	varchar(80)
+3.0000	information_schema	TABLESPACES	TABLESPACE_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	TABLESPACES	ENGINE	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	TABLESPACES	TABLESPACE_TYPE	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+3.0000	information_schema	TABLESPACES	LOGFILE_GROUP_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)
+NULL	information_schema	TABLESPACES	EXTENT_SIZE	bigint	NULL	NULL	NULL	NULL	bigint(21) unsigned
+NULL	information_schema	TABLESPACES	AUTOEXTEND_SIZE	bigint	NULL	NULL	NULL	NULL	bigint(21) unsigned
+NULL	information_schema	TABLESPACES	MAXIMUM_SIZE	bigint	NULL	NULL	NULL	NULL	bigint(21) unsigned
+NULL	information_schema	TABLESPACES	NODEGROUP_ID	bigint	NULL	NULL	NULL	NULL	bigint(21) unsigned
+3.0000	information_schema	TABLESPACES	TABLESPACE_COMMENT	varchar	2048	6144	utf8	utf8_general_ci	varchar(2048)
 3.0000	information_schema	TABLE_CONSTRAINTS	CONSTRAINT_CATALOG	varchar	512	1536	utf8	utf8_general_ci	varchar(512)
 3.0000	information_schema	TABLE_CONSTRAINTS	CONSTRAINT_SCHEMA	varchar	64	192	utf8	utf8_general_ci	varchar(64)
 3.0000	information_schema	TABLE_CONSTRAINTS	CONSTRAINT_NAME	varchar	64	192	utf8	utf8_general_ci	varchar(64)

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result	2010-01-15 11:42:15 +0000
@@ -110,7 +110,7 @@ def	mysql	proc	body	11	NULL	NO	longblob	
 def	mysql	proc	body_utf8	20	NULL	YES	longblob	4294967295	4294967295	NULL	NULL	NULL	NULL	longblob				
 def	mysql	proc	character_set_client	17	NULL	YES	char	32	96	NULL	NULL	utf8	utf8_bin	char(32)				
 def	mysql	proc	collation_connection	18	NULL	YES	char	32	96	NULL	NULL	utf8	utf8_bin	char(32)				
-def	mysql	proc	comment	16		NO	char	64	192	NULL	NULL	utf8	utf8_bin	char(64)				
+def	mysql	proc	comment	16	NULL	NO	text	65535	65535	NULL	NULL	utf8	utf8_bin	text				
 def	mysql	proc	created	13	CURRENT_TIMESTAMP	NO	timestamp	NULL	NULL	NULL	NULL	NULL	NULL	timestamp		on update CURRENT_TIMESTAMP		
 def	mysql	proc	db	1		NO	char	64	192	NULL	NULL	utf8	utf8_bin	char(64)	PRI			
 def	mysql	proc	db_collation	19	NULL	YES	char	32	96	NULL	NULL	utf8	utf8_bin	char(32)				
@@ -130,7 +130,7 @@ def	mysql	procs_priv	Db	2		NO	char	64	19
 def	mysql	procs_priv	Grantor	6		NO	char	77	231	NULL	NULL	utf8	utf8_bin	char(77)	MUL			
 def	mysql	procs_priv	Host	1		NO	char	60	180	NULL	NULL	utf8	utf8_bin	char(60)	PRI			
 def	mysql	procs_priv	Proc_priv	7		NO	set	27	81	NULL	NULL	utf8	utf8_general_ci	set('Execute','Alter Routine','Grant')				
-def	mysql	procs_priv	Routine_name	4		NO	char	64	192	NULL	NULL	utf8	utf8_bin	char(64)	PRI			
+def	mysql	procs_priv	Routine_name	4		NO	char	64	192	NULL	NULL	utf8	utf8_general_ci	char(64)	PRI			
 def	mysql	procs_priv	Routine_type	5	NULL	NO	enum	9	27	NULL	NULL	utf8	utf8_bin	enum('FUNCTION','PROCEDURE')	PRI			
 def	mysql	procs_priv	Timestamp	8	CURRENT_TIMESTAMP	NO	timestamp	NULL	NULL	NULL	NULL	NULL	NULL	timestamp		on update CURRENT_TIMESTAMP		
 def	mysql	procs_priv	User	3		NO	char	16	48	NULL	NULL	utf8	utf8_bin	char(16)	PRI			
@@ -180,6 +180,7 @@ def	mysql	user	Alter_priv	17	N	NO	enum	1
 def	mysql	user	Alter_routine_priv	28	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Create_priv	8	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Create_routine_priv	27	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
+def	mysql	user	Create_tablespace_priv	32	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Create_tmp_table_priv	20	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Create_user_priv	29	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Create_view_priv	25	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
@@ -193,10 +194,10 @@ def	mysql	user	Host	1		NO	char	60	180	NU
 def	mysql	user	Index_priv	16	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Insert_priv	5	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Lock_tables_priv	21	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
-def	mysql	user	max_connections	38	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(11) unsigned				
-def	mysql	user	max_questions	36	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(11) unsigned				
-def	mysql	user	max_updates	37	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(11) unsigned				
-def	mysql	user	max_user_connections	39	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(11) unsigned				
+def	mysql	user	max_connections	39	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(11) unsigned				
+def	mysql	user	max_questions	37	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(11) unsigned				
+def	mysql	user	max_updates	38	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(11) unsigned				
+def	mysql	user	max_user_connections	40	0	NO	int	NULL	NULL	10	0	NULL	NULL	int(11) unsigned				
 def	mysql	user	Password	3		NO	char	41	41	NULL	NULL	latin1	latin1_bin	char(41)				
 def	mysql	user	Process_priv	12	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	References_priv	15	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
@@ -207,14 +208,14 @@ def	mysql	user	Select_priv	4	N	NO	enum	1
 def	mysql	user	Show_db_priv	18	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Show_view_priv	26	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Shutdown_priv	11	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
-def	mysql	user	ssl_cipher	33	NULL	NO	blob	65535	65535	NULL	NULL	NULL	NULL	blob				
-def	mysql	user	ssl_type	32		NO	enum	9	27	NULL	NULL	utf8	utf8_general_ci	enum('','ANY','X509','SPECIFIED')				
+def	mysql	user	ssl_cipher	34	NULL	NO	blob	65535	65535	NULL	NULL	NULL	NULL	blob				
+def	mysql	user	ssl_type	33		NO	enum	9	27	NULL	NULL	utf8	utf8_general_ci	enum('','ANY','X509','SPECIFIED')				
 def	mysql	user	Super_priv	19	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Trigger_priv	31	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	Update_priv	6	N	NO	enum	1	3	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')				
 def	mysql	user	User	2		NO	char	16	48	NULL	NULL	utf8	utf8_bin	char(16)	PRI			
-def	mysql	user	x509_issuer	34	NULL	NO	blob	65535	65535	NULL	NULL	NULL	NULL	blob				
-def	mysql	user	x509_subject	35	NULL	NO	blob	65535	65535	NULL	NULL	NULL	NULL	blob				
+def	mysql	user	x509_issuer	35	NULL	NO	blob	65535	65535	NULL	NULL	NULL	NULL	blob				
+def	mysql	user	x509_subject	36	NULL	NO	blob	65535	65535	NULL	NULL	NULL	NULL	blob				
 ##########################################################################
 # Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
 ##########################################################################
@@ -233,6 +234,7 @@ COL_CML	DATA_TYPE	CHARACTER_SET_NAME	COL
 1.0000	char	latin1	latin1_bin
 1.0000	char	latin1	latin1_swedish_ci
 1.0000	varchar	latin1	latin1_swedish_ci
+1.0000	text	utf8	utf8_bin
 1.0000	mediumtext	utf8	utf8_general_ci
 1.0000	text	utf8	utf8_general_ci
 SELECT DISTINCT
@@ -403,7 +405,7 @@ NULL	mysql	ndb_binlog_index	schemaops	bi
 NULL	mysql	proc	created	timestamp	NULL	NULL	NULL	NULL	timestamp
 NULL	mysql	proc	modified	timestamp	NULL	NULL	NULL	NULL	timestamp
 3.0000	mysql	proc	sql_mode	set	478	1434	utf8	utf8_general_ci	set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
-3.0000	mysql	proc	comment	char	64	192	utf8	utf8_bin	char(64)
+1.0000	mysql	proc	comment	text	65535	65535	utf8	utf8_bin	text
 3.0000	mysql	proc	character_set_client	char	32	96	utf8	utf8_bin	char(32)
 3.0000	mysql	proc	collation_connection	char	32	96	utf8	utf8_bin	char(32)
 3.0000	mysql	proc	db_collation	char	32	96	utf8	utf8_bin	char(32)
@@ -411,7 +413,7 @@ NULL	mysql	proc	modified	timestamp	NULL	
 3.0000	mysql	procs_priv	Host	char	60	180	utf8	utf8_bin	char(60)
 3.0000	mysql	procs_priv	Db	char	64	192	utf8	utf8_bin	char(64)
 3.0000	mysql	procs_priv	User	char	16	48	utf8	utf8_bin	char(16)
-3.0000	mysql	procs_priv	Routine_name	char	64	192	utf8	utf8_bin	char(64)
+3.0000	mysql	procs_priv	Routine_name	char	64	192	utf8	utf8_general_ci	char(64)
 3.0000	mysql	procs_priv	Routine_type	enum	9	27	utf8	utf8_bin	enum('FUNCTION','PROCEDURE')
 3.0000	mysql	procs_priv	Grantor	char	77	231	utf8	utf8_bin	char(77)
 3.0000	mysql	procs_priv	Proc_priv	set	27	81	utf8	utf8_general_ci	set('Execute','Alter Routine','Grant')
@@ -489,6 +491,7 @@ NULL	mysql	time_zone_transition_type	Is_
 3.0000	mysql	user	Create_user_priv	enum	1	3	utf8	utf8_general_ci	enum('N','Y')
 3.0000	mysql	user	Event_priv	enum	1	3	utf8	utf8_general_ci	enum('N','Y')
 3.0000	mysql	user	Trigger_priv	enum	1	3	utf8	utf8_general_ci	enum('N','Y')
+3.0000	mysql	user	Create_tablespace_priv	enum	1	3	utf8	utf8_general_ci	enum('N','Y')
 3.0000	mysql	user	ssl_type	enum	9	27	utf8	utf8_general_ci	enum('','ANY','X509','SPECIFIED')
 1.0000	mysql	user	ssl_cipher	blob	65535	65535	NULL	NULL	blob
 1.0000	mysql	user	x509_issuer	blob	65535	65535	NULL	NULL	blob

=== modified file 'mysql-test/suite/funcs_1/r/is_routines.result'
--- a/mysql-test/suite/funcs_1/r/is_routines.result	2009-11-02 11:10:04 +0000
+++ b/mysql-test/suite/funcs_1/r/is_routines.result	2010-01-15 11:42:15 +0000
@@ -33,7 +33,14 @@ ROUTINE_CATALOG	varchar(512)	NO			
 ROUTINE_SCHEMA	varchar(64)	NO			
 ROUTINE_NAME	varchar(64)	NO			
 ROUTINE_TYPE	varchar(9)	NO			
-DTD_IDENTIFIER	varchar(64)	YES		NULL	
+DATA_TYPE	varchar(64)	NO			
+CHARACTER_MAXIMUM_LENGTH	int(21)	YES		NULL	
+CHARACTER_OCTET_LENGTH	int(21)	YES		NULL	
+NUMERIC_PRECISION	int(21)	YES		NULL	
+NUMERIC_SCALE	int(21)	YES		NULL	
+CHARACTER_SET_NAME	varchar(64)	YES		NULL	
+COLLATION_NAME	varchar(64)	YES		NULL	
+DTD_IDENTIFIER	longtext	YES		NULL	
 ROUTINE_BODY	varchar(8)	NO			
 ROUTINE_DEFINITION	longtext	YES		NULL	
 EXTERNAL_NAME	varchar(64)	YES		NULL	
@@ -59,7 +66,14 @@ ROUTINES	CREATE TEMPORARY TABLE `ROUTINE
   `ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
   `ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
   `ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '',
-  `DTD_IDENTIFIER` varchar(64) DEFAULT NULL,
+  `DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
+  `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL,
+  `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL,
+  `NUMERIC_PRECISION` int(21) DEFAULT NULL,
+  `NUMERIC_SCALE` int(21) DEFAULT NULL,
+  `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
+  `COLLATION_NAME` varchar(64) DEFAULT NULL,
+  `DTD_IDENTIFIER` longtext,
   `ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
   `ROUTINE_DEFINITION` longtext,
   `EXTERNAL_NAME` varchar(64) DEFAULT NULL,
@@ -85,7 +99,14 @@ ROUTINE_CATALOG	varchar(512)	NO			
 ROUTINE_SCHEMA	varchar(64)	NO			
 ROUTINE_NAME	varchar(64)	NO			
 ROUTINE_TYPE	varchar(9)	NO			
-DTD_IDENTIFIER	varchar(64)	YES		NULL	
+DATA_TYPE	varchar(64)	NO			
+CHARACTER_MAXIMUM_LENGTH	int(21)	YES		NULL	
+CHARACTER_OCTET_LENGTH	int(21)	YES		NULL	
+NUMERIC_PRECISION	int(21)	YES		NULL	
+NUMERIC_SCALE	int(21)	YES		NULL	
+CHARACTER_SET_NAME	varchar(64)	YES		NULL	
+COLLATION_NAME	varchar(64)	YES		NULL	
+DTD_IDENTIFIER	longtext	YES		NULL	
 ROUTINE_BODY	varchar(8)	NO			
 ROUTINE_DEFINITION	longtext	YES		NULL	
 EXTERNAL_NAME	varchar(64)	YES		NULL	
@@ -164,16 +185,16 @@ GRANT EXECUTE ON db_datadict_2.* TO 'tes
 FLUSH PRIVILEGES;
 # Establish connection testuser1 (user=testuser1)
 SELECT * FROM information_schema.routines;
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-sp_6_408002_1	def	db_datadict	sp_6_408002_1	PROCEDURE	NULL	SQL	NULL	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	YYYY-MM-DD hh:mm:ss	YYYY-MM-DD hh:mm:ss			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
-sp_6_408002_2	def	db_datadict_2	sp_6_408002_2	PROCEDURE	NULL	SQL	NULL	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	YYYY-MM-DD hh:mm:ss	YYYY-MM-DD hh:mm:ss			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+sp_6_408002_1	def	db_datadict	sp_6_408002_1	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	NULL	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	YYYY-MM-DD hh:mm:ss	YYYY-MM-DD hh:mm:ss			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+sp_6_408002_2	def	db_datadict_2	sp_6_408002_2	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	NULL	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	YYYY-MM-DD hh:mm:ss	YYYY-MM-DD hh:mm:ss			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
 # Establish connection testuser2 (user=testuser2)
 SELECT * FROM information_schema.routines;
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
-sp_6_408002_2	def	db_datadict_2	sp_6_408002_2	PROCEDURE	NULL	SQL	NULL	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	YYYY-MM-DD hh:mm:ss	YYYY-MM-DD hh:mm:ss			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+sp_6_408002_2	def	db_datadict_2	sp_6_408002_2	PROCEDURE		NULL	NULL	NULL	NULL	NULL	NULL	NULL	SQL	NULL	NULL	NULL	SQL	NO	CONTAINS SQL	NULL	DEFINER	YYYY-MM-DD hh:mm:ss	YYYY-MM-DD hh:mm:ss			root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
 # Establish connection testuser3 (user=testuser3)
 SELECT * FROM information_schema.routines;
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
 # Switch to connection default and close connections testuser1,testuser2,testuser3
 DROP USER 'testuser1'@'localhost';
 DROP USER 'testuser2'@'localhost';
@@ -187,7 +208,7 @@ DROP DATABASE db_datadict_2;
 DROP DATABASE IF EXISTS db_datadict;
 CREATE DATABASE db_datadict;
 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
 USE db_datadict;
 CREATE PROCEDURE sp_for_routines()      SELECT 'db_datadict';
 CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
@@ -198,6 +219,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_datadict
 ROUTINE_NAME	function_for_routines
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	int(11)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	RETURN 0
@@ -221,6 +249,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_datadict
 ROUTINE_NAME	sp_for_routines
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	SELECT 'db_datadict'
@@ -248,6 +283,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_datadict
 ROUTINE_NAME	function_for_routines
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	int(11)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	RETURN 0
@@ -271,6 +313,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_datadict
 ROUTINE_NAME	sp_for_routines
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	SELECT 'db_datadict'
@@ -292,7 +341,7 @@ DATABASE_COLLATION	latin1_swedish_ci
 DROP PROCEDURE sp_for_routines;
 DROP FUNCTION function_for_routines;
 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
 CREATE PROCEDURE sp_for_routines()      SELECT 'db_datadict';
 CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
@@ -302,6 +351,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_datadict
 ROUTINE_NAME	function_for_routines
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	int
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	10
+NUMERIC_SCALE	0
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	int(11)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	RETURN 0
@@ -325,6 +381,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_datadict
 ROUTINE_NAME	sp_for_routines
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	SELECT 'db_datadict'
@@ -346,7 +409,7 @@ DATABASE_COLLATION	latin1_swedish_ci
 use test;
 DROP DATABASE db_datadict;
 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
-SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
+SPECIFIC_NAME	ROUTINE_CATALOG	ROUTINE_SCHEMA	ROUTINE_NAME	ROUTINE_TYPE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	CHARACTER_SET_NAME	COLLATION_NAME	DTD_IDENTIFIER	ROUTINE_BODY	ROUTINE_DEFINITION	EXTERNAL_NAME	EXTERNAL_LANGUAGE	PARAMETER_STYLE	IS_DETERMINISTIC	SQL_DATA_ACCESS	SQL_PATH	SECURITY_TYPE	CREATED	LAST_ALTERED	SQL_MODE	ROUTINE_COMMENT	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
 #########################################################################
 # 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
 #          ROUTINE_DEFINITION column
@@ -490,6 +553,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_datadict
 ROUTINE_NAME	sp_6_408004
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN

=== modified file 'mysql-test/suite/funcs_1/r/is_tables_is.result'
--- a/mysql-test/suite/funcs_1/r/is_tables_is.result	2009-12-07 12:22:51 +0000
+++ b/mysql-test/suite/funcs_1/r/is_tables_is.result	2010-01-15 11:42:15 +0000
@@ -268,6 +268,29 @@ user_comment	
 Separator	-----------------------------------------------------
 TABLE_CATALOG	def
 TABLE_SCHEMA	information_schema
+TABLE_NAME	PARAMETERS
+TABLE_TYPE	SYSTEM VIEW
+ENGINE	MyISAM
+VERSION	10
+ROW_FORMAT	Dynamic
+TABLE_ROWS	#TBLR#
+AVG_ROW_LENGTH	#ARL#
+DATA_LENGTH	#DL#
+MAX_DATA_LENGTH	#MDL#
+INDEX_LENGTH	#IL#
+DATA_FREE	#DF#
+AUTO_INCREMENT	NULL
+CREATE_TIME	#CRT#
+UPDATE_TIME	#UT#
+CHECK_TIME	#CT#
+TABLE_COLLATION	utf8_general_ci
+CHECKSUM	NULL
+CREATE_OPTIONS	#CO#
+TABLE_COMMENT	#TC#
+user_comment	
+Separator	-----------------------------------------------------
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
 TABLE_NAME	PARTITIONS
 TABLE_TYPE	SYSTEM VIEW
 ENGINE	MyISAM
@@ -929,6 +952,29 @@ user_comment	
 Separator	-----------------------------------------------------
 TABLE_CATALOG	def
 TABLE_SCHEMA	information_schema
+TABLE_NAME	PARAMETERS
+TABLE_TYPE	SYSTEM VIEW
+ENGINE	MyISAM
+VERSION	10
+ROW_FORMAT	Dynamic
+TABLE_ROWS	#TBLR#
+AVG_ROW_LENGTH	#ARL#
+DATA_LENGTH	#DL#
+MAX_DATA_LENGTH	#MDL#
+INDEX_LENGTH	#IL#
+DATA_FREE	#DF#
+AUTO_INCREMENT	NULL
+CREATE_TIME	#CRT#
+UPDATE_TIME	#UT#
+CHECK_TIME	#CT#
+TABLE_COLLATION	utf8_general_ci
+CHECKSUM	NULL
+CREATE_OPTIONS	#CO#
+TABLE_COMMENT	#TC#
+user_comment	
+Separator	-----------------------------------------------------
+TABLE_CATALOG	def
+TABLE_SCHEMA	information_schema
 TABLE_NAME	PARTITIONS
 TABLE_TYPE	SYSTEM VIEW
 ENGINE	MyISAM

=== modified file 'mysql-test/suite/funcs_1/r/memory_storedproc_08.result'
--- a/mysql-test/suite/funcs_1/r/memory_storedproc_08.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/suite/funcs_1/r/memory_storedproc_08.result	2010-01-15 11:42:15 +0000
@@ -110,6 +110,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -137,6 +144,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -164,6 +178,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -189,6 +210,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -328,6 +356,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -355,6 +390,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -382,6 +424,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -407,6 +456,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -539,6 +595,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -566,6 +629,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -593,6 +663,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -618,6 +695,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN

=== modified file 'mysql-test/suite/funcs_1/r/myisam_storedproc_08.result'
--- a/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result	2010-01-15 11:42:15 +0000
@@ -110,6 +110,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -137,6 +144,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -164,6 +178,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -189,6 +210,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -328,6 +356,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -355,6 +390,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -382,6 +424,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -407,6 +456,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -539,6 +595,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -566,6 +629,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -593,6 +663,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -618,6 +695,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN

=== modified file 'mysql-test/suite/funcs_1/r/ndb_storedproc_08.result'
--- a/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result	2009-10-23 11:02:20 +0000
+++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result	2010-01-15 11:42:15 +0000
@@ -109,6 +109,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -136,6 +143,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -163,6 +177,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -188,6 +209,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -327,6 +355,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -354,6 +389,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -381,6 +423,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -406,6 +455,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -538,6 +594,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_1
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -565,6 +628,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	fn_2
 ROUTINE_TYPE	FUNCTION
+DATA_TYPE	year
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	year(4)
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -592,6 +662,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_1
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN
@@ -617,6 +694,13 @@ ROUTINE_CATALOG	def
 ROUTINE_SCHEMA	db_storedproc
 ROUTINE_NAME	sp_2
 ROUTINE_TYPE	PROCEDURE
+DATA_TYPE	
+CHARACTER_MAXIMUM_LENGTH	NULL
+CHARACTER_OCTET_LENGTH	NULL
+NUMERIC_PRECISION	NULL
+NUMERIC_SCALE	NULL
+CHARACTER_SET_NAME	NULL
+COLLATION_NAME	NULL
 DTD_IDENTIFIER	NULL
 ROUTINE_BODY	SQL
 ROUTINE_DEFINITION	BEGIN

=== modified file 'mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc'
--- a/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc	2009-02-13 18:07:56 +0000
+++ b/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc	2010-01-15 11:42:15 +0000
@@ -8,7 +8,7 @@
 
 --vertical_results
 
---replace_column 16 <modified> 17 <created>
+--replace_column 23 <modified> 24 <created>
 SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc';
 
 

=== added file 'mysql-test/t/information_schema_parameters.test'
--- a/mysql-test/t/information_schema_parameters.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/information_schema_parameters.test	2010-01-15 11:42:15 +0000
@@ -0,0 +1,251 @@
+#------------------------------------------------------------------------------
+# i_s_parameters.test
+# .test file for MySQL regression suite
+# Purpose:  To test the presence, structure, and behavior
+#                    of INFORMATION_SCHEMA.PARAMETERS
+# Author:  pcrews
+# Last modified:  2007-12-03
+#------------------------------------------------------------------------------
+
+###############################################################################
+# Testcase parameters.1: Verify INFORMATION_SCHEMA.PARAMETERS view has the
+#                    following structure:
+#  SPECIFIC_CATALOG                         NULL
+#  SPECIFIC_SCHEMA                          routine's database
+#  SPECIFIC_NAME                            routine's name
+#  ORDINAL_POSITION                         first stored routine parameter is 1,
+#                                           always 0 for stored function RETURN
+#  PARAMETER_MODE                           'IN' or 'OUT' or 'INOUT'
+#  PARAMETER_NAME                           the parameter's name
+#  DATA_TYPE                                same as for COLUMNS
+#  CHARACTER_MAXIMUM_LENGTH                 same as for COLUMNS
+#  CHARACTER_OCTET_LENGTH                   same as for COLUMNS
+#  CHARACTER_SET_NAME                       same as for COLUMNS
+#  COLLATION_NAME                           same as for COLUMNS
+#  NUMERIC_PRECISION                        same as for COLUMNS
+#  NUMERIC_SCALE                            same as for COLUMNS
+#  DTD_IDENTIFIER                           same as for PARAMETERS
+###############################################################################
+-- echo # ========== parameters.1 ==========
+USE INFORMATION_SCHEMA;
+--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+SHOW CREATE TABLE INFORMATION_SCHEMA.PARAMETERS;
+
+# embedded server does not display privileges
+--replace_column 18 #
+query_vertical SELECT * FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+  AND table_name   = 'parameters'
+ORDER BY ordinal_position;
+
+DESCRIBE INFORMATION_SCHEMA.PARAMETERS;
+
+###############################################################################
+# Testcase parameters.2:  Unsuccessful stored procedure CREATE will not populate
+#                     I_S.PARAMETERS view
+###############################################################################
+-- echo # ========== parameters.2 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+# Missing closing ')' character at the end of 's char(20) in func declaration
+--error ER_PARSE_ERROR
+CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+
+###############################################################################
+# Testcase parameters.3:  DROP FUNCTION - Verify DROP of a stored procedure
+#                                     removes I_S.PARAMETERS data for that
+#                                     function / procedure
+###############################################################################
+-- echo # ========== parameters.3 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+DROP FUNCTION test_func1;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+
+###############################################################################
+# Testcase parameters.4:  CREATE PROCEDURE - IN
+###############################################################################
+-- echo # ========== parameters.4 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+delimiter //;
+CREATE PROCEDURE testproc (OUT param1 INT)
+  BEGIN
+   SELECT 2+2 as param1;
+  END;
+//
+delimiter ;//
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'testproc';
+
+
+###############################################################################
+# Testcase parameters.5:  CREATE PROCEDURE - INOUT
+###############################################################################
+-- echo # ========== parameters.5 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE PROCEDURE test_proc(INOUT P INT) SET @x=P*2;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc';
+
+###############################################################################
+# Testcase parameters.6:  CREATE PROCEDURE - OUT
+###############################################################################
+-- echo # ========== parameters.6 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE PROCEDURE test_proc(OUT p VARCHAR(10)) SET P='test';
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc';
+
+###############################################################################
+# Testcase parameters.7:  CREATE FUNCTION - ORDINAL POSITION
+#                     Verify proper behavior for several aspects here
+#                     3 rows should be created -- 1 for each IN parameter
+#                                                 1 for the RETURNS param
+#                     ORDINAL POSITION values should be 0 for RETURNS
+#                                             1 and 2 for IN parameters
+#                     PARAM NAME and MODE should = NULL for RETURNS parm
+###############################################################################
+-- echo # ========== parameters.7 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func1 (s char(20), t char(20)) RETURNS CHAR(40)
+RETURN CONCAT(s,t);
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+
+###############################################################################
+# Testcase parameters.8:  CREATE FUNCTION - CHAR parameters
+#                     Verify CHAR related columns are populated for such a
+#                     parameter -- NUMERIC columns should be NULL
+###############################################################################
+-- echo # ========== parameters.8 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1';
+
+###############################################################################
+# Testcase parameters.9:  CREATE FUNCTION - NUMERIC parameters
+#                     Verify NUMERIC related columns are populated for such
+#                     parameter -- CHAR columns should be NULL
+###############################################################################
+-- echo # ========== parameters.9 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func2';
+
+###############################################################################
+# Testcase parameters.10:  CREATE FUNCTION - DATE
+#                     Verify NUMERIC and CHAR related columns are NULL
+###############################################################################
+-- echo # ========== parameters.10 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+
+###############################################################################
+# Testcase parameters.11:  ALTER FUNCTION
+#                     Quick check to ensure ALTER doesn't affect this view
+#                     Should have no effect -- comment visible in ROUTINES
+#                     tested in i_s_routines.test
+###############################################################################
+-- echo # ========== parameters.11 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+ALTER FUNCTION test_func5 COMMENT 'new comment added';
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+
+###############################################################################
+# Testcase parameters.12:  MULTI-BYTE CHAR SETS
+#                     Verify that CHAR_MAX_LENGTH and CHAR_OCTET_LENGTH
+#                     differ as expected for multi-byte char sets
+#                     Normally both values are equal
+###############################################################################
+-- echo # ========== parameters.12 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_parameters_test;
+--enable_warnings
+
+CREATE DATABASE i_s_parameters_test CHARACTER SET  utf8;
+USE i_s_parameters_test;
+
+CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30)
+RETURN CONCAT('XYZ, ' ,s);
+SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
+WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5';
+
+# Cleanup
+DROP DATABASE i_s_parameters_test;

=== added file 'mysql-test/t/information_schema_routines.test'
--- a/mysql-test/t/information_schema_routines.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/information_schema_routines.test	2010-01-15 11:42:15 +0000
@@ -0,0 +1,247 @@
+#------------------------------------------------------------------------------
+# i_s_routines.test
+# .test file for MySQL regression suite
+# Purpose:  To test the presence, structure, and behavior
+#                    of INFORMATION_SCHEMA.ROUTINES
+# Author:  pcrews
+# Last modified:  2007-12-04
+#------------------------------------------------------------------------------
+
+################################################################################
+# Testcase routines.1: Ensure that the INFORMATION_SCHEMA.ROUTINES
+#                   table has the following columns, in the following order:
+#
+#                   SPECIFIC_NAME (shows the name of an accessible stored
+#                          procedure, or routine),
+#                   ROUTINE_CATALOG (always shows NULL),
+#                   ROUTINE_SCHEMA (shows the database, or schema, in which
+#                          the routine resides),
+#                   ROUTINE_NAME (shows the same stored procedure name),
+#                   ROUTINE_TYPE (shows whether the stored procedure is a
+#                          procedure or a function),
+#                   DATA_TYPE (new column as of 6.0)
+#                   CHARACTER_MAXIMUM_LENGTH  (new column as of 6.0)
+#                   CHARACTER_OCTET_LENGTH  (new column as of 6.0)
+#                   NUMERIC_PRECISION  (new column as of 6.0)
+#                   NUMERIC_SCALE  (new column as of 6.0)
+#                   CHARACTER_SET_NAME  (new column as of 6.0)
+#                   COLLATION_NAME  (new column as of 6.0)
+#                   DTD_IDENTIFIER (shows, for a function, the complete
+#                          data type definition of the value the function will
+#                          return; otherwise NULL),
+#                   ROUTINE_BODY (shows the language in which the stored
+#                          procedure is written; currently always SQL),
+#                   ROUTINE_DEFINITION (shows as much of the routine body as
+#                          is possible in the allotted space),
+#                   EXTERNAL_NAME (always shows NULL),
+#                   EXTERNAL_LANGUAGE (always shows NULL),
+#                   PARAMETER_STYLE (shows the routine's parameter style;
+#                          always SQL),
+#                   IS_DETERMINISTIC (shows whether the routine is
+#                          deterministic),
+#                   SQL_DATA_ACCESS (shows the routine's defined
+#                          sql-data-access clause value),
+#                   SQL_PATH (always shows NULL),
+#                   SECURITY_TYPE (shows whether the routine's defined
+#                          security_type is 'definer' or 'invoker'),
+#                   CREATED (shows the timestamp of the time the routine was
+#                          created),
+#                   LAST_ALTERED (shows the timestamp of the time the routine
+#                          was last altered),
+#                   SQL_MODE (shows the sql_mode setting at the time the
+#                          routine was created),
+#                   ROUTINE_COMMENT (shows the comment, if any, defined for
+#                          the routine; otherwise NULL),
+#                   DEFINER (shows the user who created the routine).
+################################################################################
+-- echo # ========== routines.1 ==========
+USE INFORMATION_SCHEMA;
+--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+SHOW CREATE TABLE INFORMATION_SCHEMA.ROUTINES;
+
+# embedded server does not display privileges
+--replace_column 18 #
+query_vertical SELECT * FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+  AND table_name   = 'routines'
+ORDER BY ordinal_position;
+
+DESCRIBE INFORMATION_SCHEMA.ROUTINES;
+
+###############################################################################
+# Testcase routines.2:  Unsuccessful stored procedure CREATE will not populate
+#                     I_S.ROUTINES view
+###############################################################################
+-- echo # ========== routines.2 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+# Missing closing ')' character at the end of 's char(20) in func declaration
+--error ER_PARSE_ERROR
+CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50)
+RETURN CONCAT('Hello', ,s,'!');
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+
+###############################################################################
+# Testcase routines.3:  DROP FUNCTION - Verify DROP of a stored procedure
+#                                     removes I_S.PARAMETERS data for that
+#                                     function / procedure
+###############################################################################
+-- echo # ========== routines.3 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+DROP FUNCTION test_func1;
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+
+
+################################################################################
+# Testcase routines.4:  Verify that the new columns from WL#2822 are NULL for a
+#                    stored procedure
+################################################################################
+-- echo # ========== routines.4 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+delimiter //;
+CREATE PROCEDURE testproc (OUT param1 INT)
+  BEGIN
+   SELECT 2+2 as param1;
+  END;
+//
+delimiter ;//
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'testproc';
+
+
+################################################################################
+# Testcase routines.5:  Verify that the new columns from WL#2822 are populated
+#                    for a stored function, that the NUMERIC columns
+#                    are not populated when the function returns non-numeric
+#                    data, and that the CHARACTER columns are populated
+#                    for CHAR functions
+################################################################################
+-- echo # ========== routines.5 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50)
+RETURN CONCAT('Hello, ',s,'!');
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1';
+
+
+
+################################################################################
+# Testcase routines.6:  Verify that the new columns from WL#2822 are populated
+#                    for a stored function, that the CHARACTER columns
+#                    are not populated when the function returns numeric
+#                    data, and that the NUMERIC columns are populated
+#                    for numeric functions
+################################################################################
+-- echo # ========== routines.6 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2;
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func2';
+
+################################################################################
+# Testcase routines.7:  Verify that the new columns from WL#2822 are populated
+#                    for a stored function, that the CHARACTER and NUMERIC
+#                    columns are not populated when the function returns date
+#                    or time data
+################################################################################
+-- echo # ========== routines.7 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+
+###############################################################################
+# Testcase routines.8:  ALTER FUNCTION
+#                     Quick check to ensure ALTER properly updates
+#                     I_S.ROUTINES.COMMENT
+###############################################################################
+-- echo # ========== routines.8 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+CREATE DATABASE i_s_routines_test;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP
+RETURN CURRENT_TIMESTAMP;
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+ALTER FUNCTION test_func5 COMMENT 'new comment added';
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+
+###############################################################################
+# Testcase routines.9:  MULTI-BYTE CHAR SETS
+#                     Verify that CHAR_MAX_LENGTH and CHAR_OCTET_LENGTH
+#                     differ as expected for multi-byte char sets
+#                     Normally both values are equal
+###############################################################################
+-- echo # ========== routines.9 ==========
+--disable_warnings
+DROP DATABASE IF EXISTS i_s_routines_test;
+--enable_warnings
+
+
+CREATE DATABASE i_s_routines_test CHARACTER SET  utf8;
+USE i_s_routines_test;
+
+CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30)
+RETURN CONCAT('XYZ, ' ,s);
+--replace_column 23 <created> 24 <modified>
+SELECT * FROM INFORMATION_SCHEMA.ROUTINES
+WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5';
+
+# final clean up
+DROP DATABASE i_s_routines_test;

=== modified file 'sql/handler.h'
--- a/sql/handler.h	2010-01-07 05:42:07 +0000
+++ b/sql/handler.h	2010-01-15 11:42:15 +0000
@@ -555,6 +555,7 @@ enum enum_schema_tables
   SCH_GLOBAL_VARIABLES,
   SCH_KEY_COLUMN_USAGE,
   SCH_OPEN_TABLES,
+  SCH_PARAMETERS,
   SCH_PARTITIONS,
   SCH_PLUGINS,
   SCH_PROCESSLIST,

=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h	2010-01-11 13:10:51 +0000
+++ b/sql/mysql_priv.h	2010-01-15 11:42:15 +0000
@@ -1318,6 +1318,10 @@ thr_lock_type read_lock_type_for_table(T
 void close_data_files_and_morph_locks(THD *thd, const char *db,
                                       const char *table_name);
 void close_handle_and_leave_table_as_lock(TABLE *table);
+bool open_new_frm(THD *thd, TABLE_SHARE *share, const char *alias,
+                  uint db_stat, uint prgflag,
+                  uint ha_open_flags, TABLE *outparam,
+                  TABLE_LIST *table_desc, MEM_ROOT *mem_root);
 bool wait_for_tables(THD *thd);
 bool table_is_used(TABLE *table, bool wait_for_name_lock);
 TABLE *drop_locked_tables(THD *thd,const char *db, const char *table_name);

=== modified file 'sql/sp.cc'
--- a/sql/sp.cc	2009-12-16 18:02:21 +0000
+++ b/sql/sp.cc	2010-01-15 11:42:15 +0000
@@ -31,7 +31,9 @@ create_string(THD *thd, String *buf,
 	      const char *body, ulong bodylen,
 	      st_sp_chistics *chistics,
               const LEX_STRING *definer_user,
-              const LEX_STRING *definer_host);
+              const LEX_STRING *definer_host,
+              ulong sql_mode);
+
 static int
 db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
                 ulong sql_mode, const char *params, const char *returns,
@@ -39,37 +41,6 @@ db_load_routine(THD *thd, int type, sp_n
                 const char *definer, longlong created, longlong modified,
                 Stored_program_creation_ctx *creation_ctx);
 
-/*
- *
- * DB storage of Stored PROCEDUREs and FUNCTIONs
- *
- */
-
-enum
-{
-  MYSQL_PROC_FIELD_DB = 0,
-  MYSQL_PROC_FIELD_NAME,
-  MYSQL_PROC_MYSQL_TYPE,
-  MYSQL_PROC_FIELD_SPECIFIC_NAME,
-  MYSQL_PROC_FIELD_LANGUAGE,
-  MYSQL_PROC_FIELD_ACCESS,
-  MYSQL_PROC_FIELD_DETERMINISTIC,
-  MYSQL_PROC_FIELD_SECURITY_TYPE,
-  MYSQL_PROC_FIELD_PARAM_LIST,
-  MYSQL_PROC_FIELD_RETURNS,
-  MYSQL_PROC_FIELD_BODY,
-  MYSQL_PROC_FIELD_DEFINER,
-  MYSQL_PROC_FIELD_CREATED,
-  MYSQL_PROC_FIELD_MODIFIED,
-  MYSQL_PROC_FIELD_SQL_MODE,
-  MYSQL_PROC_FIELD_COMMENT,
-  MYSQL_PROC_FIELD_CHARACTER_SET_CLIENT,
-  MYSQL_PROC_FIELD_COLLATION_CONNECTION,
-  MYSQL_PROC_FIELD_DB_COLLATION,
-  MYSQL_PROC_FIELD_BODY_UTF8,
-  MYSQL_PROC_FIELD_COUNT
-};
-
 static const
 TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] =
 {
@@ -716,6 +687,55 @@ Silence_deprecated_warning::handle_condi
 }
 
 
+/**
+  @brief    The function parses input strings and returns SP stucture.
+
+  @param[in]      thd               Thread handler
+  @param[in]      defstr            CREATE... string
+  @param[in]      sql_mode          SQL mode
+  @param[in]      creation_ctx      Creation context of stored routines
+                                    
+  @return     Pointer on sp_head struct
+    @retval   #                     Pointer on sp_head struct
+    @retval   0                     error
+*/
+
+static sp_head *sp_compile(THD *thd, String *defstr, ulong sql_mode,
+                           Stored_program_creation_ctx *creation_ctx)
+{
+  sp_head *sp;
+  ulong old_sql_mode= thd->variables.sql_mode;
+  ha_rows old_select_limit= thd->variables.select_limit;
+  sp_rcontext *old_spcont= thd->spcont;
+  Silence_deprecated_warning warning_handler;
+
+  thd->variables.sql_mode= sql_mode;
+  thd->variables.select_limit= HA_POS_ERROR;
+
+  Parser_state parser_state(thd, defstr->c_ptr(), defstr->length());
+  lex_start(thd);
+  thd->push_internal_handler(&warning_handler);
+  thd->spcont= 0;
+
+  if (parse_sql(thd, & parser_state, creation_ctx) || thd->lex == NULL)
+  {
+    sp= thd->lex->sphead;
+    delete sp;
+    sp= 0;
+  }
+  else
+  {
+    sp= thd->lex->sphead;
+  }
+
+  thd->pop_internal_handler();
+  thd->spcont= old_spcont;
+  thd->variables.sql_mode= old_sql_mode;
+  thd->variables.select_limit= old_select_limit;
+  return sp;
+}
+
+
 static int
 db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
                 ulong sql_mode, const char *params, const char *returns,
@@ -729,11 +749,7 @@ db_load_routine(THD *thd, int type, sp_n
   LEX_STRING saved_cur_db_name=
     { saved_cur_db_name_buf, sizeof(saved_cur_db_name_buf) };
   bool cur_db_changed;
-  ulong old_sql_mode= thd->variables.sql_mode;
-  ha_rows old_select_limit= thd->variables.select_limit;
-  sp_rcontext *old_spcont= thd->spcont;
-  Silence_deprecated_warning warning_handler;
-
+  
   char definer_user_name_holder[USERNAME_LENGTH + 1];
   LEX_STRING definer_user_name= { definer_user_name_holder,
                                   USERNAME_LENGTH };
@@ -741,10 +757,7 @@ db_load_routine(THD *thd, int type, sp_n
   char definer_host_name_holder[HOSTNAME_LENGTH + 1];
   LEX_STRING definer_host_name= { definer_host_name_holder, HOSTNAME_LENGTH };
 
-  int ret;
-
-  thd->variables.sql_mode= sql_mode;
-  thd->variables.select_limit= HA_POS_ERROR;
+  int ret= 0;
 
   thd->lex= &newlex;
   newlex.current_select= NULL;
@@ -768,7 +781,8 @@ db_load_routine(THD *thd, int type, sp_n
                      params, strlen(params),
                      returns, strlen(returns),
                      body, strlen(body),
-                     &chistics, &definer_user_name, &definer_host_name))
+                     &chistics, &definer_user_name, &definer_host_name,
+                     sql_mode))
   {
     ret= SP_INTERNAL_ERROR;
     goto end;
@@ -787,17 +801,8 @@ db_load_routine(THD *thd, int type, sp_n
     goto end;
   }
 
-  thd->spcont= NULL;
-
   {
-    Parser_state parser_state(thd, defstr.c_ptr(), defstr.length());
-
-    lex_start(thd);
-
-    thd->push_internal_handler(&warning_handler);
-    ret= parse_sql(thd, & parser_state, creation_ctx) || newlex.sphead == NULL;
-    thd->pop_internal_handler();
-
+    *sphp= sp_compile(thd, &defstr, sql_mode, creation_ctx);
     /*
       Force switching back to the saved current database (if changed),
       because it may be NULL. In this case, mysql_change_db() would
@@ -806,19 +811,16 @@ db_load_routine(THD *thd, int type, sp_n
 
     if (cur_db_changed && mysql_change_db(thd, &saved_cur_db_name, TRUE))
     {
-      delete newlex.sphead;
       ret= SP_INTERNAL_ERROR;
       goto end;
     }
 
-    if (ret)
+    if (!*sphp)
     {
-      delete newlex.sphead;
       ret= SP_PARSE_ERROR;
       goto end;
     }
 
-    *sphp= newlex.sphead;
     (*sphp)->set_definer(&definer_user_name, &definer_host_name);
     (*sphp)->set_info(created, modified, &chistics, sql_mode);
     (*sphp)->set_creation_ctx(creation_ctx);
@@ -836,9 +838,6 @@ db_load_routine(THD *thd, int type, sp_n
 
 end:
   lex_end(thd->lex);
-  thd->spcont= old_spcont;
-  thd->variables.sql_mode= old_sql_mode;
-  thd->variables.select_limit= old_select_limit;
   thd->lex= old_lex;
   return ret;
 }
@@ -1110,7 +1109,8 @@ sp_create_routine(THD *thd, int type, sp
                          retstr.c_ptr(), retstr.length(),
                          sp->m_body.str, sp->m_body.length,
                          sp->m_chistics, &(thd->lex->definer->user),
-                         &(thd->lex->definer->host)))
+                         &(thd->lex->definer->host),
+                         saved_mode))
       {
         ret= SP_INTERNAL_ERROR;
         goto done;
@@ -2069,6 +2069,7 @@ sp_cache_routines_and_add_tables_for_tri
     Returns TRUE on success, FALSE on (alloc) failure.
 */
 static bool
+
 create_string(THD *thd, String *buf,
               int type,
               const char *db, ulong dblen,
@@ -2078,14 +2079,17 @@ create_string(THD *thd, String *buf,
               const char *body, ulong bodylen,
               st_sp_chistics *chistics,
               const LEX_STRING *definer_user,
-              const LEX_STRING *definer_host)
+              const LEX_STRING *definer_host,
+              ulong sql_mode)
 {
+  ulong old_sql_mode= thd->variables.sql_mode;
   /* Make some room to begin with */
   if (buf->alloc(100 + dblen + 1 + namelen + paramslen + returnslen + bodylen +
 		 chistics->comment.length + 10 /* length of " DEFINER= "*/ +
                  USER_HOST_BUFF_SIZE))
     return FALSE;
 
+  thd->variables.sql_mode= sql_mode;
   buf->append(STRING_WITH_LEN("CREATE "));
   append_definer(thd, buf, definer_user, definer_host);
   if (type == TYPE_ENUM_FUNCTION)
@@ -2133,5 +2137,79 @@ create_string(THD *thd, String *buf,
     buf->append('\n');
   }
   buf->append(body, bodylen);
+  thd->variables.sql_mode= old_sql_mode;
   return TRUE;
 }
+
+
+/**
+  @brief    The function loads sp_head struct for information schema purposes
+            (used for I_S ROUTINES & PARAMETERS tables).
+
+  @param[in]      thd               thread handler
+  @param[in]      proc_table        mysql.proc table structurte
+  @param[in]      db                database name
+  @param[in]      name              sp name
+  @param[in]      sql_mode          SQL mode
+  @param[in]      type              Routine type
+  @param[in]      returns           'returns' string
+  @param[in]      params            parameters definition string
+  @param[out]     free_sp_head      returns 1 if we need to free sp_head struct
+                                    otherwise returns 0
+                                    
+  @return     Pointer on sp_head struct
+    @retval   #                     Pointer on sp_head struct
+    @retval   0                     error
+*/
+
+sp_head *
+sp_load_for_information_schema(THD *thd, TABLE *proc_table, String *db,
+                               String *name, ulong sql_mode, int type,
+                               const char *returns, const char *params,
+                               bool *free_sp_head)
+{
+  const char *sp_body;
+  String defstr;
+  struct st_sp_chistics sp_chistics;
+  const LEX_STRING definer_user= {(char*)STRING_WITH_LEN("")};
+  const LEX_STRING definer_host= {(char*)STRING_WITH_LEN("")}; 
+  LEX_STRING sp_db_str;
+  LEX_STRING sp_name_str;
+  sp_head *sp;
+  sp_cache **spc= ((type == TYPE_ENUM_PROCEDURE) ?
+                  &thd->sp_proc_cache : &thd->sp_func_cache);
+  sp_db_str.str= db->c_ptr();
+  sp_db_str.length= db->length();
+  sp_name_str.str= name->c_ptr();
+  sp_name_str.length= name->length();
+  sp_name sp_name_obj(sp_db_str, sp_name_str, true);
+  sp_name_obj.init_qname(thd);
+  *free_sp_head= 0;
+  if ((sp= sp_cache_lookup(spc, &sp_name_obj)))
+  {
+    return sp;
+  }
+
+  LEX *old_lex= thd->lex, newlex;
+  Stored_program_creation_ctx *creation_ctx= 
+    Stored_routine_creation_ctx::load_from_db(thd, &sp_name_obj, proc_table);
+  sp_body= (type == TYPE_ENUM_FUNCTION ? "RETURN NULL" : "BEGIN END");
+  bzero((char*) &sp_chistics, sizeof(sp_chistics));
+  defstr.set_charset(creation_ctx->get_client_cs());
+  if (!create_string(thd, &defstr, type, 
+                     sp_db_str.str, sp_db_str.length, 
+                     sp_name_obj.m_name.str, sp_name_obj.m_name.length, 
+                     params, strlen(params),
+                     returns, strlen(returns), 
+                     sp_body, strlen(sp_body),
+                     &sp_chistics, &definer_user, &definer_host, sql_mode))
+    return 0;
+
+  thd->lex= &newlex;
+  newlex.current_select= NULL; 
+  sp= sp_compile(thd, &defstr, sql_mode, creation_ctx);
+  *free_sp_head= 1;
+  lex_end(thd->lex);
+  thd->lex= old_lex;
+  return sp;
+}

=== modified file 'sql/sp.h'
--- a/sql/sp.h	2009-11-20 15:18:01 +0000
+++ b/sql/sp.h	2010-01-15 11:42:15 +0000
@@ -34,6 +34,32 @@
 #define SP_BODY_TOO_LONG    -10
 #define SP_FLD_STORE_FAILED -11
 
+/* DB storage of Stored PROCEDUREs and FUNCTIONs */
+enum
+{
+  MYSQL_PROC_FIELD_DB = 0,
+  MYSQL_PROC_FIELD_NAME,
+  MYSQL_PROC_MYSQL_TYPE,
+  MYSQL_PROC_FIELD_SPECIFIC_NAME,
+  MYSQL_PROC_FIELD_LANGUAGE,
+  MYSQL_PROC_FIELD_ACCESS,
+  MYSQL_PROC_FIELD_DETERMINISTIC,
+  MYSQL_PROC_FIELD_SECURITY_TYPE,
+  MYSQL_PROC_FIELD_PARAM_LIST,
+  MYSQL_PROC_FIELD_RETURNS,
+  MYSQL_PROC_FIELD_BODY,
+  MYSQL_PROC_FIELD_DEFINER,
+  MYSQL_PROC_FIELD_CREATED,
+  MYSQL_PROC_FIELD_MODIFIED,
+  MYSQL_PROC_FIELD_SQL_MODE,
+  MYSQL_PROC_FIELD_COMMENT,
+  MYSQL_PROC_FIELD_CHARACTER_SET_CLIENT,
+  MYSQL_PROC_FIELD_COLLATION_CONNECTION,
+  MYSQL_PROC_FIELD_DB_COLLATION,
+  MYSQL_PROC_FIELD_BODY_UTF8,
+  MYSQL_PROC_FIELD_COUNT
+};
+
 /* Drop all routines in database 'db' */
 int
 sp_drop_db_routines(THD *thd, char *db);
@@ -86,4 +112,10 @@ extern "C" uchar* sp_sroutine_key(const 
 */
 TABLE *open_proc_table_for_read(THD *thd, Open_tables_state *backup);
 
+sp_head *
+sp_load_for_information_schema(THD *thd, TABLE *proc_table, String *db,
+                               String *name, ulong sql_mode, int type,
+                               const char *returns, const char *params,
+                               bool *free_sp_head);
+
 #endif /* _SP_H_ */

=== modified file 'sql/sp_head.h'
--- a/sql/sp_head.h	2009-11-20 15:18:01 +0000
+++ b/sql/sp_head.h	2010-01-15 11:42:15 +0000
@@ -469,6 +469,7 @@ public:
       lex->set_stmt_unsafe();
   }
 
+  sp_pcontext *get_parse_context() { return m_pcont; }
 
 private:
 

=== modified file 'sql/sql_base.cc'
--- a/sql/sql_base.cc	2010-01-07 05:42:07 +0000
+++ b/sql/sql_base.cc	2010-01-15 11:42:15 +0000
@@ -108,10 +108,6 @@ static int open_unireg_entry(THD *thd, T
                              char *cache_key, uint cache_key_length,
 			     MEM_ROOT *mem_root, uint flags);
 static void free_cache_entry(TABLE *entry);
-static bool open_new_frm(THD *thd, TABLE_SHARE *share, const char *alias,
-                         uint db_stat, uint prgflag,
-                         uint ha_open_flags, TABLE *outparam,
-                         TABLE_LIST *table_desc, MEM_ROOT *mem_root);
 static void close_old_data_files(THD *thd, TABLE *table, bool morph_locks,
                                  bool send_refresh);
 static bool
@@ -8667,7 +8663,7 @@ int init_ftfuncs(THD *thd, SELECT_LEX *s
     mem_root	  temporary MEM_ROOT for parsing
 */
 
-static bool
+bool
 open_new_frm(THD *thd, TABLE_SHARE *share, const char *alias,
              uint db_stat, uint prgflag,
 	     uint ha_open_flags, TABLE *outparam, TABLE_LIST *table_desc,

=== modified file 'sql/sql_parse.cc'
--- a/sql/sql_parse.cc	2010-01-07 05:42:07 +0000
+++ b/sql/sql_parse.cc	2010-01-15 11:42:15 +0000
@@ -5412,7 +5412,7 @@ check_table_access(THD *thd, ulong requi
     DBUG_PRINT("info", ("derived: %d  view: %d", tables->derived != 0,
                         tables->view != 0));
     if (tables->is_anonymous_derived_table() ||
-        (tables->table && tables->table->s &&
+        (tables->table && (int)tables->table->s &&
          (int)tables->table->s->tmp_table))
       continue;
     thd->security_ctx= sctx;

=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc	2010-01-07 05:42:07 +0000
+++ b/sql/sql_show.cc	2010-01-15 11:42:15 +0000
@@ -22,6 +22,7 @@
 #include "repl_failsafe.h"
 #include "sp.h"
 #include "sp_head.h"
+#include "sp_pcontext.h"
 #include "set_var.h"
 #include "sql_trigger.h"
 #include "authors.h"
@@ -999,20 +1000,21 @@ static void append_directory(THD *thd, S
 
 #define LIST_PROCESS_HOST_LEN 64
 
-static bool get_field_default_value(THD *thd, TABLE *table,
+static bool get_field_default_value(THD *thd, Field *timestamp_field,
                                     Field *field, String *def_value,
                                     bool quoted)
 {
   bool has_default;
   bool has_now_default;
   enum enum_field_types field_type= field->type();
-  /* 
+
+  /*
      We are using CURRENT_TIMESTAMP instead of NOW because it is
      more standard
   */
-  has_now_default= table->timestamp_field == field && 
-    field->unireg_check != Field::TIMESTAMP_UN_FIELD;
-    
+  has_now_default= (timestamp_field == field &&
+                    field->unireg_check != Field::TIMESTAMP_UN_FIELD);
+
   has_default= (field_type != FIELD_TYPE_BLOB &&
                 !(field->flags & NO_DEFAULT_VALUE_FLAG) &&
                 field->unireg_check != Field::NEXT_NUMBER &&
@@ -1065,6 +1067,7 @@ static bool get_field_default_value(THD 
   return has_default;
 }
 
+
 /*
   Build a CREATE TABLE statement for a table.
 
@@ -1214,7 +1217,8 @@ int store_create_info(THD *thd, TABLE_LI
       packet->append(STRING_WITH_LEN(" NULL"));
     }
 
-    if (get_field_default_value(thd, table, field, &def_value, 1))
+    if (get_field_default_value(thd, table->timestamp_field,
+                                field, &def_value, 1))
     {
       packet->append(STRING_WITH_LEN(" DEFAULT "));
       packet->append(def_value.ptr(), def_value.length(), system_charset_info);
@@ -3074,17 +3078,18 @@ uint get_table_open_method(TABLE_LIST *t
                               open_tables function for this table
 */
 
-static int fill_schema_table_from_frm(THD *thd,TABLE *table,
-                                      ST_SCHEMA_TABLE *schema_table, 
+static int fill_schema_table_from_frm(THD *thd, TABLE_LIST *tables,
+                                      ST_SCHEMA_TABLE *schema_table,
                                       LEX_STRING *db_name,
                                       LEX_STRING *table_name,
                                       enum enum_schema_tables schema_table_idx)
 {
+  TABLE *table= tables->table;
   TABLE_SHARE *share;
   TABLE tbl;
   TABLE_LIST table_list;
   uint res= 0;
-  int error;
+  int not_used;
   char key[MAX_DBKEY_LENGTH];
   uint key_length;
   char db_name_buff[NAME_LEN + 1], table_name_buff[NAME_LEN + 1];
@@ -3112,61 +3117,85 @@ static int fill_schema_table_from_frm(TH
     table_list.db= db_name->str;
   }
 
+  if (schema_table->i_s_requested_object & OPEN_TRIGGER_ONLY)
+  {
+    init_sql_alloc(&tbl.mem_root, TABLE_ALLOC_BLOCK_SIZE, 0);
+    if (!Table_triggers_list::check_n_load(thd, db_name->str,
+                                           table_name->str, &tbl, 1))
+    {
+      table_list.table= &tbl;
+      res= schema_table->process_table(thd, &table_list, table,
+                                       res, db_name, table_name);
+      delete tbl.triggers;
+    }
+    free_root(&tbl.mem_root, MYF(0));
+    goto end;
+  }
+
   key_length= create_table_def_key(thd, key, &table_list, 0);
   mysql_mutex_lock(&LOCK_open);
   share= get_table_share(thd, &table_list, key,
-                         key_length, OPEN_VIEW, &error);
+                         key_length, OPEN_VIEW, &not_used);
   if (!share)
   {
     res= 0;
-    goto err;
+    goto end_unlock;
   }
- 
+
   if (share->is_view)
   {
     if (schema_table->i_s_requested_object & OPEN_TABLE_ONLY)
     {
       /* skip view processing */
       res= 0;
-      goto err1;
+      goto end_share;
     }
     else if (schema_table->i_s_requested_object & OPEN_VIEW_FULL)
     {
       /*
-        tell get_all_tables() to fall back to 
+        tell get_all_tables() to fall back to
         open_normal_and_derived_tables()
       */
       res= 1;
-      goto err1;
+      goto end_share;
     }
   }
 
-  if (share->is_view ||
-      !open_table_from_share(thd, share, table_name->str, 0,
-                             (READ_KEYINFO | COMPUTE_TYPES |
-                              EXTRA_RECORD | OPEN_FRM_FILE_ONLY),
-                             thd->open_options, &tbl, FALSE))
+  if (share->is_view)
+  {
+    if (open_new_frm(thd, share, table_name->str,
+                     (uint) (HA_OPEN_KEYFILE | HA_OPEN_RNDFILE |
+                             HA_GET_INDEX | HA_TRY_READ_ONLY),
+                     READ_KEYINFO | COMPUTE_TYPES | EXTRA_RECORD |
+                     OPEN_VIEW_NO_PARSE,
+                     thd->open_options, &tbl, &table_list, thd->mem_root))
+      goto end_share;
+    table_list.view= (LEX*) share->is_view;
+    res= schema_table->process_table(thd, &table_list, table,
+                                     res, db_name, table_name);
+    goto end_share;
+  }
+
   {
     tbl.s= share;
     table_list.table= &tbl;
     table_list.view= (LEX*) share->is_view;
     res= schema_table->process_table(thd, &table_list, table,
                                      res, db_name, table_name);
-    closefrm(&tbl, true);
-    goto err;
   }
 
-err1:
+end_share:
   release_table_share(share, RELEASE_NORMAL);
 
-err:
-  mysql_mutex_unlock(&LOCK_open);
+end_unlock:
+   mysql_mutex_unlock(&LOCK_open);
+
+end:
   thd->clear_error();
   return res;
 }
 
 
-
 /**
   @brief          Fill I_S tables whose data are retrieved
                   from frm files and storage engine
@@ -3223,6 +3252,10 @@ int get_all_tables(THD *thd, TABLE_LIST 
   */
   thd->reset_n_backup_open_tables_state(&open_tables_state_backup);
 
+  schema_table_idx= get_schema_table_idx(schema_table);
+  tables->table_open_method= table_open_method=
+    get_table_open_method(tables, schema_table, schema_table_idx);
+  DBUG_PRINT("open_method", ("%d", tables->table_open_method));
   /* 
     this branch processes SHOW FIELDS, SHOW INDEXES commands.
     see sql_parse.cc, prepare_schema_table() function where
@@ -3235,7 +3268,6 @@ int get_all_tables(THD *thd, TABLE_LIST 
     goto err;
   }
 
-  schema_table_idx= get_schema_table_idx(schema_table);
   if (get_lookup_field_values(thd, cond, tables, &lookup_field_vals))
   {
     error= 0;
@@ -3273,9 +3305,6 @@ int get_all_tables(THD *thd, TABLE_LIST 
   else
     partial_cond= make_cond_for_info_schema(cond, tables);
 
-  tables->table_open_method= table_open_method=
-    get_table_open_method(tables, schema_table, schema_table_idx);
-
   if (lex->describe)
   {
     /* EXPLAIN SELECT */
@@ -3342,10 +3371,10 @@ int get_all_tables(THD *thd, TABLE_LIST 
           }
           else
           {
-            if (!(table_open_method & ~OPEN_FRM_ONLY) && 
+            if (!(table_open_method & ~OPEN_FRM_ONLY) &&
                 !with_i_schema)
             {
-              if (!fill_schema_table_from_frm(thd, table, schema_table, db_name,
+              if (!fill_schema_table_from_frm(thd, tables, schema_table, db_name,
                                               table_name, schema_table_idx))
                 continue;
             }
@@ -3721,6 +3750,128 @@ static int get_schema_tables_record(THD 
 }
 
 
+/**
+  @brief    Store field characteristics into appropriate I_S table columns
+
+  @param[in]      table             I_S table
+  @param[in]      field             processed field
+  @param[in]      cs                I_S table charset
+  @param[in]      offset            offset from beginning of table
+                                    to DATE_TYPE column in I_S table
+                                    
+  @return         void
+*/
+
+void store_column_type(TABLE *table, Field *field, CHARSET_INFO *cs,
+                       uint offset)
+{
+  bool is_blob;
+  int decimals, field_length;
+  const char *tmp_buff;
+  char column_type_buff[MAX_FIELD_WIDTH];
+  String column_type(column_type_buff, sizeof(column_type_buff), cs);
+
+  field->sql_type(column_type);
+  /* DTD_IDENTIFIER column */
+  table->field[offset + 7]->store(column_type.ptr(), column_type.length(), cs);
+  table->field[offset + 7]->set_notnull();
+  /*
+    DATA_TYPE column:
+    MySQL column type has the following format:
+    base_type [(dimension)] [unsigned] [zerofill].
+    For DATA_TYPE column we extract only base type.
+  */
+  tmp_buff= strchr(column_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(column_type.ptr(), ' ');
+  table->field[offset]->store(column_type.ptr(),
+                              (tmp_buff ? tmp_buff - column_type.ptr() :
+                               column_type.length()), cs);
+
+  is_blob= (field->type() == MYSQL_TYPE_BLOB);
+  if (field->has_charset() || is_blob ||
+      field->real_type() == MYSQL_TYPE_VARCHAR ||  // For varbinary type
+      field->real_type() == MYSQL_TYPE_STRING)     // For binary type
+  {
+    uint32 octet_max_length= field->max_display_length();
+    if (is_blob && octet_max_length != (uint32) 4294967295U)
+      octet_max_length /= field->charset()->mbmaxlen;
+    longlong char_max_len= is_blob ? 
+      (longlong) octet_max_length / field->charset()->mbminlen :
+      (longlong) octet_max_length / field->charset()->mbmaxlen;
+    /* CHARACTER_MAXIMUM_LENGTH column*/
+    table->field[offset + 1]->store(char_max_len, TRUE);
+    table->field[offset + 1]->set_notnull();
+    /* CHARACTER_OCTET_LENGTH column */
+    table->field[offset + 2]->store((longlong) octet_max_length, TRUE);
+    table->field[offset + 2]->set_notnull();
+  }
+
+  /*
+    Calculate field_length and decimals.
+    They are set to -1 if they should not be set (we should return NULL)
+  */
+
+  decimals= field->decimals();
+  switch (field->type()) {
+  case MYSQL_TYPE_NEWDECIMAL:
+    field_length= ((Field_new_decimal*) field)->precision;
+    break;
+  case MYSQL_TYPE_DECIMAL:
+    field_length= field->field_length - (decimals  ? 2 : 1);
+    break;
+  case MYSQL_TYPE_TINY:
+  case MYSQL_TYPE_SHORT:
+  case MYSQL_TYPE_LONG:
+  case MYSQL_TYPE_LONGLONG:
+  case MYSQL_TYPE_INT24:
+    field_length= field->max_display_length() - 1;
+    break;
+  case MYSQL_TYPE_BIT:
+    field_length= field->max_display_length();
+    decimals= -1;                             // return NULL
+    break;
+  case MYSQL_TYPE_FLOAT:  
+  case MYSQL_TYPE_DOUBLE:
+    field_length= field->field_length;
+    if (decimals == NOT_FIXED_DEC)
+      decimals= -1;                           // return NULL
+    break;
+  default:
+    field_length= decimals= -1;
+    break;
+  }
+
+  /* NUMERIC_PRECISION column */
+  if (field_length >= 0)
+  {
+    table->field[offset + 3]->store((longlong) field_length, TRUE);
+    table->field[offset + 3]->set_notnull();
+  }
+  /* NUMERIC_SCALE column */
+  if (decimals >= 0)
+  {
+    table->field[offset + 4]->store((longlong) decimals, TRUE);
+    table->field[offset + 4]->set_notnull();
+  }
+  if (field->has_charset())
+  {
+    /* CHARACTER_SET_NAME column*/
+    tmp_buff= field->charset()->csname;
+    table->field[offset + 5]->store(tmp_buff, strlen(tmp_buff), cs);
+    table->field[offset + 5]->set_notnull();
+    /* COLLATION_NAME column */
+    tmp_buff= field->charset()->name;
+    table->field[offset + 6]->store(tmp_buff, strlen(tmp_buff), cs);
+    table->field[offset + 6]->set_notnull();
+  }
+}
+
+
 static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
 				    TABLE *table, bool res,
 				    LEX_STRING *db_name,
@@ -3730,7 +3881,8 @@ static int get_schema_column_record(THD 
   const char *wild= lex->wild ? lex->wild->ptr() : NullS;
   CHARSET_INFO *cs= system_charset_info;
   TABLE *show_table;
-  Field **ptr,*field;
+  TABLE_SHARE *show_table_share;
+  Field **ptr, *field, *timestamp_field;
   int count;
   DBUG_ENTER("get_schema_column_record");
 
@@ -3741,7 +3893,7 @@ static int get_schema_column_record(THD 
       /*
         I.e. we are in SELECT FROM INFORMATION_SCHEMA.COLUMS
         rather than in SHOW COLUMNS
-      */ 
+      */
       if (thd->is_error())
         push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
                      thd->stmt_da->sql_errno(), thd->stmt_da->message());
@@ -3752,37 +3904,62 @@ static int get_schema_column_record(THD 
   }
 
   show_table= tables->table;
+  show_table_share= show_table->s;
   count= 0;
-  restore_record(show_table, s->default_values);
-  show_table->use_all_columns();               // Required for default
 
-  for (ptr= show_table->field; (field= *ptr) ; ptr++)
+  if (tables->view || tables->schema_table)
+  {
+    ptr= show_table->field;
+    timestamp_field= show_table->timestamp_field;
+    show_table->use_all_columns();               // Required for default
+  }
+  else
+  {
+    ptr= show_table_share->field;
+    timestamp_field= show_table_share->timestamp_field;
+    /*
+      read_set may be inited in case of
+      temporary table
+    */
+    if (!show_table->read_set)
+    {
+      /* to satisfy 'field->val_str' ASSERTs */
+      uchar *bitmaps;
+      uint bitmap_size= show_table_share->column_bitmap_size;
+      if (!(bitmaps= (uchar*) alloc_root(thd->mem_root, bitmap_size)))
+        DBUG_RETURN(0);
+      bitmap_init(&show_table->def_read_set,
+                  (my_bitmap_map*) bitmaps, show_table_share->fields, FALSE);
+      bitmap_set_all(&show_table->def_read_set);
+      show_table->read_set= &show_table->def_read_set;
+    }
+    bitmap_set_all(show_table->read_set);
+  }
+
+  for (; (field= *ptr) ; ptr++)
   {
-    const char *tmp_buff;
     uchar *pos;
-    bool is_blob;
-    uint flags=field->flags;
     char tmp[MAX_FIELD_WIDTH];
     String type(tmp,sizeof(tmp), system_charset_info);
     char *end;
-    int decimals, field_length;
+
+    /* to satisfy 'field->val_str' ASSERTs */
+    field->table= show_table;
+    show_table->in_use= thd;
 
     if (wild && wild[0] &&
         wild_case_compare(system_charset_info, field->field_name,wild))
       continue;
 
-    flags= field->flags;
     count++;
     /* Get default row, with all NULL fields set to NULL */
     restore_record(table, s->default_values);
 
 #ifndef NO_EMBEDDED_ACCESS_CHECKS
     uint col_access;
-    check_access(thd, SELECT_ACL, db_name->str,
-                 &tables->grant.privilege,
-                 &tables->grant.m_internal,
-                 FALSE, FALSE);
-    col_access= get_column_grant(thd, &tables->grant, 
+    check_access(thd,SELECT_ACL, db_name->str,
+                 &tables->grant.privilege, 0, 0, test(tables->schema_table));
+    col_access= get_column_grant(thd, &tables->grant,
                                  db_name->str, table_name->str,
                                  field->field_name) & COL_ACLS;
     if (!tables->schema_table && !col_access)
@@ -3807,104 +3984,16 @@ static int get_schema_column_record(THD 
     table->field[4]->store((longlong) count, TRUE);
     field->sql_type(type);
     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);
 
-    if (get_field_default_value(thd, show_table, field, &type, 0))
+    if (get_field_default_value(thd, timestamp_field, field, &type, 0))
     {
       table->field[5]->store(type.ptr(), type.length(), cs);
       table->field[5]->set_notnull();
     }
-    pos=(uchar*) ((flags & NOT_NULL_FLAG) ?  "NO" : "YES");
+    pos=(uchar*) ((field->flags & NOT_NULL_FLAG) ?  "NO" : "YES");
     table->field[6]->store((const char*) pos,
                            strlen((const char*) pos), cs);
-    is_blob= (field->type() == MYSQL_TYPE_BLOB);
-    if (field->has_charset() || is_blob ||
-        field->real_type() == MYSQL_TYPE_VARCHAR ||  // For varbinary type
-        field->real_type() == MYSQL_TYPE_STRING)     // For binary type
-    {
-      uint32 octet_max_length= field->max_display_length();
-      if (is_blob && octet_max_length != (uint32) 4294967295U)
-        octet_max_length /= field->charset()->mbmaxlen;
-      longlong char_max_len= is_blob ? 
-        (longlong) octet_max_length / field->charset()->mbminlen :
-        (longlong) octet_max_length / field->charset()->mbmaxlen;
-      table->field[8]->store(char_max_len, TRUE);
-      table->field[8]->set_notnull();
-      table->field[9]->store((longlong) octet_max_length, TRUE);
-      table->field[9]->set_notnull();
-    }
-
-    /*
-      Calculate field_length and decimals.
-      They are set to -1 if they should not be set (we should return NULL)
-    */
-
-    decimals= field->decimals();
-    switch (field->type()) {
-    case MYSQL_TYPE_NEWDECIMAL:
-      field_length= ((Field_new_decimal*) field)->precision;
-      break;
-    case MYSQL_TYPE_DECIMAL:
-      field_length= field->field_length - (decimals  ? 2 : 1);
-      break;
-    case MYSQL_TYPE_TINY:
-    case MYSQL_TYPE_SHORT:
-    case MYSQL_TYPE_LONG:
-    case MYSQL_TYPE_LONGLONG:
-    case MYSQL_TYPE_INT24:
-      field_length= field->max_display_length() - 1;
-      break;
-    case MYSQL_TYPE_BIT:
-      field_length= field->max_display_length();
-      decimals= -1;                             // return NULL
-      break;
-    case MYSQL_TYPE_FLOAT:  
-    case MYSQL_TYPE_DOUBLE:
-      field_length= field->field_length;
-      if (decimals == NOT_FIXED_DEC)
-        decimals= -1;                           // return NULL
-    break;
-    default:
-      field_length= decimals= -1;
-      break;
-    }
-
-    if (field_length >= 0)
-    {
-      table->field[10]->store((longlong) field_length, TRUE);
-      table->field[10]->set_notnull();
-    }
-    if (decimals >= 0)
-    {
-      table->field[11]->store((longlong) decimals, TRUE);
-      table->field[11]->set_notnull();
-    }
-
-    if (field->has_charset())
-    {
-      pos=(uchar*) field->charset()->csname;
-      table->field[12]->store((const char*) pos,
-                              strlen((const char*) pos), cs);
-      table->field[12]->set_notnull();
-      pos=(uchar*) field->charset()->name;
-      table->field[13]->store((const char*) pos,
-                              strlen((const char*) pos), cs);
-      table->field[13]->set_notnull();
-    }
+    store_column_type(table, field, cs, 7);
     pos=(uchar*) ((field->flags & PRI_KEY_FLAG) ? "PRI" :
                  (field->flags & UNIQUE_KEY_FLAG) ? "UNI" :
                  (field->flags & MULTIPLE_KEY_FLAG) ? "MUL":"");
@@ -3914,7 +4003,7 @@ static int get_schema_column_record(THD 
     end= tmp;
     if (field->unireg_check == Field::NEXT_NUMBER)
       table->field[16]->store(STRING_WITH_LEN("auto_increment"), cs);
-    if (show_table->timestamp_field == field &&
+    if (timestamp_field == field &&
         field->unireg_check != Field::TIMESTAMP_DN_FIELD)
       table->field[16]->store(STRING_WITH_LEN("on update CURRENT_TIMESTAMP"),
                               cs);
@@ -3927,7 +4016,6 @@ static int get_schema_column_record(THD 
 }
 
 
-
 int fill_schema_charsets(THD *thd, TABLE_LIST *tables, COND *cond)
 {
   CHARSET_INFO **cs;
@@ -4116,6 +4204,169 @@ int fill_schema_coll_charset_app(THD *th
 }
 
 
+/**
+  @brief Store record into I_S.PARAMETERS table
+
+  @param[in]      thd                   thread handler
+  @param[in]      table                 I_S table
+  @param[in]      proc_table            'mysql.proc' table
+  @param[in]      wild                  wild string, not used for now,
+                                        will be useful
+                                        if we add 'SHOW PARAMETERs'
+  @param[in]      full_access           if 1 user has privileges on the routine
+  @param[in]      sp_user               user in 'user@host' format
+
+  @return         Operation status
+    @retval       0                     ok
+    @retval       1                     error
+*/
+
+bool store_schema_params(THD *thd, TABLE *table, TABLE *proc_table,
+                         const char *wild, bool full_access,
+                         const char *sp_user)
+{
+  TABLE_SHARE share;
+  TABLE tbl;
+  CHARSET_INFO *cs= system_charset_info;
+  char params_buff[MAX_FIELD_WIDTH], returns_buff[MAX_FIELD_WIDTH],
+    sp_db_buff[NAME_LEN], sp_name_buff[NAME_LEN], path[FN_REFLEN],
+    definer_buff[USERNAME_LENGTH + HOSTNAME_LENGTH + 1];
+  String params(params_buff, sizeof(params_buff), cs);
+  String returns(returns_buff, sizeof(returns_buff), cs);
+  String sp_db(sp_db_buff, sizeof(sp_db_buff), cs);
+  String sp_name(sp_name_buff, sizeof(sp_name_buff), cs);
+  String definer(definer_buff, sizeof(definer_buff), cs);
+  sp_head *sp;
+  uint routine_type;
+  bool free_sp_head;
+  DBUG_ENTER("store_schema_params");
+
+  bzero((char*) &tbl, sizeof(TABLE));
+  (void) build_table_filename(path, sizeof(path), "", "", "", 0);
+  init_tmp_table_share(thd, &share, "", 0, "", path);
+
+  get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DB], &sp_db);
+  get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_NAME], &sp_name);
+  get_field(thd->mem_root,proc_table->field[MYSQL_PROC_FIELD_DEFINER],&definer);
+  routine_type= (uint) proc_table->field[MYSQL_PROC_MYSQL_TYPE]->val_int();
+
+  if (!full_access)
+    full_access= !strcmp(sp_user, definer.ptr());
+  if (!full_access &&
+      check_some_routine_access(thd, sp_db.ptr(),sp_name.ptr(),
+                                routine_type == TYPE_ENUM_PROCEDURE))
+    DBUG_RETURN(0);
+
+  params.length(0);
+  get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_PARAM_LIST],
+            &params);
+  returns.length(0);
+  if (routine_type == TYPE_ENUM_FUNCTION)
+    get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_RETURNS],
+              &returns);
+
+  sp= sp_load_for_information_schema(thd, proc_table, &sp_db, &sp_name,
+                                     (ulong) proc_table->
+                                     field[MYSQL_PROC_FIELD_SQL_MODE]->val_int(),
+                                     routine_type,
+                                     returns.c_ptr_safe(),
+                                     params.c_ptr_safe(),
+                                     &free_sp_head);
+
+  if (sp)
+  {
+    Field *field;
+    Create_field *field_def;
+    String tmp_string;
+    if (routine_type == TYPE_ENUM_FUNCTION)
+    {
+      restore_record(table, s->default_values);
+      table->field[0]->store(STRING_WITH_LEN("def"), cs);
+      table->field[1]->store(sp_db.ptr(), sp_db.length(), cs);
+      table->field[2]->store(sp_name.ptr(), sp_name.length(), cs);
+      table->field[3]->store((longlong) 0, TRUE);
+      get_field(thd->mem_root, proc_table->field[MYSQL_PROC_MYSQL_TYPE],
+                &tmp_string);
+      table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs);
+      field_def= &sp->m_return_field_def;
+      field= make_field(&share, (uchar*) 0, field_def->length,
+                        (uchar*) "", 0, field_def->pack_flag,
+                        field_def->sql_type, field_def->charset,
+                        field_def->geom_type, Field::NONE,
+                        field_def->interval, "");
+
+      field->table= &tbl;
+      tbl.in_use= thd;
+      store_column_type(table, field, cs, 6);
+      if (schema_table_store_record(thd, table))
+      {
+        free_table_share(&share);
+        if (free_sp_head)
+          delete sp;
+        DBUG_RETURN(1);
+      }
+    }
+
+    sp_pcontext *spcont= sp->get_parse_context();
+    uint params= spcont->context_var_count();
+    for (uint i= 0 ; i < params ; i++)
+    {
+      const char *tmp_buff;
+      sp_variable_t *spvar= spcont->find_variable(i);
+      field_def= &spvar->field_def;
+      switch (spvar->mode) {
+      case sp_param_in:
+        tmp_buff= "IN";
+        break;
+      case sp_param_out:
+        tmp_buff= "OUT";
+        break;
+      case sp_param_inout:
+        tmp_buff= "INOUT";
+        break;
+      default:
+        tmp_buff= "";
+        break;
+      }  
+
+      restore_record(table, s->default_values);
+      table->field[0]->store(STRING_WITH_LEN("def"), cs);
+      table->field[1]->store(sp_db.ptr(), sp_db.length(), cs);
+      table->field[2]->store(sp_name.ptr(), sp_name.length(), cs);
+      table->field[3]->store((longlong) i + 1, TRUE);
+      table->field[4]->store(tmp_buff, strlen(tmp_buff), cs);
+      table->field[4]->set_notnull();
+      table->field[5]->store(spvar->name.str, spvar->name.length, cs);
+      table->field[5]->set_notnull();
+      get_field(thd->mem_root, proc_table->field[MYSQL_PROC_MYSQL_TYPE],
+                &tmp_string);
+      table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs);
+
+      field= make_field(&share, (uchar*) 0, field_def->length,
+                        (uchar*) "", 0, field_def->pack_flag,
+                        field_def->sql_type, field_def->charset,
+                        field_def->geom_type, Field::NONE,
+                        field_def->interval, spvar->name.str);
+
+      field->table= &tbl;
+      tbl.in_use= thd;
+      store_column_type(table, field, cs, 6);
+      if (schema_table_store_record(thd, table))
+      {
+        free_table_share(&share);
+        if (free_sp_head)
+          delete sp;
+        DBUG_RETURN(1);
+      }
+    }
+    if (free_sp_head)
+      delete sp;
+  }
+  free_table_share(&share);
+  DBUG_RETURN(0);
+}
+
+
 bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table,
                        const char *wild, bool full_access, const char *sp_user)
 {
@@ -4124,75 +4375,131 @@ bool store_schema_proc(THD *thd, TABLE *
   MYSQL_TIME time;
   LEX *lex= thd->lex;
   CHARSET_INFO *cs= system_charset_info;
-  get_field(thd->mem_root, proc_table->field[0], &sp_db);
-  get_field(thd->mem_root, proc_table->field[1], &sp_name);
-  get_field(thd->mem_root, proc_table->field[11], &definer);
+  get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DB], &sp_db);
+  get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_NAME], &sp_name);
+  get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DEFINER],&definer);
   if (!full_access)
     full_access= !strcmp(sp_user, definer.ptr());
-  if (!full_access && check_some_routine_access(thd, sp_db.ptr(),
-                                                sp_name.ptr(),
-                                                proc_table->field[2]->
-                                                val_int() ==
-                                                TYPE_ENUM_PROCEDURE))
+  if (!full_access && 
+      check_some_routine_access(thd, sp_db.ptr(), sp_name.ptr(),
+                                proc_table->field[MYSQL_PROC_MYSQL_TYPE]->
+                                val_int() == TYPE_ENUM_PROCEDURE))
     return 0;
 
   if ((lex->sql_command == SQLCOM_SHOW_STATUS_PROC &&
-      proc_table->field[2]->val_int() == TYPE_ENUM_PROCEDURE) ||
+      proc_table->field[MYSQL_PROC_MYSQL_TYPE]->val_int() ==
+      TYPE_ENUM_PROCEDURE) ||
       (lex->sql_command == SQLCOM_SHOW_STATUS_FUNC &&
-      proc_table->field[2]->val_int() == TYPE_ENUM_FUNCTION) ||
+      proc_table->field[MYSQL_PROC_MYSQL_TYPE]->val_int() ==
+      TYPE_ENUM_FUNCTION) ||
       (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0)
   {
     restore_record(table, s->default_values);
     if (!wild || !wild[0] || !wild_compare(sp_name.ptr(), wild, 0))
     {
-      int enum_idx= (int) proc_table->field[5]->val_int();
+      int enum_idx= (int) proc_table->field[MYSQL_PROC_FIELD_ACCESS]->val_int();
       table->field[3]->store(sp_name.ptr(), sp_name.length(), cs);
-      get_field(thd->mem_root, proc_table->field[3], &tmp_string);
+      get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_SPECIFIC_NAME],
+                &tmp_string);
       table->field[0]->store(tmp_string.ptr(), tmp_string.length(), cs);
       table->field[1]->store(STRING_WITH_LEN("def"), cs);
       table->field[2]->store(sp_db.ptr(), sp_db.length(), cs);
-      get_field(thd->mem_root, proc_table->field[2], &tmp_string);
+      get_field(thd->mem_root, proc_table->field[MYSQL_PROC_MYSQL_TYPE],
+                &tmp_string);
       table->field[4]->store(tmp_string.ptr(), tmp_string.length(), cs);
-      if (proc_table->field[2]->val_int() == TYPE_ENUM_FUNCTION)
+      if (proc_table->field[MYSQL_PROC_MYSQL_TYPE]->val_int() ==
+          TYPE_ENUM_FUNCTION)
       {
-        get_field(thd->mem_root, proc_table->field[9], &tmp_string);
-        table->field[5]->store(tmp_string.ptr(), tmp_string.length(), cs);
-        table->field[5]->set_notnull();
+        sp_head *sp;
+        bool free_sp_head;
+        get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_RETURNS],
+                  &tmp_string);
+
+        sp= sp_load_for_information_schema(thd, proc_table, &sp_db, &sp_name,
+                                           (ulong) proc_table->
+                                           field[MYSQL_PROC_FIELD_SQL_MODE]->
+                                           val_int(),
+                                           TYPE_ENUM_FUNCTION,
+                                           tmp_string.c_ptr_safe(),
+                                           "", &free_sp_head);
+
+        if (sp)
+        {
+          char path[FN_REFLEN];
+          TABLE_SHARE share;
+          TABLE tbl;
+          Field *field;
+          Create_field *field_def= &sp->m_return_field_def;
+
+          bzero((char*) &tbl, sizeof(TABLE));
+          (void) build_table_filename(path, sizeof(path), "", "", "", 0);
+          init_tmp_table_share(thd, &share, "", 0, "", path);
+          field= make_field(&share, (uchar*) 0, field_def->length,
+                            (uchar*) "", 0, field_def->pack_flag,
+                            field_def->sql_type, field_def->charset,
+                            field_def->geom_type, Field::NONE,
+                            field_def->interval, "");
+
+          field->table= &tbl;
+          tbl.in_use= thd;
+          store_column_type(table, field, cs, 5);
+          free_table_share(&share);
+          if (free_sp_head)
+            delete sp;
+        }
       }
+
       if (full_access)
       {
-        get_field(thd->mem_root, proc_table->field[19], &tmp_string);
-        table->field[7]->store(tmp_string.ptr(), tmp_string.length(), cs);
-        table->field[7]->set_notnull();
+        get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_BODY_UTF8],
+                  &tmp_string);
+        table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs);
+        table->field[14]->set_notnull();
       }
-      table->field[6]->store(STRING_WITH_LEN("SQL"), cs);
-      table->field[10]->store(STRING_WITH_LEN("SQL"), cs);
-      get_field(thd->mem_root, proc_table->field[6], &tmp_string);
-      table->field[11]->store(tmp_string.ptr(), tmp_string.length(), cs);
-      table->field[12]->store(sp_data_access_name[enum_idx].str, 
-                              sp_data_access_name[enum_idx].length , cs);
-      get_field(thd->mem_root, proc_table->field[7], &tmp_string);
-      table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs);
-      bzero((char *)&time, sizeof(time));
-      ((Field_timestamp *) proc_table->field[12])->get_time(&time);
-      table->field[15]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);
-      bzero((char *)&time, sizeof(time));
-      ((Field_timestamp *) proc_table->field[13])->get_time(&time);
-      table->field[16]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);
-      get_field(thd->mem_root, proc_table->field[14], &tmp_string);
-      table->field[17]->store(tmp_string.ptr(), tmp_string.length(), cs);
-      get_field(thd->mem_root, proc_table->field[15], &tmp_string);
-      table->field[18]->store(tmp_string.ptr(), tmp_string.length(), cs);
-      table->field[19]->store(definer.ptr(), definer.length(), cs);
+      table->field[13]->store(STRING_WITH_LEN("SQL"), cs);
+      table->field[17]->store(STRING_WITH_LEN("SQL"), cs);
 
-      get_field(thd->mem_root, proc_table->field[16], &tmp_string);
-      table->field[20]->store(tmp_string.ptr(), tmp_string.length(), cs);
 
-      get_field(thd->mem_root, proc_table->field[17], &tmp_string);
-      table->field[21]->store(tmp_string.ptr(), tmp_string.length(), cs);
+      get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DETERMINISTIC],
+                &tmp_string);
+      table->field[18]->store(tmp_string.ptr(), tmp_string.length(), cs);
+      table->field[19]->store(sp_data_access_name[enum_idx].str, 
+                              sp_data_access_name[enum_idx].length , cs);
 
-      get_field(thd->mem_root, proc_table->field[18], &tmp_string);
-      table->field[22]->store(tmp_string.ptr(), tmp_string.length(), cs);
+      get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_SECURITY_TYPE],
+                &tmp_string);
+      table->field[21]->store(tmp_string.ptr(), tmp_string.length(), cs);
+      bzero((char *)&time, sizeof(time));
+      ((Field_timestamp *) proc_table->field[MYSQL_PROC_FIELD_CREATED])->
+        get_time(&time);
+      table->field[22]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);
+      bzero((char *)&time, sizeof(time));
+      ((Field_timestamp *) proc_table->field[MYSQL_PROC_FIELD_MODIFIED])->
+        get_time(&time);
+      table->field[23]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);
+
+      get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_SQL_MODE],
+                &tmp_string);
+      table->field[24]->store(tmp_string.ptr(), tmp_string.length(), cs);
+
+      get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_COMMENT],
+                &tmp_string);
+      table->field[25]->store(tmp_string.ptr(), tmp_string.length(), cs);
+      table->field[26]->store(definer.ptr(), definer.length(), cs);
+
+      get_field(thd->mem_root,
+                proc_table->field[MYSQL_PROC_FIELD_CHARACTER_SET_CLIENT],
+                &tmp_string);
+      table->field[27]->store(tmp_string.ptr(), tmp_string.length(), cs);
+
+      get_field(thd->mem_root,
+                proc_table->field[ MYSQL_PROC_FIELD_COLLATION_CONNECTION],

+                &tmp_string);
+      table->field[28]->store(tmp_string.ptr(), tmp_string.length(), cs);
+
+      get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DB_COLLATION],
+                &tmp_string);
+      table->field[29]->store(tmp_string.ptr(), tmp_string.length(), cs);
 
       return schema_table_store_record(thd, table);
     }
@@ -4211,6 +4518,8 @@ int fill_schema_proc(THD *thd, TABLE_LIS
   bool full_access;
   char definer[USER_HOST_BUFF_SIZE];
   Open_tables_state open_tables_state_backup;
+  enum enum_schema_tables schema_table_idx=
+    get_schema_table_idx(tables->schema_table);
   DBUG_ENTER("fill_schema_proc");
 
   strxmov(definer, thd->security_ctx->priv_user, "@",
@@ -4234,14 +4543,19 @@ int fill_schema_proc(THD *thd, TABLE_LIS
     res= (res == HA_ERR_END_OF_FILE) ? 0 : 1;
     goto err;
   }
-  if (store_schema_proc(thd, table, proc_table, wild, full_access, definer))
+
+  if (schema_table_idx == SCH_PROCEDURES ?
+      store_schema_proc(thd, table, proc_table, wild, full_access, definer) :
+      store_schema_params(thd, table, proc_table, wild, full_access, definer))
   {
     res= 1;
     goto err;
   }
   while (!proc_table->file->index_next(proc_table->record[0]))
   {
-    if (store_schema_proc(thd, table, proc_table, wild, full_access, definer))
+    if (schema_table_idx == SCH_PROCEDURES ?
+        store_schema_proc(thd, table, proc_table, wild, full_access, definer): 
+        store_schema_params(thd, table, proc_table, wild, full_access, definer))
     {
       res= 1;
       goto err;
@@ -4356,24 +4670,15 @@ static int get_schema_views_record(THD *
 				   LEX_STRING *table_name)
 {
   CHARSET_INFO *cs= system_charset_info;
-  DBUG_ENTER("get_schema_views_record");
-  LEX_STRING *tmp_db_name, *tmp_table_name;
   char definer[USER_HOST_BUFF_SIZE];
   uint definer_len;
   bool updatable_view;
-  /*
-    if SELECT FROM I_S.VIEWS uses only fields
-    which have OPEN_FRM_ONLY flag then 'tables'
-    structure is zeroed and only tables->view is set.
-    (see fill_schema_table_from_frm() function).
-    So we should disable other fields filling.
-  */
-  bool only_share= !tables->definer.user.str;
+  DBUG_ENTER("get_schema_views_record");
 
   if (tables->view)
   {
     Security_context *sctx= thd->security_ctx;
-    if (!only_share && !tables->allowed_show)
+    if (!tables->allowed_show)
     {
       if (!my_strcasecmp(system_charset_info, tables->definer.user.str,
                          sctx->priv_user) &&
@@ -4391,47 +4696,42 @@ static int get_schema_views_record(THD *
           TABLE_LIST table_list;
           uint view_access;
           memset(&table_list, 0, sizeof(table_list));
-          table_list.db= tables->view_db.str;
-          table_list.table_name= tables->view_name.str;
+          table_list.db= tables->db;
+          table_list.table_name= tables->table_name;
           table_list.grant.privilege= thd->col_access;
           view_access= get_table_grant(thd, &table_list);
-          if ((view_access & (SHOW_VIEW_ACL|SELECT_ACL)) ==
-              (SHOW_VIEW_ACL|SELECT_ACL))
-            tables->allowed_show= TRUE;
+	  if ((view_access & (SHOW_VIEW_ACL|SELECT_ACL)) ==
+	      (SHOW_VIEW_ACL|SELECT_ACL))
+	    tables->allowed_show= TRUE;
         }
       }
 #endif
     }
     restore_record(table, s->default_values);
-    tmp_db_name= &tables->view_db;
-    tmp_table_name= &tables->view_name;
-    if (only_share)
-    {
-      tmp_db_name= db_name;
-      tmp_table_name= table_name;
-    }
     table->field[0]->store(STRING_WITH_LEN("def"), cs);
-    table->field[1]->store(tmp_db_name->str, tmp_db_name->length, cs);
-    table->field[2]->store(tmp_table_name->str, tmp_table_name->length, cs);
-    if (!only_share)
+    table->field[1]->store(db_name->str, db_name->length, cs);
+    table->field[2]->store(table_name->str, table_name->length, cs);
+
+    if (tables->allowed_show)
     {
-      if (tables->allowed_show)
-      {
-        table->field[3]->store(tables->view_body_utf8.str,
-                               tables->view_body_utf8.length,
-                               cs);
-      }
+      table->field[3]->store(tables->view_body_utf8.str,
+                             tables->view_body_utf8.length,
+                             cs);
+    }
 
-      if (tables->with_check != VIEW_CHECK_NONE)
-      {
-        if (tables->with_check == VIEW_CHECK_LOCAL)
-          table->field[4]->store(STRING_WITH_LEN("LOCAL"), cs);
-        else
-          table->field[4]->store(STRING_WITH_LEN("CASCADED"), cs);
-      }
+    if (tables->with_check != VIEW_CHECK_NONE)
+    {
+      if (tables->with_check == VIEW_CHECK_LOCAL)
+        table->field[4]->store(STRING_WITH_LEN("LOCAL"), cs);
       else
-        table->field[4]->store(STRING_WITH_LEN("NONE"), cs);
+        table->field[4]->store(STRING_WITH_LEN("CASCADED"), cs);
+    }
+    else
+      table->field[4]->store(STRING_WITH_LEN("NONE"), cs);
 
+    if (table->pos_in_table_list->table_open_method &
+        OPEN_FULL_TABLE)
+    {
       updatable_view= 0;
       if (tables->algorithm != VIEW_ALGORITHM_TMPTABLE)
       {
@@ -4465,31 +4765,33 @@ static int get_schema_views_record(THD *
         table->field[5]->store(STRING_WITH_LEN("YES"), cs);
       else
         table->field[5]->store(STRING_WITH_LEN("NO"), cs);
-      definer_len= (strxmov(definer, tables->definer.user.str, "@",
-                            tables->definer.host.str, NullS) - definer);
-      table->field[6]->store(definer, definer_len, cs);
-      if (tables->view_suid)
-        table->field[7]->store(STRING_WITH_LEN("DEFINER"), cs);
-      else
-        table->field[7]->store(STRING_WITH_LEN("INVOKER"), cs);
-
-      table->field[8]->store(tables->view_creation_ctx->get_client_cs()->csname,
-                             strlen(tables->view_creation_ctx->
-                                    get_client_cs()->csname), cs);
-
-      table->field[9]->store(tables->view_creation_ctx->
-                             get_connection_cl()->name,
-                             strlen(tables->view_creation_ctx->
-                                    get_connection_cl()->name), cs);
     }
 
+    definer_len= (strxmov(definer, tables->definer.user.str, "@",
+                          tables->definer.host.str, NullS) - definer);
+    table->field[6]->store(definer, definer_len, cs);
+    if (tables->view_suid)
+      table->field[7]->store(STRING_WITH_LEN("DEFINER"), cs);
+    else
+      table->field[7]->store(STRING_WITH_LEN("INVOKER"), cs);
+
+    table->field[8]->store(tables->view_creation_ctx->get_client_cs()->csname,
+                           strlen(tables->view_creation_ctx->
+                                  get_client_cs()->csname), cs);
+
+    table->field[9]->store(tables->view_creation_ctx->
+                           get_connection_cl()->name,
+                           strlen(tables->view_creation_ctx->
+                                  get_connection_cl()->name), cs);
+
+
     if (schema_table_store_record(thd, table))
       DBUG_RETURN(1);
     if (res && thd->is_error())
-      push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 
+      push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
                    thd->stmt_da->sql_errno(), thd->stmt_da->message());
   }
-  if (res) 
+  if (res)
     thd->clear_error();
   DBUG_RETURN(0);
 }
@@ -5995,7 +6297,7 @@ int make_character_sets_old_format(THD *
 
 int make_proc_old_format(THD *thd, ST_SCHEMA_TABLE *schema_table)
 {
-  int fields_arr[]= {2, 3, 4, 19, 16, 15, 14, 18, 20, 21, 22, -1};
+  int fields_arr[]= {2, 3, 4, 26, 23, 22, 21, 25, 27, 28, 29, -1};
   int *field_num= fields_arr;
   ST_FIELD_INFO *field_info;
   Name_resolution_context *context= &thd->lex->select_lex.context;
@@ -6447,7 +6749,14 @@ ST_FIELD_INFO proc_fields_info[]=
   {"ROUTINE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Name",
    SKIP_OPEN_TABLE},
   {"ROUTINE_TYPE", 9, MYSQL_TYPE_STRING, 0, 0, "Type", SKIP_OPEN_TABLE},
-  {"DTD_IDENTIFIER", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
+  {"DATA_TYPE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
+  {"CHARACTER_MAXIMUM_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0, SKIP_OPEN_TABLE},
+  {"CHARACTER_OCTET_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0, SKIP_OPEN_TABLE},
+  {"NUMERIC_PRECISION", 21 , MYSQL_TYPE_LONG, 0, 1, 0, SKIP_OPEN_TABLE},
+  {"NUMERIC_SCALE", 21 , MYSQL_TYPE_LONG, 0, 1, 0, SKIP_OPEN_TABLE},
+  {"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
+  {"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
+  {"DTD_IDENTIFIER", 65535, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
   {"ROUTINE_BODY", 8, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
   {"ROUTINE_DEFINITION", 65535, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
   {"EXTERNAL_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
@@ -6505,15 +6814,15 @@ ST_FIELD_INFO view_fields_info[]=
   {"TABLE_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
   {"TABLE_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
   {"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
-  {"VIEW_DEFINITION", 65535, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
-  {"CHECK_OPTION", 8, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
+  {"VIEW_DEFINITION", 65535, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
+  {"CHECK_OPTION", 8, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
   {"IS_UPDATABLE", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
-  {"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
-  {"SECURITY_TYPE", 7, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
+  {"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
+  {"SECURITY_TYPE", 7, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
   {"CHARACTER_SET_CLIENT", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0,
-   OPEN_FULL_TABLE},
+   OPEN_FRM_ONLY},
   {"COLLATION_CONNECTION", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0,
-   OPEN_FULL_TABLE},
+   OPEN_FRM_ONLY},
   {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
 };
 
@@ -6628,38 +6937,38 @@ ST_FIELD_INFO open_tables_fields_info[]=
 
 ST_FIELD_INFO triggers_fields_info[]=
 {
-  {"TRIGGER_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
-  {"TRIGGER_SCHEMA",NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
+  {"TRIGGER_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
+  {"TRIGGER_SCHEMA",NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
   {"TRIGGER_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Trigger",
-   OPEN_FULL_TABLE},
-  {"EVENT_MANIPULATION", 6, MYSQL_TYPE_STRING, 0, 0, "Event", OPEN_FULL_TABLE},
+   OPEN_FRM_ONLY},
+  {"EVENT_MANIPULATION", 6, MYSQL_TYPE_STRING, 0, 0, "Event", OPEN_FRM_ONLY},
   {"EVENT_OBJECT_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0,
-   OPEN_FULL_TABLE},
+   OPEN_FRM_ONLY},
   {"EVENT_OBJECT_SCHEMA",NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0,
-   OPEN_FULL_TABLE},
+   OPEN_FRM_ONLY},
   {"EVENT_OBJECT_TABLE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Table",
-   OPEN_FULL_TABLE},
-  {"ACTION_ORDER", 4, MYSQL_TYPE_LONGLONG, 0, 0, 0, OPEN_FULL_TABLE},
-  {"ACTION_CONDITION", 65535, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE},
+   OPEN_FRM_ONLY},
+  {"ACTION_ORDER", 4, MYSQL_TYPE_LONGLONG, 0, 0, 0, OPEN_FRM_ONLY},
+  {"ACTION_CONDITION", 65535, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FRM_ONLY},
   {"ACTION_STATEMENT", 65535, MYSQL_TYPE_STRING, 0, 0, "Statement",
-   OPEN_FULL_TABLE},
-  {"ACTION_ORIENTATION", 9, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
-  {"ACTION_TIMING", 6, MYSQL_TYPE_STRING, 0, 0, "Timing", OPEN_FULL_TABLE},
+   OPEN_FRM_ONLY},
+  {"ACTION_ORIENTATION", 9, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
+  {"ACTION_TIMING", 6, MYSQL_TYPE_STRING, 0, 0, "Timing", OPEN_FRM_ONLY},
   {"ACTION_REFERENCE_OLD_TABLE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0,
-   OPEN_FULL_TABLE},
+   OPEN_FRM_ONLY},
   {"ACTION_REFERENCE_NEW_TABLE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0,
-   OPEN_FULL_TABLE},
-  {"ACTION_REFERENCE_OLD_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
-  {"ACTION_REFERENCE_NEW_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
-  {"CREATED", 0, MYSQL_TYPE_DATETIME, 0, 1, "Created", OPEN_FULL_TABLE},
-  {"SQL_MODE", 32*256, MYSQL_TYPE_STRING, 0, 0, "sql_mode", OPEN_FULL_TABLE},
-  {"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, "Definer", OPEN_FULL_TABLE},
+   OPEN_FRM_ONLY},
+  {"ACTION_REFERENCE_OLD_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
+  {"ACTION_REFERENCE_NEW_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY},
+  {"CREATED", 0, MYSQL_TYPE_DATETIME, 0, 1, "Created", OPEN_FRM_ONLY},
+  {"SQL_MODE", 32*256, MYSQL_TYPE_STRING, 0, 0, "sql_mode", OPEN_FRM_ONLY},
+  {"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, "Definer", OPEN_FRM_ONLY},
   {"CHARACTER_SET_CLIENT", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0,
-   "character_set_client", OPEN_FULL_TABLE},
+   "character_set_client", OPEN_FRM_ONLY},
   {"COLLATION_CONNECTION", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0,
-   "collation_connection", OPEN_FULL_TABLE},
+   "collation_connection", OPEN_FRM_ONLY},
   {"DATABASE_COLLATION", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0,
-   "Database Collation", OPEN_FULL_TABLE},
+   "Database Collation", OPEN_FRM_ONLY},
   {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
 };
 
@@ -6838,6 +7147,28 @@ ST_FIELD_INFO referential_constraints_fi
 };
 
 
+ST_FIELD_INFO parameters_fields_info[]=
+{
+  {"SPECIFIC_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
+  {"SPECIFIC_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0,
+   OPEN_FULL_TABLE},
+  {"SPECIFIC_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
+  {"ORDINAL_POSITION", 21 , MYSQL_TYPE_LONG, 0, 0, 0, OPEN_FULL_TABLE},
+  {"PARAMETER_MODE", 5, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE},
+  {"PARAMETER_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE},
+  {"DATA_TYPE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
+  {"CHARACTER_MAXIMUM_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0, OPEN_FULL_TABLE},
+  {"CHARACTER_OCTET_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0, OPEN_FULL_TABLE},
+  {"NUMERIC_PRECISION", 21 , MYSQL_TYPE_LONG, 0, 1, 0, OPEN_FULL_TABLE},
+  {"NUMERIC_SCALE", 21 , MYSQL_TYPE_LONG, 0, 1, 0, OPEN_FULL_TABLE},
+  {"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE},
+  {"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE},
+  {"DTD_IDENTIFIER", 65535, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
+  {"ROUTINE_TYPE", 9, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
+  {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}
+};
+
+
 ST_FIELD_INFO tablespaces_fields_info[]=
 {
   {"TABLESPACE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0,
@@ -6901,6 +7232,8 @@ ST_SCHEMA_TABLE schema_tables[]=
    OPTIMIZE_I_S_TABLE|OPEN_TABLE_ONLY},
   {"OPEN_TABLES", open_tables_fields_info, create_schema_table,
    fill_open_tables, make_old_format, 0, -1, -1, 1, 0},
+  {"PARAMETERS", parameters_fields_info, create_schema_table,
+   fill_schema_proc, 0, 0, -1, -1, 0, 0},
   {"PARTITIONS", partitions_fields_info, create_schema_table,
    get_all_tables, 0, get_schema_partitions_record, 1, 2, 0,
    OPTIMIZE_I_S_TABLE|OPEN_TABLE_ONLY},
@@ -6943,7 +7276,7 @@ ST_SCHEMA_TABLE schema_tables[]=
    fill_schema_table_privileges, 0, 0, -1, -1, 0, 0},
   {"TRIGGERS", triggers_fields_info, create_schema_table,
    get_all_tables, make_old_format, get_schema_triggers_record, 5, 6, 0,
-   OPTIMIZE_I_S_TABLE|OPEN_TABLE_ONLY},
+   OPEN_TRIGGER_ONLY|OPTIMIZE_I_S_TABLE},
   {"USER_PRIVILEGES", user_privileges_fields_info, create_schema_table, 
    fill_schema_user_privileges, 0, 0, -1, -1, 0, 0},
   {"VARIABLES", variables_fields_info, create_schema_table, fill_variables,

=== modified file 'sql/sql_trigger.cc'
--- a/sql/sql_trigger.cc	2010-01-07 05:42:07 +0000
+++ b/sql/sql_trigger.cc	2010-01-15 11:42:15 +0000
@@ -1198,12 +1198,13 @@ bool Table_triggers_list::check_n_load(T
 
           DBUG_RETURN(1); // EOM
         }
-
-        push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
-                            ER_TRG_NO_CREATION_CTX,
-                            ER(ER_TRG_NO_CREATION_CTX),
-                            (const char*) db,
-                            (const char*) table_name);
+        
+        if (!thd->no_warnings_for_error)
+          push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+                              ER_TRG_NO_CREATION_CTX,
+                              ER(ER_TRG_NO_CREATION_CTX),
+                              (const char*) db,
+                              (const char*) table_name);
 
         if (!(trg_client_cs_name= alloc_lex_string(&table->mem_root)) ||
             !(trg_connection_cl_name= alloc_lex_string(&table->mem_root)) ||
@@ -1332,12 +1333,12 @@ bool Table_triggers_list::check_n_load(T
             MySQL, which does not support triggers definers. We should emit
             warning here.
           */
-
-          push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
-                              ER_TRG_NO_DEFINER, ER(ER_TRG_NO_DEFINER),
-                              (const char*) db,
-                              (const char*) lex.sphead->m_name.str);
-
+          if (!thd->no_warnings_for_error)
+            push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+                                ER_TRG_NO_DEFINER, ER(ER_TRG_NO_DEFINER),
+                                (const char*) db,
+                                (const char*) lex.sphead->m_name.str);
+          
           /*
             Set definer to the '' to correct displaying in the information
             schema.

=== modified file 'sql/sql_view.cc'
--- a/sql/sql_view.cc	2010-01-07 05:42:07 +0000
+++ b/sql/sql_view.cc	2010-01-15 11:42:15 +0000
@@ -1123,8 +1123,18 @@ bool mysql_make_view(THD *thd, File_pars
                         table->db, table->table_name);
     get_default_definer(thd, &table->definer);
   }
+
+  /*
+    Initialize view definition context by character set names loaded from
+    the view definition file. Use UTF8 character set if view definition
+    file is of old version and does not contain the character set names.
+  */
+  table->view_creation_ctx= View_creation_ctx::create(thd, table);
+
   if (flags & OPEN_VIEW_NO_PARSE)
   {
+    if (arena)
+      thd->restore_active_arena(arena, &backup);
     DBUG_RETURN(FALSE);
   }
 
@@ -1139,13 +1149,6 @@ bool mysql_make_view(THD *thd, File_pars
 
   /*TODO: md5 test here and warning if it is differ */
 
-  /*
-    Initialize view definition context by character set names loaded from
-    the view definition file. Use UTF8 character set if view definition
-    file is of old version and does not contain the character set names.
-  */
-
-  table->view_creation_ctx= View_creation_ctx::create(thd, table);
 
   /*
     TODO: TABLE mem root should be used here when VIEW will be stored in

=== modified file 'sql/unireg.h'
--- a/sql/unireg.h	2009-12-28 12:54:16 +0000
+++ b/sql/unireg.h	2010-01-15 11:42:15 +0000
@@ -194,6 +194,11 @@
 */
 #define OPTIMIZE_I_S_TABLE     OPEN_VIEW_FULL*2
 
+/*
+  The flag means that we need to process trigger files only.
+*/
+#define OPEN_TRIGGER_ONLY      OPTIMIZE_I_S_TABLE*2
+
 #define SC_INFO_LENGTH 4		/* Form format constant */
 #define TE_INFO_LENGTH 3
 #define MTYP_NOEMPTY_BIT 128

Attachment: [text/bzr-bundle] bzr/sergey.glukhov@sun.com-20100115114215-49hv39b0mm4hudsc.bundle
Thread
bzr push into mysql-5.5-next-mr branch (Sergey.Glukhov:2959 to 2960)WL#2003 WL#2822Sergey Glukhov15 Jan