mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-27 05:56:07 +03:00 
			
		
		
		
	37167 funcs_1: Many tests fail if the embedded
                  server is used.
   37164 funcs_1: Some tests fail if an optional
                  character set is missing.
   + some cleanup within the testsuite related to the
     fixes above
   + some adjustments to open bugs on Mac OS X
2. Skip tests which suffer from bug
   37456 funcs_1: Several tests crash when used
                  with embedded server
3. Minor cleanup in some tests
		
	
		
			
				
	
	
		
			651 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			651 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| SHOW TABLES FROM information_schema LIKE 'ROUTINES';
 | |
| Tables_in_information_schema (ROUTINES)
 | |
| ROUTINES
 | |
| #######################################################################
 | |
| # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
 | |
| #######################################################################
 | |
| DROP VIEW      IF EXISTS test.v1;
 | |
| DROP PROCEDURE IF EXISTS test.p1;
 | |
| DROP FUNCTION  IF EXISTS test.f1;
 | |
| CREATE VIEW test.v1 AS     SELECT * FROM information_schema.ROUTINES;
 | |
| CREATE PROCEDURE test.p1() SELECT * FROM information_schema.ROUTINES;
 | |
| CREATE FUNCTION test.f1() returns BIGINT
 | |
| BEGIN
 | |
| DECLARE counter BIGINT DEFAULT NULL;
 | |
| SELECT COUNT(*) INTO counter FROM information_schema.ROUTINES;
 | |
| RETURN counter;
 | |
| END//
 | |
| # Attention: The printing of the next result sets is disabled.
 | |
| SELECT * FROM information_schema.ROUTINES;
 | |
| SELECT * FROM test.v1;
 | |
| CALL test.p1;
 | |
| SELECT test.f1();
 | |
| DROP VIEW test.v1;
 | |
| DROP PROCEDURE test.p1;
 | |
| DROP FUNCTION test.f1;
 | |
| #########################################################################
 | |
| # Testcase 3.2.8.1: INFORMATION_SCHEMA.ROUTINES layout
 | |
| #########################################################################
 | |
| DESCRIBE          information_schema.ROUTINES;
 | |
| Field	Type	Null	Key	Default	Extra
 | |
| SPECIFIC_NAME	varchar(64)	NO			
 | |
| ROUTINE_CATALOG	varchar(512)	YES		NULL	
 | |
| ROUTINE_SCHEMA	varchar(64)	NO			
 | |
| ROUTINE_NAME	varchar(64)	NO			
 | |
| ROUTINE_TYPE	varchar(9)	NO			
 | |
| DTD_IDENTIFIER	varchar(64)	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	longtext	NO		NULL	
 | |
| ROUTINE_COMMENT	varchar(64)	NO			
 | |
| DEFINER	varchar(77)	NO			
 | |
| CHARACTER_SET_CLIENT	varchar(32)	NO			
 | |
| COLLATION_CONNECTION	varchar(32)	NO			
 | |
| DATABASE_COLLATION	varchar(32)	NO
 | |
| 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) DEFAULT NULL,
 | |
|   `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,
 | |
|   `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` longtext NOT NULL,
 | |
|   `ROUTINE_COMMENT` varchar(64) NOT NULL DEFAULT '',
 | |
|   `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 ''
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=utf8
 | |
| SHOW COLUMNS FROM information_schema.ROUTINES;
 | |
| Field	Type	Null	Key	Default	Extra
 | |
| SPECIFIC_NAME	varchar(64)	NO			
 | |
| ROUTINE_CATALOG	varchar(512)	YES		NULL	
 | |
| ROUTINE_SCHEMA	varchar(64)	NO			
 | |
| ROUTINE_NAME	varchar(64)	NO			
 | |
| ROUTINE_TYPE	varchar(9)	NO			
 | |
| DTD_IDENTIFIER	varchar(64)	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	longtext	NO		NULL	
 | |
| ROUTINE_COMMENT	varchar(64)	NO			
 | |
| DEFINER	varchar(77)	NO			
 | |
| CHARACTER_SET_CLIENT	varchar(32)	NO			
 | |
| COLLATION_CONNECTION	varchar(32)	NO			
 | |
| DATABASE_COLLATION	varchar(32)	NO
 | |
| USE test;
 | |
