mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
9cba6c5aa3
This allows one to run the test suite even if any of the following options are changed: - character-set-server - collation-server - join-cache-level - log-basename - max-allowed-packet - optimizer-switch - query-cache-size and query-cache-type - skip-name-resolve - table-definition-cache - table-open-cache - Some innodb options etc Changes: - Don't print out the value of system variables as one can't depend on them to being constants. - Don't set global variables to 'default' as the default may not be the same as the test was started with if there was an additional option file. Instead save original value and reset it at end of test. - Test that depends on the latin1 character set should include default_charset.inc or set the character set to latin1 - Test that depends on the original optimizer switch, should include default_optimizer_switch.inc - Test that depends on the value of a specific system variable should set it in the test (like optimizer_use_condition_selectivity) - Split subselect3.test into subselect3.test and subselect3.inc to make it easier to set and reset system variables. - Added .opt files for test that required specfic options that could be changed by external configuration files. - Fixed result files in rockdsb & tokudb that had not been updated for a while.
253 lines
10 KiB
Text
253 lines
10 KiB
Text
#------------------------------------------------------------------------------
|
|
# 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;
|