80 lines
3.6 KiB
Text
80 lines
3.6 KiB
Text
--echo #
|
|
--echo # WL#14722 Support IF NOT EXISTS clause
|
|
--echo # in CREATE PROCEDURE/FUNCTION/TRIGGER
|
|
--echo #
|
|
|
|
--echo
|
|
--echo # 1. Stored Procedures (SPs)
|
|
--echo
|
|
--echo # 1.1. Must execute successfully since the SP does not exist
|
|
CREATE PROCEDURE IF NOT EXISTS sp1() BEGIN END;
|
|
--echo # 1.2. Must report a warning that the SP already exists
|
|
CREATE PROCEDURE IF NOT EXISTS sp1() BEGIN END;
|
|
--echo # 1.3. Must fail with error that the SP already exists
|
|
--error ER_SP_ALREADY_EXISTS
|
|
CREATE PROCEDURE sp1() BEGIN END;
|
|
DROP PROCEDURE sp1;
|
|
|
|
--echo
|
|
--echo # 2. Stored Functions (SFs)
|
|
--echo
|
|
--echo # 2.1. Must execute successfully since the SF does not exist
|
|
CREATE FUNCTION IF NOT EXISTS sf1() RETURNS INT DETERMINISTIC return 0;
|
|
--echo # 2.2. Must report a warning since the SF already exists
|
|
CREATE FUNCTION IF NOT EXISTS sf1() RETURNS INT DETERMINISTIC return 0;
|
|
--echo # 2.3. Must fail with error since the SF already exists
|
|
--error ER_SP_ALREADY_EXISTS
|
|
CREATE FUNCTION sf1() RETURNS INT DETERMINISTIC return 0;
|
|
DROP FUNCTION sf1;
|
|
--echo # 2.4. Must report a warning since it has the same name as a native function
|
|
CREATE FUNCTION IF NOT EXISTS abs() RETURNS INT DETERMINISTIC return 0;
|
|
DROP FUNCTION abs;
|
|
--echo # 2.5. Must report a warning that UDF will override the SF
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
--eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"
|
|
CREATE FUNCTION IF NOT EXISTS metaphon() RETURNS INT DETERMINISTIC return 0;
|
|
DROP FUNCTION metaphon;
|
|
DROP FUNCTION test.metaphon;
|
|
|
|
--echo
|
|
--echo # 3. Loadable Functions / User Defined Functions (UDFs)
|
|
--echo
|
|
--echo # 3.1. Must execute successfully since the UDF does not exist
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
--eval CREATE FUNCTION IF NOT EXISTS metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"
|
|
--echo # 3.2. Must report a warning since the UDF already exists
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
--eval CREATE FUNCTION IF NOT EXISTS metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"
|
|
--echo # 3.3. Must fail with error since the UDF already exists
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
--error ER_UDF_EXISTS
|
|
--eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"
|
|
DROP FUNCTION metaphon;
|
|
--echo # 3.4. Must fail with an error since native function already exists
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
--error ER_IF_NOT_EXISTS_UNSUPPORTED_UDF_NATIVE_FCT_NAME_COLLISION
|
|
--eval CREATE FUNCTION IF NOT EXISTS sum RETURNS INT SONAME "$UDF_EXAMPLE_LIB"
|
|
--echo # 3.5. Will succeed without warning, but UDF will override the SF
|
|
CREATE FUNCTION IF NOT EXISTS metaphon() RETURNS INT DETERMINISTIC return 0;
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
--eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"
|
|
DROP FUNCTION metaphon;
|
|
DROP FUNCTION test.metaphon;
|
|
|
|
--echo
|
|
--echo # 4. Triggers
|
|
--echo
|
|
CREATE TABLE t1 (a INT);
|
|
--echo # 4.1. Must execute successfully since the trigger does not exist
|
|
CREATE TRIGGER IF NOT EXISTS trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN END;
|
|
--echo # 4.2. Must report a warning since the trigger already exists on the same table
|
|
CREATE TRIGGER IF NOT EXISTS trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN END;
|
|
--echo # 4.3. Must fail with error since the trigger already exists on a different table
|
|
CREATE TABLE t2 (a INT);
|
|
--error ER_IF_NOT_EXISTS_UNSUPPORTED_TRG_EXISTS_ON_DIFFERENT_TABLE
|
|
CREATE TRIGGER IF NOT EXISTS trg1 BEFORE INSERT ON t2 FOR EACH ROW BEGIN END;
|
|
DROP TABLE t2;
|
|
--echo # 4.4. Must fail with error since the trigger already exists
|
|
--error ER_TRG_ALREADY_EXISTS
|
|
CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN END;
|
|
DROP TABLE t1;
|