| DROP PROCEDURE IF EXISTS sp_for_routines;
 | |
| DROP FUNCTION  IF EXISTS function_for_routines;
 | |
| CREATE PROCEDURE sp_for_routines()      SELECT 'db_datadict';
 | |
| CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
 | |
| SELECT specific_name,routine_catalog,routine_schema,routine_name,routine_type,
 | |
| routine_body,external_name,external_language,parameter_style,sql_path
 | |
| FROM information_schema.routines
 | |
| WHERE routine_catalog   IS NOT NULL OR external_name   IS NOT NULL
 | |
| OR external_language IS NOT NULL OR sql_path        IS NOT NULL
 | |
| OR routine_body      <> 'SQL'    OR parameter_style <> 'SQL'
 | |
|    OR specific_name     <> routine_name;
 | |
| specific_name	routine_catalog	routine_schema	routine_name	routine_type	routine_body	external_name	external_language	parameter_style	sql_path
 | |
| DROP PROCEDURE sp_for_routines;
 | |
| DROP FUNCTION  function_for_routines;
 | |
| ################################################################################
 | |
| # Testcase 3.2.8.2 + 3.2.8.3: INFORMATION_SCHEMA.ROUTINES accessible information
 | |
| ################################################################################
 | |
| DROP DATABASE IF EXISTS db_datadict;
 | |
| DROP DATABASE IF EXISTS db_datadict_2;
 | |
| CREATE DATABASE db_datadict;
 | |
| USE db_datadict;
 | |
