is_routines.inc
来自「这个文件是windows mysql源码」· INC 代码 · 共 473 行 · 第 1/2 页
INC
473 行
ORDER BY routine_name;--horizontal_resultsALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;ALTER FUNCTION function_for_routines COMMENT 'updated comments';--vertical_results--replace_column 16 <created> 17 <modified>SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'ORDER BY routine_name;--horizontal_resultsDROP PROCEDURE sp_for_routines;DROP FUNCTION function_for_routines;SELECT * FROM information_schema.routines WHERE routine_schema = '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>SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'ORDER BY routine_name;--horizontal_resultsuse test;DROP DATABASE db_datadict;SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';--echo #########################################################################--echo # 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for--echo # ROUTINE_DEFINITION column--echo ########################################################################## Ensure that a stored procedure with a routine body that is too large to fit# into the INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION column correctly shows# as much of the information as is possible within the allotted size.#--disable_warningsDROP DATABASE IF EXISTS db_datadict;--enable_warningsCREATE DATABASE db_datadict;USE db_datadict;#--replace_result $other_engine_type <other_engine_type>evalCREATE 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_1VALUES ('abc', 98765 , 99999999 , 98765, 10);#--replace_result $other_engine_type <other_engine_type>evalCREATE 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_2VALUES ('abc', 98765 , 99999999 , 98765, 10);--echo # Checking the max. possible length of (currently) 4 GByte is not--echo # in this environment here.delimiter //;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//delimiter ;//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"SELECT *, LENGTH(routine_definition) FROM information_schema.routinesWHERE routine_schema = 'db_datadict';--horizontal_results# CleanupDROP DATABASE db_datadict;# ------------------------------------------------------------------------------------------------echo ########################################################################--echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and--echo # DDL on INFORMATION_SCHEMA table are not supported--echo ######################################################################### 3.2.1.3: Ensure that no user may execute an INSERT statement on any# INFORMATION_SCHEMA table.# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any# INFORMATION_SCHEMA table.# 3.2.1.5: Ensure that no user may execute a DELETE statement on any# INFORMATION_SCHEMA table.# 3.2.1.8: Ensure that no user may create an index on an INFORMATION_SCHEMA table.# 3.2.1.9: Ensure that no user may alter the definition of an# INFORMATION_SCHEMA table.# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any# other database.# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data# in an INFORMATION_SCHEMA table.#--disable_warningsDROP DATABASE IF EXISTS db_datadict;--enable_warningsCREATE DATABASE db_datadict;USE db_datadict;CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';USE test;--error ER_DBACCESS_DENIED_ERRORINSERT INTO information_schema.routines (routine_name, routine_type )VALUES ('p2', 'procedure');--error ER_DBACCESS_DENIED_ERRORUPDATE information_schema.routines SET routine_name = 'p2'WHERE routine_body = 'sql';--error ER_DBACCESS_DENIED_ERRORDELETE FROM information_schema.routines ;#--error ER_DBACCESS_DENIED_ERRORTRUNCATE information_schema.routines ;--error ER_DBACCESS_DENIED_ERRORCREATE INDEX i7 ON information_schema.routines (routine_name);--error ER_DBACCESS_DENIED_ERRORALTER TABLE information_schema.routines ADD f1 INT;#--error ER_DBACCESS_DENIED_ERRORALTER TABLE information_schema.routines DISCARD TABLESPACE;--error ER_DBACCESS_DENIED_ERRORDROP TABLE information_schema.routines ;--error ER_DBACCESS_DENIED_ERRORALTER TABLE information_schema.routines RENAME db_datadict.routines;#--error ER_DBACCESS_DENIED_ERRORALTER TABLE information_schema.routines RENAME information_schema.xroutines;# CleanupDROP DATABASE db_datadict;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?