mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	Bug#37167 funcs_1: Many tests fail if the embedded server is used.
   Bug#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
Details:
- Remove the initial loading of data from tests if these data
  are not somewhere retrieved
- Remove any use of columns with attribute unicode
  (-> UCS2 is no more needed) from tests where unicode
  properties are not checked or somehow required
- Create a separate branch of the Character maximum length test
  (CML). If UCS2 is available than this test gets applied to
  every available type of string column with attribute unicode
  This prevents any loss of coverage by the points above.
- Disable the execution of is_tables_ndb which gives wrong
  results because of a bug. Correct the exepected results of
  this test.
- In case of tests failing when applied to the embedded server
    1) Create a variant of this test for the embedded server
  or
    2) Skip the test in case of embedded server
  depending on purpose and complexity of test.
- Skip the tests which could suffer from
  Bug 28309 First insert violates unique constraint - was "memory" table empty ?
  Bug 37380 Test funcs_1.is_columns_myisam_embedded fails on OS X
  (both bugs Mac OS X, embedded server, MySQL 5.0 only)
- Minor improvements like remove typos
		
	
		
			
				
	
	
		
			209 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| SHOW TABLES FROM information_schema LIKE 'TRIGGERS';
 | |
| Tables_in_information_schema (TRIGGERS)
 | |
| TRIGGERS
 | |
| #######################################################################
 | |
| # 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.TRIGGERS;
 | |
| CREATE PROCEDURE test.p1() SELECT * FROM information_schema.TRIGGERS;
 | |
| CREATE FUNCTION test.f1() returns BIGINT
 | |
| BEGIN
 | |
| DECLARE counter BIGINT DEFAULT NULL;
 | |
| SELECT COUNT(*) INTO counter FROM information_schema.TRIGGERS;
 | |
| RETURN counter;
 | |
| END//
 | |
| # Attention: The printing of the next result sets is disabled.
 | |
| SELECT * FROM information_schema.TRIGGERS;
 | |
| 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.12.1: INFORMATION_SCHEMA.TRIGGERS layout
 | |
| #########################################################################
 | |
| DESCRIBE          information_schema.TRIGGERS;
 | |
| Field	Type	Null	Key	Default	Extra
 | |
| TRIGGER_CATALOG	varchar(512)	YES		NULL	
 | |
| TRIGGER_SCHEMA	varchar(64)	NO			
 | |
| TRIGGER_NAME	varchar(64)	NO			
 | |
| EVENT_MANIPULATION	varchar(6)	NO			
 | |
| EVENT_OBJECT_CATALOG	varchar(512)	YES		NULL	
 | |
| EVENT_OBJECT_SCHEMA	varchar(64)	NO			
 | |
| EVENT_OBJECT_TABLE	varchar(64)	NO			
 | |
| ACTION_ORDER	bigint(4)	NO		0	
 | |
| ACTION_CONDITION	longtext	YES		NULL	
 | |
| ACTION_STATEMENT	longtext	NO		NULL	
 | |
| ACTION_ORIENTATION	varchar(9)	NO			
 | |
| ACTION_TIMING	varchar(6)	NO			
 | |
| ACTION_REFERENCE_OLD_TABLE	varchar(64)	YES		NULL	
 | |
| ACTION_REFERENCE_NEW_TABLE	varchar(64)	YES		NULL	
 | |
| ACTION_REFERENCE_OLD_ROW	varchar(3)	NO			
 | |
| ACTION_REFERENCE_NEW_ROW	varchar(3)	NO			
 | |
| CREATED	datetime	YES		NULL	
 | |
| SQL_MODE	longtext	NO		NULL	
 | |
| DEFINER	longtext	NO		NULL	
 | |
| SHOW CREATE TABLE information_schema.TRIGGERS;
 | |
| Table	Create Table
 | |