| CREATE TABLE res_6_408002_1(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
 | |
| ENGINE = <other_engine_type>;
 | |
| INSERT INTO res_6_408002_1(f1, f2, f3, f4)
 | |
| VALUES('abc', 'xyz', '1989-11-09', 0815);
 | |
| DROP PROCEDURE IF EXISTS sp_6_408002_1;
 | |
| CREATE PROCEDURE sp_6_408002_1()
 | |
| BEGIN
 | |
| SELECT * FROM db_datadict.res_6_408002_1;
 | |
| END//
 | |
| CREATE DATABASE db_datadict_2;
 | |
| USE db_datadict_2;
 | |
| CREATE TABLE res_6_408002_2(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
 | |
| ENGINE = <other_engine_type>;
 | |
| INSERT INTO res_6_408002_2(f1, f2, f3, f4)
 | |
| VALUES('abc', 'xyz', '1990-10-03', 4711);
 | |
| DROP PROCEDURE IF EXISTS sp_6_408002_2;
 | |
| CREATE PROCEDURE sp_6_408002_2()
 | |
| BEGIN
 | |
| SELECT * FROM db_datadict_2.res_6_408002_2;
 | |
| END//
 | |
| DROP   USER 'testuser1'@'localhost';
 | |
| CREATE USER 'testuser1'@'localhost';
 | |
| DROP   USER 'testuser2'@'localhost';
 | |
| CREATE USER 'testuser2'@'localhost';
 | |
| DROP   USER 'testuser3'@'localhost';
 | |
| CREATE USER 'testuser3'@'localhost';
 | |
| GRANT SELECT  ON db_datadict_2.* TO 'testuser1'@'localhost';
 | |
| GRANT EXECUTE ON db_datadict_2.* TO 'testuser1'@'localhost';
 | |
| GRANT EXECUTE ON db_datadict.*   TO 'testuser1'@'localhost';
 | |
| GRANT SELECT  ON db_datadict.*   TO 'testuser2'@'localhost';
 | |
| GRANT EXECUTE ON PROCEDURE db_datadict_2.sp_6_408002_2
 | |
| TO 'testuser2'@'localhost';
 | |
| GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
 | |
| 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	NULL	db_datadict	sp_6_408002_1	PROCEDURE	NULL	SQL	BEGIN
 | |
| SELECT * FROM db_datadict.res_6_408002_1;
 | |
| END	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	NULL	db_datadict_2	sp_6_408002_2	PROCEDURE	NULL	SQL	BEGIN
 | |
| SELECT * FROM db_datadict_2.res_6_408002_2;
 | |
| END	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_1	NULL	db_datadict	sp_6_408002_1	PROCEDURE	NULL	SQL	BEGIN
 | |
| SELECT * FROM db_datadict.res_6_408002_1;
 | |
| END	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	NULL	db_datadict_2	sp_6_408002_2	PROCEDURE	NULL	SQL	BEGIN
 | |
| SELECT * FROM db_datadict_2.res_6_408002_2;
 | |
| END	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
 | |
| sp_6_408002_1	NULL	db_datadict	sp_6_408002_1	PROCEDURE	NULL	SQL	BEGIN
 | |
| SELECT * FROM db_datadict.res_6_408002_1;
 | |
| END	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	NULL	db_datadict_2	sp_6_408002_2	PROCEDURE	NULL	SQL	BEGIN
 | |
| SELECT * FROM db_datadict_2.res_6_408002_2;
 | |
| END	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
 | |
| # Switch to connection default and close connections testuser1,testuser2,testuser3
 | |
| DROP USER 'testuser1'@'localhost';
 | |
| DROP USER 'testuser2'@'localhost';
 | |
| DROP USER 'testuser3'@'localhost';
 | |
| USE test;
 | |
| DROP DATABASE db_datadict;
 | |
| DROP DATABASE db_datadict_2;
 | |
| #########################################################################
 | |
| # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.ROUTINES modifications
 | |
| #########################################################################
 | |
| 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
 | |
| USE db_datadict;
 | |
| 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'
 | |
| ORDER BY routine_name;
 | |
| SPECIFIC_NAME	function_for_routines
 | |
| ROUTINE_CATALOG	NULL
 | |
| ROUTINE_SCHEMA	db_datadict
 | |
| ROUTINE_NAME	function_for_routines
 | |
| ROUTINE_TYPE	FUNCTION
 | |
| DTD_IDENTIFIER	int(11)
 | |
| ROUTINE_BODY	SQL
 | |
| ROUTINE_DEFINITION	RETURN 0
 | |
| EXTERNAL_NAME	NULL
 | |
| EXTERNAL_LANGUAGE	NULL
 | |
| PARAMETER_STYLE	SQL
 | |
| IS_DETERMINISTIC	NO
 | |
| SQL_DATA_ACCESS	CONTAINS SQL
 | |
| SQL_PATH	NULL
 | |
| SECURITY_TYPE	DEFINER
 | |
| CREATED	<created>
 | |
| LAST_ALTERED	<modified>
 | |
| SQL_MODE	
 | |
| ROUTINE_COMMENT	
 | |
| DEFINER	root@localhost
 | |
| CHARACTER_SET_CLIENT	latin1
 | |
| COLLATION_CONNECTION	latin1_swedish_ci
 | |
| DATABASE_COLLATION	latin1_swedish_ci
 | |
| SPECIFIC_NAME	sp_for_routines
 | |
| ROUTINE_CATALOG	NULL
 | |
| ROUTINE_SCHEMA	db_datadict
 | |
| ROUTINE_NAME	sp_for_routines
 | |
| ROUTINE_TYPE	PROCEDURE
 | |
| DTD_IDENTIFIER	NULL
 | |
| ROUTINE_BODY	SQL
 | |
| ROUTINE_DEFINITION	SELECT 'db_datadict'
 | |
| EXTERNAL_NAME	NULL
 | |
| EXTERNAL_LANGUAGE	NULL
 | |
| PARAMETER_STYLE	SQL
 | |
| IS_DETERMINISTIC	NO
 | |
| SQL_DATA_ACCESS	CONTAINS SQL
 | |
| SQL_PATH	NULL
 | |
| SECURITY_TYPE	DEFINER
 | |
| CREATED	<created>
 | |
| LAST_ALTERED	<modified>
 | |
| SQL_MODE	
 | |
| ROUTINE_COMMENT	
 | |
| DEFINER	root@localhost
 | |
| CHARACTER_SET_CLIENT	latin1
 | |
| COLLATION_CONNECTION	latin1_swedish_ci
 | |
| DATABASE_COLLATION	latin1_swedish_ci
 | |
| ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;
 | |
| ALTER FUNCTION function_for_routines COMMENT 'updated comments';
 | |
| SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
 | |
| ORDER BY routine_name;
 | |
| SPECIFIC_NAME	function_for_routines
 | |
| ROUTINE_CATALOG	NULL
 | |
| ROUTINE_SCHEMA	db_datadict
 | |
| ROUTINE_NAME	function_for_routines
 | |
| ROUTINE_TYPE	FUNCTION
 | |
| DTD_IDENTIFIER	int(11)
 | |
| ROUTINE_BODY	SQL
 | |
| ROUTINE_DEFINITION	RETURN 0
 | |
| EXTERNAL_NAME	NULL
 | |
| EXTERNAL_LANGUAGE	NULL
 | |
| PARAMETER_STYLE	SQL
 | |
| IS_DETERMINISTIC	NO
 | |
| SQL_DATA_ACCESS	CONTAINS SQL
 | |
| SQL_PATH	NULL
 | |
| SECURITY_TYPE	DEFINER
 | |
| CREATED	<created>
 | |
| LAST_ALTERED	<modified>
 | |
| SQL_MODE	
 | |
| ROUTINE_COMMENT	updated comments
 | |
| DEFINER	root@localhost
 | |
| CHARACTER_SET_CLIENT	latin1
 | |
| COLLATION_CONNECTION	latin1_swedish_ci
 | |
| DATABASE_COLLATION	latin1_swedish_ci
 | |
| SPECIFIC_NAME	sp_for_routines
 | |
| ROUTINE_CATALOG	NULL
 | |
| ROUTINE_SCHEMA	db_datadict
 | |
| ROUTINE_NAME	sp_for_routines
 | |
| ROUTINE_TYPE	PROCEDURE
 | |
| DTD_IDENTIFIER	NULL
 | |
| ROUTINE_BODY	SQL
 | |
| ROUTINE_DEFINITION	SELECT 'db_datadict'
 | |
| EXTERNAL_NAME	NULL
 | |
| EXTERNAL_LANGUAGE	NULL
 | |
| PARAMETER_STYLE	SQL
 | |
| IS_DETERMINISTIC	NO
 | |
| SQL_DATA_ACCESS	CONTAINS SQL
 | |
| SQL_PATH	NULL
 | |
| SECURITY_TYPE	INVOKER
 | |
| CREATED	<created>
 | |
| LAST_ALTERED	<modified>
 | |
| SQL_MODE	
 | |
| ROUTINE_COMMENT	
 | |
| DEFINER	root@localhost
 | |
| CHARACTER_SET_CLIENT	latin1
 | |
| COLLATION_CONNECTION	latin1_swedish_ci
 | |
| 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
 | |
| 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'
 | |
| ORDER BY routine_name;
 | |
| SPECIFIC_NAME	function_for_routines
 | |
| ROUTINE_CATALOG	NULL
 | |
| ROUTINE_SCHEMA	db_datadict
 | |
| ROUTINE_NAME	function_for_routines
 | |
| ROUTINE_TYPE	FUNCTION
 | |
| DTD_IDENTIFIER	int(11)
 | |
| ROUTINE_BODY	SQL
 | |
| ROUTINE_DEFINITION	RETURN 0
 | |
| EXTERNAL_NAME	NULL
 | |
| EXTERNAL_LANGUAGE	NULL
 | |
| PARAMETER_STYLE	SQL
 | |
| IS_DETERMINISTIC	NO
 | |
| SQL_DATA_ACCESS	CONTAINS SQL
 | |
| SQL_PATH	NULL
 | |
| SECURITY_TYPE	DEFINER
 | |
| CREATED	<created>
 | |
| LAST_ALTERED	<modified>
 | |
| SQL_MODE	
 | |
| ROUTINE_COMMENT	
 | |
| DEFINER	root@localhost
 | |
| CHARACTER_SET_CLIENT	latin1
 | |
| COLLATION_CONNECTION	latin1_swedish_ci
 | |
| DATABASE_COLLATION	latin1_swedish_ci
 | |
| SPECIFIC_NAME	sp_for_routines
 | |
| ROUTINE_CATALOG	NULL
 | |
| ROUTINE_SCHEMA	db_datadict
 | |
| ROUTINE_NAME	sp_for_routines
 | |
| ROUTINE_TYPE	PROCEDURE
 | |
| DTD_IDENTIFIER	NULL
 | |
| ROUTINE_BODY	SQL
 | |
| ROUTINE_DEFINITION	SELECT 'db_datadict'
 | |
| EXTERNAL_NAME	NULL
 | |
| EXTERNAL_LANGUAGE	NULL
 | |
| PARAMETER_STYLE	SQL
 | |
| IS_DETERMINISTIC	NO
 | |
| SQL_DATA_ACCESS	CONTAINS SQL
 | |
| SQL_PATH	NULL
 | |
| SECURITY_TYPE	DEFINER
 | |
| CREATED	<created>
 | |
| LAST_ALTERED	<modified>
 | |
| SQL_MODE	
 | |
| ROUTINE_COMMENT	
 | |
| DEFINER	root@localhost
 | |
| CHARACTER_SET_CLIENT	latin1
 | |
| COLLATION_CONNECTION	latin1_swedish_ci
 | |
| 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
 | |
| #########################################################################
 | |
| # 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
 | |
| #          ROUTINE_DEFINITION column
 | |
| #########################################################################
 | |
| DROP DATABASE IF EXISTS db_datadict;
 | |
| CREATE DATABASE db_datadict;
 | |
| USE db_datadict;
 | |
| CREATE TABLE db_datadict.res_6_408004_1
 | |
| (f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
 | |
| ENGINE = <other_engine_type>;
 | |
| INSERT INTO db_datadict.res_6_408004_1
 | |
| VALUES ('abc', 98765 , 99999999 , 98765, 10);
 | |
| CREATE TABLE db_datadict.res_6_408004_2
 | |
| (f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
 | |
| ENGINE = <other_engine_type>;
 | |
| INSERT INTO db_datadict.res_6_408004_2
 | |
| VALUES ('abc', 98765 , 99999999 , 98765, 10);
 | |
| # Checking the max. possible length of (currently) 4 GByte is not
 | |
| # in this environment here.
 | |
| CREATE PROCEDURE sp_6_408004 ()
 | |
| BEGIN
 | |
| DECLARE done INTEGER DEFAULt 0;
 | |
| DECLARE variable_number_1 LONGTEXT;
 | |
| DECLARE variable_number_2 MEDIUMINT;
 | |
| DECLARE variable_number_3 LONGBLOB;
 | |
| DECLARE variable_number_4 REAL;
 | |
| DECLARE variable_number_5 YEAR;
 | |
| DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
 | |
| BEGIN
 | |
| OPEN cursor_number_1;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_1
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES (variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| BEGIN
 | |
| BEGIN
 | |
| SET done = 0;
 | |
| OPEN cursor_number_2;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_2
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES(variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| END;
 | |
| SET done = 0;
 | |
| OPEN cursor_number_3;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_3
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES(variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| END;
 | |
| END;
 | |
| BEGIN
 | |
| SET done = 0;
 | |
| OPEN cursor_number_4;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_4
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES (variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| END;
 | |
| BEGIN
 | |
| SET @a='test row';
 | |
| SELECT @a;
 | |
| SELECT @a;
 | |
| SELECT @a;
 | |
| END;
 | |
| BEGIN
 | |
| SET done = 0;
 | |
| OPEN cursor_number_5;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_5
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES (variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| END;
 | |
| BEGIN
 | |
| SET @a='test row';
 | |
| SELECT @a;
 | |
| SELECT @a;
 | |
| SELECT @a;
 | |
| END;
 | |
| END//
 | |
| CALL db_datadict.sp_6_408004 ();
 | |
| @a
 | |
| test row
 | |
| @a
 | |
| test row
 | |
| @a
 | |
| test row
 | |
| @a
 | |
| test row
 | |
| @a
 | |
| test row
 | |
| @a
 | |
| test row
 | |
| SELECT * FROM db_datadict.res_6_408004_2;
 | |
| f1	f2	f3	f4	f5
 | |
| abc	98765	99999999	98765	2010
 | |
| abc	98765	99999999	98765	2010
 | |
| abc	98765	99999999	98765	2010
 | |
| abc	98765	99999999	98765	2010
 | |
| abc	98765	99999999	98765	2010
 | |
| abc	98765	99999999	98765	2010
 | |
| SELECT *, LENGTH(routine_definition) FROM information_schema.routines
 | |
| WHERE routine_schema = 'db_datadict';
 | |
| SPECIFIC_NAME	sp_6_408004
 | |
| ROUTINE_CATALOG	NULL
 | |
| ROUTINE_SCHEMA	db_datadict
 | |
| ROUTINE_NAME	sp_6_408004
 | |
| ROUTINE_TYPE	PROCEDURE
 | |
| DTD_IDENTIFIER	NULL
 | |
| ROUTINE_BODY	SQL
 | |
| ROUTINE_DEFINITION	BEGIN
 | |
| DECLARE done INTEGER DEFAULt 0;
 | |
| DECLARE variable_number_1 LONGTEXT;
 | |
| DECLARE variable_number_2 MEDIUMINT;
 | |
| DECLARE variable_number_3 LONGBLOB;
 | |
| DECLARE variable_number_4 REAL;
 | |
| DECLARE variable_number_5 YEAR;
 | |
| DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 | |
| DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
 | |
| BEGIN
 | |
| OPEN cursor_number_1;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_1
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES (variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| BEGIN
 | |
| BEGIN
 | |
| SET done = 0;
 | |
| OPEN cursor_number_2;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_2
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES(variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| END;
 | |
| SET done = 0;
 | |
| OPEN cursor_number_3;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_3
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES(variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| END;
 | |
| END;
 | |
| BEGIN
 | |
| SET done = 0;
 | |
| OPEN cursor_number_4;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_4
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES (variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| END;
 | |
| BEGIN
 | |
| SET @a='test row';
 | |
| SELECT @a;
 | |
| SELECT @a;
 | |
| SELECT @a;
 | |
| END;
 | |
| BEGIN
 | |
| SET done = 0;
 | |
| OPEN cursor_number_5;
 | |
| WHILE done <> 1 DO
 | |
| FETCH cursor_number_5
 | |
| INTO variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5;
 | |
| IF done <> 0 THEN
 | |
| INSERT INTO res_6_408004_2
 | |
| VALUES (variable_number_1, variable_number_2, variable_number_3,
 | |
| variable_number_4, variable_number_5);
 | |
| END IF;
 | |
| END WHILE;
 | |
| END;
 | |
| BEGIN
 | |
| SET @a='test row';
 | |
| SELECT @a;
 | |
| SELECT @a;
 | |
| SELECT @a;
 | |
| END;
 | |
| END
 | |
| EXTERNAL_NAME	NULL
 | |
| EXTERNAL_LANGUAGE	NULL
 | |
| PARAMETER_STYLE	SQL
 | |
| IS_DETERMINISTIC	NO
 | |
| SQL_DATA_ACCESS	CONTAINS SQL
 | |
| SQL_PATH	NULL
 | |
| SECURITY_TYPE	DEFINER
 | |
| CREATED	YYYY-MM-DD hh:mm:ss
 | |
| LAST_ALTERED	YYYY-MM-DD hh:mm:ss
 | |
| SQL_MODE	
 | |
| ROUTINE_COMMENT	
 | |
| DEFINER	root@localhost
 | |
| CHARACTER_SET_CLIENT	latin1
 | |
| COLLATION_CONNECTION	latin1_swedish_ci
 | |
| DATABASE_COLLATION	latin1_swedish_ci
 | |
| LENGTH(routine_definition)	2549
 | |
| DROP DATABASE db_datadict;
 | |
| ########################################################################
 | |
| # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
 | |
| #           DDL on INFORMATION_SCHEMA table are not supported
 | |
| ########################################################################
 | |
| DROP DATABASE IF EXISTS db_datadict;
 | |
| CREATE DATABASE db_datadict;
 | |
| USE db_datadict;
 | |
| CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
 | |
| USE test;
 | |
| INSERT INTO information_schema.routines (routine_name, routine_type )
 | |
| VALUES ('p2', 'procedure');
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| UPDATE information_schema.routines SET routine_name = 'p2'
 | |
| WHERE routine_body = 'sql';
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| DELETE FROM information_schema.routines ;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| TRUNCATE information_schema.routines ;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| CREATE INDEX i7 ON information_schema.routines (routine_name);
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| ALTER TABLE information_schema.routines  ADD f1 INT;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| ALTER TABLE information_schema.routines  DISCARD TABLESPACE;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| DROP TABLE information_schema.routines ;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| ALTER TABLE information_schema.routines RENAME db_datadict.routines;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| ALTER TABLE information_schema.routines RENAME information_schema.xroutines;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| DROP DATABASE db_datadict;
 |