mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
28f9704737
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
208 lines
12 KiB
Text
208 lines
12 KiB
Text
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;
|