| TRIGGERS	CREATE TEMPORARY TABLE `TRIGGERS` (
 | |
|   `TRIGGER_CATALOG` varchar(512) default NULL,
 | |
|   `TRIGGER_SCHEMA` varchar(64) NOT NULL default '',
 | |
|   `TRIGGER_NAME` varchar(64) NOT NULL default '',
 | |
|   `EVENT_MANIPULATION` varchar(6) NOT NULL default '',
 | |
|   `EVENT_OBJECT_CATALOG` varchar(512) default NULL,
 | |
|   `EVENT_OBJECT_SCHEMA` varchar(64) NOT NULL default '',
 | |
|   `EVENT_OBJECT_TABLE` varchar(64) NOT NULL default '',
 | |
|   `ACTION_ORDER` bigint(4) NOT NULL default '0',
 | |
|   `ACTION_CONDITION` longtext,
 | |
|   `ACTION_STATEMENT` longtext NOT NULL,
 | |
|   `ACTION_ORIENTATION` varchar(9) NOT NULL default '',
 | |
|   `ACTION_TIMING` varchar(6) NOT NULL default '',
 | |
|   `ACTION_REFERENCE_OLD_TABLE` varchar(64) default NULL,
 | |
|   `ACTION_REFERENCE_NEW_TABLE` varchar(64) default NULL,
 | |
|   `ACTION_REFERENCE_OLD_ROW` varchar(3) NOT NULL default '',
 | |
|   `ACTION_REFERENCE_NEW_ROW` varchar(3) NOT NULL default '',
 | |
|   `CREATED` datetime default NULL,
 | |
|   `SQL_MODE` longtext NOT NULL,
 | |
|   `DEFINER` longtext NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=utf8
 | |
| SHOW COLUMNS FROM information_schema.TRIGGERS;
 | |
| Field	Type	Null	Key	Default	Extra
 | |
| TRIGGER_CATALOG	varchar(512)	YES		NULL	
 | |
| TRIGGER_SCHEMA	varchar(64)	NO			
 | |
| TRIGGER_NAME	varchar(64)	NO			
 | |
| EVENT_MANIPULATION	varchar(6)	NO			
 | |
| EVENT_OBJECT_CATALOG	varchar(512)	YES		NULL	
 | |
| EVENT_OBJECT_SCHEMA	varchar(64)	NO			
 | |
| EVENT_OBJECT_TABLE	varchar(64)	NO			
 | |
| ACTION_ORDER	bigint(4)	NO		0	
 | |
| ACTION_CONDITION	longtext	YES		NULL	
 | |
| ACTION_STATEMENT	longtext	NO		NULL	
 | |
| ACTION_ORIENTATION	varchar(9)	NO			
 | |
| ACTION_TIMING	varchar(6)	NO			
 | |
| ACTION_REFERENCE_OLD_TABLE	varchar(64)	YES		NULL	
 | |
| ACTION_REFERENCE_NEW_TABLE	varchar(64)	YES		NULL	
 | |
| ACTION_REFERENCE_OLD_ROW	varchar(3)	NO			
 | |
| ACTION_REFERENCE_NEW_ROW	varchar(3)	NO			
 | |
| CREATED	datetime	YES		NULL	
 | |
| SQL_MODE	longtext	NO		NULL	
 | |
| DEFINER	longtext	NO		NULL	
 | |
| SELECT * FROM information_schema.triggers
 | |
| WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
 | |
| OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
 | |
| OR action_reference_new_table IS NOT NULL;
 | |
| 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
 | |
| ##################################################################################
 | |
| # Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
 | |
| ##################################################################################
 | |
| DROP DATABASE IF EXISTS db_datadict;
 | |
| CREATE DATABASE db_datadict;
 | |
| DROP   USER 'testuser1'@'localhost';
 | |
| CREATE USER 'testuser1'@'localhost';
 | |
| DROP   USER 'testuser2'@'localhost';
 | |
| CREATE USER 'testuser2'@'localhost';
 | |
| DROP   USER 'testuser3'@'localhost';
 | |
| CREATE USER 'testuser3'@'localhost';
 | |
| DROP   USER 'testuser4'@'localhost';
 | |
| CREATE USER 'testuser4'@'localhost';
 | |
| GRANT SUPER ON *.* TO 'testuser1'@'localhost';
 | |
| GRANT SUPER ON *.* TO 'testuser3'@'localhost';
 | |
| GRANT SUPER ON *.* TO 'testuser4'@'localhost';
 | |
| GRANT ALL ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
 | |
| # Establish connection testuser1 (user=testuser1)
 | |
| CREATE TABLE db_datadict.t1 (f1 INT, f2 INT, f3 INT)
 | |
| ENGINE = <engine_type>;
 | |
| CREATE TRIGGER trg1 BEFORE INSERT
 | |
| ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
 | |
| GRANT ALL ON db_datadict.t1 TO 'testuser2'@'localhost';
 | |
| GRANT SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
 | |
| SELECT * FROM information_schema.triggers
 | |
| WHERE trigger_name = 'trg1';
 | |
| 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
 | |
| NULL	db_datadict	trg1	INSERT	NULL	db_datadict	t1	0	NULL	SET @test_before = 2, new.f1 = @test_before	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		testuser1@localhost
 | |
| SHOW TRIGGERS FROM db_datadict;
 | |
| Trigger	Event	Table	Statement	Timing	Created	sql_mode	Definer
 | |
| trg1	INSERT	t1	SET @test_before = 2, new.f1 = @test_before	BEFORE	NULL		testuser1@localhost
 | |
| # Establish connection testuser2 (user=testuser2)
 | |
| SHOW GRANTS FOR 'testuser2'@'localhost';
 | |
| # No SUPER Privilege --> no result for query
 | |
| SELECT * FROM information_schema.triggers
 | |
| WHERE trigger_name = 'trg1';
 | |
| 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
 | |
| NULL	db_datadict	trg1	INSERT	NULL	db_datadict	t1	0	NULL	SET @test_before = 2, new.f1 = @test_before	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		testuser1@localhost
 | |
| SHOW TRIGGERS FROM db_datadict;
 | |
| Trigger	Event	Table	Statement	Timing	Created	sql_mode	Definer
 | |
| trg1	INSERT	t1	SET @test_before = 2, new.f1 = @test_before	BEFORE	NULL		testuser1@localhost
 | |
| # Establish connection testuser3 (user=testuser3)
 | |
| SHOW GRANTS FOR 'testuser3'@'localhost';
 | |
| # SUPER Privilege + SELECT Privilege on t1 --> result for query
 | |
| SELECT * FROM information_schema.triggers
 | |
| WHERE trigger_name = 'trg1';
 | |
| 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
 | |
| NULL	db_datadict	trg1	INSERT	NULL	db_datadict	t1	0	NULL	SET @test_before = 2, new.f1 = @test_before	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		testuser1@localhost
 | |
| SHOW TRIGGERS FROM db_datadict;
 | |
| Trigger	Event	Table	Statement	Timing	Created	sql_mode	Definer
 | |
| trg1	INSERT	t1	SET @test_before = 2, new.f1 = @test_before	BEFORE	NULL		testuser1@localhost
 | |
| # Establish connection testuser4 (user=testuser4)
 | |
| SHOW GRANTS FOR 'testuser4'@'localhost';
 | |
| # SUPER Privilege + no SELECT Privilege on t1 --> no result for query
 | |
| SELECT * FROM information_schema.triggers
 | |
| WHERE trigger_name = 'trg1';
 | |
| 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
 | |
| NULL	db_datadict	trg1	INSERT	NULL	db_datadict	t1	0	NULL	SET @test_before = 2, new.f1 = @test_before	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		testuser1@localhost
 | |
| SHOW TRIGGERS FROM db_datadict;
 | |
| Trigger	Event	Table	Statement	Timing	Created	sql_mode	Definer
 | |
| trg1	INSERT	t1	SET @test_before = 2, new.f1 = @test_before	BEFORE	NULL		testuser1@localhost
 | |
| # Switch to connection default and close connections testuser1 - testuser4
 | |
| SELECT * FROM information_schema.triggers
 | |
| WHERE trigger_name = 'trg1';
 | |
| 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
 | |
| NULL	db_datadict	trg1	INSERT	NULL	db_datadict	t1	0	NULL	SET @test_before = 2, new.f1 = @test_before	ROW	BEFORE	NULL	NULL	OLD	NEW	NULL		testuser1@localhost
 | |
| SHOW TRIGGERS FROM db_datadict;
 | |
| Trigger	Event	Table	Statement	Timing	Created	sql_mode	Definer
 | |
| trg1	INSERT	t1	SET @test_before = 2, new.f1 = @test_before	BEFORE	NULL		testuser1@localhost
 | |
| DROP USER 'testuser1'@'localhost';
 | |
| DROP USER 'testuser2'@'localhost';
 | |
| DROP USER 'testuser3'@'localhost';
 | |
| DROP USER 'testuser4'@'localhost';
 | |
| DROP DATABASE db_datadict;
 | |
| #########################################################################
 | |
| # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TRIGGERS modifications
 | |
| #########################################################################
 | |
| ########################################################################
 | |
| # 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 tables are not supported
 | |
| ########################################################################
 | |
| DROP DATABASE IF EXISTS db_datadict;
 | |
| CREATE DATABASE db_datadict;
 | |
| CREATE TABLE db_datadict.t1 (f1 BIGINT)
 | |
| ENGINE = <engine_type>;
 | |
| CREATE TRIGGER db_datadict.trg1 BEFORE INSERT
 | |
| ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
 | |
| INSERT INTO information_schema.triggers
 | |
| SELECT * FROM information_schema.triggers;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| UPDATE information_schema.triggers SET trigger_schema = 'test'
 | |
| WHERE table_name = 't1';
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| TRUNCATE information_schema.triggers;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| CREATE INDEX my_idx_on_triggers ON information_schema.triggers(trigger_schema);
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| ALTER TABLE information_schema.triggers DROP PRIMARY KEY;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| ALTER TABLE information_schema.triggers ADD f1 INT;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| DROP TABLE information_schema.triggers;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| ALTER TABLE information_schema.triggers RENAME db_datadict.triggers;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| ALTER TABLE information_schema.triggers RENAME information_schema.xtriggers;
 | |
| ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 | |
| DROP DATABASE db_datadict;
 |