1 SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
3 --source suite/funcs_1/storedproc/load_sp_tb.inc
4 --------------------------------------------------------------------------------
6 --source suite/funcs_1/storedproc/cleanup_sp_tb.inc
7 --------------------------------------------------------------------------------
8 DROP DATABASE IF EXISTS db_storedproc;
9 DROP DATABASE IF EXISTS db_storedproc_1;
10 CREATE DATABASE db_storedproc;
11 CREATE DATABASE db_storedproc_1;
13 create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
14 engine = <engine_to_be_tested>;
15 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t1;
16 create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
17 engine = <engine_to_be_tested>;
18 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t2;
19 create table t3(f1 char(20),f2 char(20),f3 integer) engine = <engine_to_be_tested>;
20 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t3.txt' into table t3;
21 create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
22 engine = <engine_to_be_tested>;
23 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t4;
25 create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
26 engine = <engine_to_be_tested>;
27 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t6;
29 create table t7 (f1 char(20), f2 char(25), f3 date, f4 int)
30 engine = <engine_to_be_tested>;
31 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t7;
33 Warning 1265 Data truncated for column 'f3' at row 1
34 Warning 1265 Data truncated for column 'f3' at row 2
35 Warning 1265 Data truncated for column 'f3' at row 3
36 Warning 1265 Data truncated for column 'f3' at row 4
37 Warning 1265 Data truncated for column 'f3' at row 5
38 Warning 1265 Data truncated for column 'f3' at row 6
39 Warning 1265 Data truncated for column 'f3' at row 7
40 Warning 1265 Data truncated for column 'f3' at row 8
41 Warning 1265 Data truncated for column 'f3' at row 9
42 Warning 1265 Data truncated for column 'f3' at row 10
43 create table t8 (f1 char(20), f2 char(25), f3 date, f4 int)
44 engine = <engine_to_be_tested>;
45 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t7.txt' into table t8;
47 Warning 1265 Data truncated for column 'f3' at row 1
48 Warning 1265 Data truncated for column 'f3' at row 2
49 Warning 1265 Data truncated for column 'f3' at row 3
50 Warning 1265 Data truncated for column 'f3' at row 4
51 Warning 1265 Data truncated for column 'f3' at row 5
52 Warning 1265 Data truncated for column 'f3' at row 6
53 Warning 1265 Data truncated for column 'f3' at row 7
54 Warning 1265 Data truncated for column 'f3' at row 8
55 Warning 1265 Data truncated for column 'f3' at row 9
56 Warning 1265 Data truncated for column 'f3' at row 10
57 create table t9(f1 int, f2 char(25), f3 int) engine = <engine_to_be_tested>;
58 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t9.txt' into table t9;
59 create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
60 engine = <engine_to_be_tested>;
61 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t10;
62 create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
63 engine = <engine_to_be_tested>;
64 load data infile '<MYSQLTEST_VARDIR>/std_data/funcs_1/t4.txt' into table t11;
66 Section 3.1.7 - SQL mode checks:
67 --------------------------------------------------------------------------------
72 Ensure that the sql_mode setting in effect at the time a stored procedure is
73 created is the same setting under which the stored procedure runs when it is
75 --------------------------------------------------------------------------------
76 DROP PROCEDURE IF EXISTS sp1;
77 DROP TABLE IF EXISTS temp_tbl;
78 DROP TABLE IF EXISTS result;
79 CREATE TABLE temp_tbl (f1 tinyint);
80 CREATE TABLE result (f1 text(200), f2 char(20));
81 set @@sql_mode='traditional';
82 SHOW VARIABLES LIKE 'sql_mode';
84 sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
85 CREATE PROCEDURE sp1()
88 declare count_ int default 1;
89 declare continue handler for sqlstate '22003' set count_=1000;
90 SHOW VARIABLES LIKE 'sql_mode';
91 SELECT @@sql_mode into @cur_val_sql_mode;
92 insert into temp_tbl values (1000);
94 INSERT INTO result VALUES (@cur_val_sql_mode, 'value restored');
96 INSERT INTO result VALUES (@cur_val_sql_mode, 'value not restored');
99 SHOW CREATE PROCEDURE sp1;
100 Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
101 sp1 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`()
104 declare count_ int default 1;
105 declare continue handler for sqlstate '22003' set count_=1000;
106 SHOW VARIABLES LIKE 'sql_mode';
107 SELECT @@sql_mode into @cur_val_sql_mode;
108 insert into temp_tbl values (1000);
109 if count_ = 1000 THEN
110 INSERT INTO result VALUES (@cur_val_sql_mode, 'value restored');
112 INSERT INTO result VALUES (@cur_val_sql_mode, 'value not restored');
114 END latin1 latin1_swedish_ci latin1_swedish_ci
116 SHOW VARIABLES LIKE 'sql_mode';
121 sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
122 SELECT * from result;
124 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER value restored
125 SHOW VARIABLES LIKE 'sql_mode';
131 SET @@sql_mode='TRADITIONAL';
138 Ensure that if the sql_mode setting is changed when a stored procedure is run,
139 that the original setting is restored as soon as the stored procedure execution
141 --------------------------------------------------------------------------------
142 DROP PROCEDURE IF EXISTS sp2;
143 ... show initial value
144 SHOW VARIABLES LIKE 'sql_mode';
146 sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
147 CREATE PROCEDURE sp2()
149 SET @@sql_mode='MAXDB';
150 SHOW VARIABLES LIKE 'sql_mode';
152 SHOW CREATE PROCEDURE sp2;
153 Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
154 sp2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER CREATE DEFINER=`root`@`localhost` PROCEDURE `sp2`()
156 SET @@sql_mode='MAXDB';
157 SHOW VARIABLES LIKE 'sql_mode';
158 END latin1 latin1_swedish_ci latin1_swedish_ci
159 ... show value prior calling procedure
160 SHOW VARIABLES LIKE 'sql_mode';
162 sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
163 ... call procedure that changes sql_mode
166 sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
167 ... check whether old value is re-set
168 SHOW VARIABLES LIKE 'sql_mode';
170 sql_mode STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
173 --source suite/funcs_1/storedproc/cleanup_sp_tb.inc
174 --------------------------------------------------------------------------------
175 DROP DATABASE IF EXISTS db_storedproc;
176 DROP DATABASE IF EXISTS db_storedproc_1;
178 . +++ END OF SCRIPT +++
179 --------------------------------------------------------------------------------