⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sp-vars.test

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 TEST
📖 第 1 页 / 共 2 页
字号:
############################################################################# Cleanup.############################################################################--disable_warnings# Drop stored routines (if any) for general SP-vars test cases. These routines# are created in include/sp-vars.inc file.DROP PROCEDURE IF EXISTS sp_vars_check_dflt;DROP PROCEDURE IF EXISTS sp_vars_check_assignment;DROP FUNCTION IF EXISTS sp_vars_check_ret1;DROP FUNCTION IF EXISTS sp_vars_check_ret2;DROP FUNCTION IF EXISTS sp_vars_check_ret3;DROP FUNCTION IF EXISTS sp_vars_check_ret4;--enable_warnings############################################################################# Some general tests for SP-vars functionality.############################################################################# Create the procedure in ANSI mode. Check that all necessary warnings are# emitted properly.SET @@sql_mode = 'ansi';--source include/sp-vars.inc--echo--echo -----------------------------------------------------------------echo Calling the routines, created in ANSI mode.--echo -----------------------------------------------------------------echoCALL sp_vars_check_dflt();CALL sp_vars_check_assignment();SELECT sp_vars_check_ret1();SELECT sp_vars_check_ret2();SELECT sp_vars_check_ret3();SELECT sp_vars_check_ret4();# Check that changing sql_mode after creating a store procedure does not# matter.SET @@sql_mode = 'traditional';--echo--echo -----------------------------------------------------------------echo Calling in TRADITIONAL mode the routines, created in ANSI mode.--echo -----------------------------------------------------------------echoCALL sp_vars_check_dflt();CALL sp_vars_check_assignment();SELECT sp_vars_check_ret1();SELECT sp_vars_check_ret2();SELECT sp_vars_check_ret3();SELECT sp_vars_check_ret4();# Create the procedure in TRADITIONAL mode. Check that error will be thrown on# execution.DROP PROCEDURE sp_vars_check_dflt;DROP PROCEDURE sp_vars_check_assignment;DROP FUNCTION sp_vars_check_ret1;DROP FUNCTION sp_vars_check_ret2;DROP FUNCTION sp_vars_check_ret3;DROP FUNCTION sp_vars_check_ret4;--source include/sp-vars.inc--echo--echo -----------------------------------------------------------------echo Calling the routines, created in TRADITIONAL mode.--echo -----------------------------------------------------------------echo--error ER_WARN_DATA_OUT_OF_RANGECALL sp_vars_check_dflt();--error ER_WARN_DATA_OUT_OF_RANGECALL sp_vars_check_assignment();--error ER_WARN_DATA_OUT_OF_RANGESELECT sp_vars_check_ret1();--error ER_WARN_DATA_OUT_OF_RANGESELECT sp_vars_check_ret2();--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELDSELECT sp_vars_check_ret3();# TODO: Is it an error, that only a warning is emitted here? Check the same# behaviour with tables.SELECT sp_vars_check_ret4();SET @@sql_mode = 'ansi';## Cleanup.#DROP PROCEDURE sp_vars_check_dflt;DROP PROCEDURE sp_vars_check_assignment;DROP FUNCTION sp_vars_check_ret1;DROP FUNCTION sp_vars_check_ret2;DROP FUNCTION sp_vars_check_ret3;DROP FUNCTION sp_vars_check_ret4;############################################################################# Tests for BIT data type.############################################################################--echo--echo -----------------------------------------------------------------echo BIT data type tests--echo -----------------------------------------------------------------echo## Prepare.#--disable_warningsDROP PROCEDURE IF EXISTS p1;--enable_warnings## Test case.#delimiter |;CREATE PROCEDURE p1()BEGIN  DECLARE v1 BIT;  DECLARE v2 BIT(1);  DECLARE v3 BIT(3) DEFAULT b'101';  DECLARE v4 BIT(64) DEFAULT 0x5555555555555555;  DECLARE v5 BIT(3);  DECLARE v6 BIT(64);  DECLARE v7 BIT(8) DEFAULT 128;  DECLARE v8 BIT(8) DEFAULT '128';  DECLARE v9 BIT(8) DEFAULT ' 128';  DECLARE v10 BIT(8) DEFAULT 'x 128';  SET v1 = v4;  SET v2 = 0;  SET v5 = v4; # check overflow  SET v6 = v3; # check padding  SELECT HEX(v1);  SELECT HEX(v2);  SELECT HEX(v3);  SELECT HEX(v4);  SELECT HEX(v5);  SELECT HEX(v6);  SELECT HEX(v7);  SELECT HEX(v8);  SELECT HEX(v9);  SELECT HEX(v10);END|delimiter ;|CALL p1();## Cleanup.#DROP PROCEDURE p1;############################################################################# Tests for CASE statements functionality:#   - test for general functionality (scopes, nested cases, CASE in loops);#   - test that if type of the CASE expression is changed on each iteration,#     the execution will be correct.############################################################################--echo--echo -----------------------------------------------------------------echo CASE expression tests.--echo -----------------------------------------------------------------echo## Prepare.#DROP PROCEDURE IF EXISTS p1;DROP PROCEDURE IF EXISTS p2;DROP TABLE IF EXISTS t1;## Test case.#CREATE TABLE t1(log_msg VARCHAR(1024));delimiter |;CREATE PROCEDURE p1(arg VARCHAR(255))BEGIN  INSERT INTO t1 VALUES('p1: step1');  CASE arg * 10    WHEN 10 * 10 THEN      INSERT INTO t1 VALUES('p1: case1: on 10');    WHEN 10 * 10 + 10 * 10 THEN      BEGIN        CASE arg / 10          WHEN 1 THEN            INSERT INTO t1 VALUES('p1: case1: case2: on 1');          WHEN 2 THEN            BEGIN              DECLARE i TINYINT DEFAULT 10;              WHILE i > 0 DO                INSERT INTO t1 VALUES(CONCAT('p1: case1: case2: loop: i: ', i));                                CASE MOD(i, 2)                  WHEN 0 THEN                    INSERT INTO t1 VALUES('p1: case1: case2: loop: i is even');                  WHEN 1 THEN                    INSERT INTO t1 VALUES('p1: case1: case2: loop: i is odd');                  ELSE                    INSERT INTO t1 VALUES('p1: case1: case2: loop: ERROR');                END CASE;                                    SET i = i - 1;              END WHILE;            END;          ELSE            INSERT INTO t1 VALUES('p1: case1: case2: ERROR');        END CASE;        CASE arg          WHEN 10 THEN            INSERT INTO t1 VALUES('p1: case1: case3: on 10');          WHEN 20 THEN            INSERT INTO t1 VALUES('p1: case1: case3: on 20');          ELSE            INSERT INTO t1 VALUES('p1: case1: case3: ERROR');        END CASE;      END;    ELSE      INSERT INTO t1 VALUES('p1: case1: ERROR');  END CASE;  CASE arg * 10    WHEN 10 * 10 THEN      INSERT INTO t1 VALUES('p1: case4: on 10');    WHEN 10 * 10 + 10 * 10 THEN      BEGIN        CASE arg / 10          WHEN 1 THEN            INSERT INTO t1 VALUES('p1: case4: case5: on 1');          WHEN 2 THEN            BEGIN              DECLARE i TINYINT DEFAULT 10;              WHILE i > 0 DO                INSERT INTO t1 VALUES(CONCAT('p1: case4: case5: loop: i: ', i));                                CASE MOD(i, 2)                  WHEN 0 THEN                    INSERT INTO t1 VALUES('p1: case4: case5: loop: i is even');                  WHEN 1 THEN                    INSERT INTO t1 VALUES('p1: case4: case5: loop: i is odd');                  ELSE                    INSERT INTO t1 VALUES('p1: case4: case5: loop: ERROR');                END CASE;                                    SET i = i - 1;              END WHILE;            END;          ELSE            INSERT INTO t1 VALUES('p1: case4: case5: ERROR');        END CASE;        CASE arg          WHEN 10 THEN            INSERT INTO t1 VALUES('p1: case4: case6: on 10');          WHEN 20 THEN            INSERT INTO t1 VALUES('p1: case4: case6: on 20');          ELSE            INSERT INTO t1 VALUES('p1: case4: case6: ERROR');        END CASE;      END;    ELSE      INSERT INTO t1 VALUES('p1: case4: ERROR');  END CASE;END|CREATE PROCEDURE p2()BEGIN  DECLARE i TINYINT DEFAULT 3;  WHILE i > 0 DO    IF MOD(i, 2) = 0 THEN      SET @_test_session_var = 10;    ELSE      SET @_test_session_var = 'test';    END IF;    CASE @_test_session_var      WHEN 10 THEN        INSERT INTO t1 VALUES('p2: case: numerical type');      WHEN 'test' THEN        INSERT INTO t1 VALUES('p2: case: string type');      ELSE        INSERT INTO t1 VALUES('p2: case: ERROR');    END CASE;    SET i = i - 1;  END WHILE;END|delimiter ;|CALL p1(10);CALL p1(20);CALL p2();SELECT * FROM t1;## Cleanup.#DROP PROCEDURE p1;DROP PROCEDURE p2;DROP TABLE t1;############################################################################# Test case for BUG#14161: Stored procedure cannot retrieve bigint unsigned.############################################################################--echo--echo -----------------------------------------------------------------echo BUG#14161--echo -----------------------------------------------------------------echo## Prepare.#--disable_warningsDROP TABLE IF EXISTS t1;DROP PROCEDURE IF EXISTS p1;--enable_warnings## Test case.#CREATE TABLE t1(col BIGINT UNSIGNED);INSERT INTO t1 VALUE(18446744073709551614);delimiter |;CREATE PROCEDURE p1(IN arg BIGINT UNSIGNED)BEGIN  SELECT arg;  SELECT * FROM t1;  SELECT * FROM t1 WHERE col = arg;END|delimiter ;|CALL p1(18446744073709551614);## Cleanup.#DROP TABLE t1;DROP PROCEDURE p1;############################################################################# Test case for BUG#13705: parameters to stored procedures are not verified.############################################################################--echo--echo -----------------------------------------------------------------echo BUG#13705--echo -----------------------------------------------------------------echo## Prepare.#--disable_warningsDROP PROCEDURE IF EXISTS p1;--enable_warnings## Test case.#delimiter |;CREATE PROCEDURE p1(x VARCHAR(10), y CHAR(3)) READS SQL DATABEGIN  SELECT x, y;END|delimiter ;|CALL p1('alpha', 'abc');CALL p1('alpha', 'abcdef');## Cleanup.#DROP PROCEDURE p1;############################################################################# Test case for BUG#13675: DATETIME/DATE type in store proc param seems to be# converted as varbinary.## TODO: test case failed.############################################################################--echo--echo -----------------------------------------------------------------echo BUG#13675--echo -----------------------------------------------------------------echo## Prepare.#--disable_warningsDROP PROCEDURE IF EXISTS p1;DROP TABLE IF EXISTS t1;--enable_warnings## Test case.#delimiter |;CREATE PROCEDURE p1(x DATETIME)BEGIN  CREATE TABLE t1 SELECT x;  SHOW CREATE TABLE t1;  DROP TABLE t1;END|delimiter ;|CALL p1(NOW());CALL p1('test');## Cleanup.#DROP PROCEDURE p1;############################################################################# Test case for BUG#12976: Boolean values reversed in stored procedures?## TODO: test case failed.############################################################################--echo--echo -----------------------------------------------------------------echo BUG#12976--echo -----------------------------------------------------------------echo## Prepare.#--disable_warningsDROP TABLE IF EXISTS t1;DROP PROCEDURE IF EXISTS p1;DROP PROCEDURE IF EXISTS p2;--enable_warnings## Test case.#CREATE TABLE t1(b BIT(1));INSERT INTO t1(b) VALUES(b'0'), (b'1');delimiter |;CREATE PROCEDURE p1()BEGIN  SELECT HEX(b),    b = 0,    b = FALSE,    b IS FALSE,    b = 1,    b = TRUE,    b IS TRUE  FROM t1;END|CREATE PROCEDURE p2()BEGIN  DECLARE vb BIT(1);  SELECT b INTO vb FROM t1 WHERE b = 0;  SELECT HEX(vb),    vb = 0,    vb = FALSE,    vb IS FALSE,    vb = 1,    vb = TRUE,    vb IS TRUE;  SELECT b INTO vb FROM t1 WHERE b = 1;  SELECT HEX(vb),    vb = 0,    vb = FALSE,    vb IS FALSE,    vb = 1,    vb = TRUE,    vb IS TRUE;END|delimiter ;|# The expected and correct result.call p1();# The wrong result. Note that only hex(vb) works, but is printed with two# digits for some reason in this case.call p2();## Cleanup.#DROP TABLE t1;DROP PROCEDURE p1;DROP PROCEDURE p2;############################################################################# Test case for BUG#9572: Stored procedures: variable type declarations# ignored.############################################################################--echo--echo -----------------------------------------------------------------echo BUG#9572--echo -----------------------------------------------------------------echo## Prepare.#--disable_warningsDROP PROCEDURE IF EXISTS p1;DROP PROCEDURE IF EXISTS p2;DROP PROCEDURE IF EXISTS p3;DROP PROCEDURE IF EXISTS p4;DROP PROCEDURE IF EXISTS p5;DROP PROCEDURE IF EXISTS p6;--enable_warnings## Test case.#SET @@sql_mode = 'traditional';delimiter |;CREATE PROCEDURE p1()BEGIN  DECLARE v TINYINT DEFAULT 1e200;  SELECT v;END|CREATE PROCEDURE p2()BEGIN  DECLARE v DECIMAL(5) DEFAULT 1e200;  SELECT v;END|CREATE PROCEDURE p3()BEGIN  DECLARE v CHAR(5) DEFAULT 'abcdef';  SELECT v LIKE 'abc___';END|CREATE PROCEDURE p4(arg VARCHAR(2))BEGIN    DECLARE var VARCHAR(1);    SET var := arg;    SELECT arg, var;END|CREATE PROCEDURE p5(arg CHAR(2))BEGIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -