~ubuntu-branches/ubuntu/lucid/mysql-dfsg-5.1/lucid-security

« back to all changes in this revision

Viewing changes to mysql-test/suite/engines/funcs/t/rpl_sp_effects.test

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2012-02-22 22:33:55 UTC
  • mto: (1.2.1) (37.1.1 lucid-security)
  • mto: This revision was merged to the branch mainline in revision 36.
  • Revision ID: package-import@ubuntu.com-20120222223355-ku1tb4r70osci6v2
Tags: upstream-5.1.61
ImportĀ upstreamĀ versionĀ 5.1.61

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
##########################################
 
2
# Change Author: JBM
 
3
# Change Date: 2006-05-02
 
4
# Change: Added Order By for NDB testing
 
5
##########################################
 
6
 
 
7
# Test of replication of stored procedures (WL#2146 for MySQL 5.0)
 
8
-- source include/master-slave.inc
 
9
 
 
10
# ****************************************************************
 
11
connection master;
 
12
 
 
13
# cleanup
 
14
--disable_warnings
 
15
drop procedure if exists p1;
 
16
drop procedure if exists p2;
 
17
drop function if exists f1;
 
18
drop table if exists t1,t2;
 
19
drop view if exists v1;
 
20
--enable_warnings
 
21
create table t1 (a int);
 
22
 
 
23
SET GLOBAL log_bin_trust_function_creators = 1;
 
24
 
 
25
# 1. Test simple variables use.
 
26
delimiter //;
 
27
create procedure p1()
 
28
begin
 
29
  declare spv int default 0;
 
30
  while spv < 5 do
 
31
    insert into t1 values(spv+1);
 
32
    set spv=spv+1;
 
33
  end while;
 
34
end//
 
35
delimiter ;//
 
36
 
 
37
call p1();
 
38
 
 
39
sync_slave_with_master;
 
40
connection slave;
 
41
SELECT * FROM t1 ORDER BY a;
 
42
connection master;
 
43
SELECT * FROM t1 ORDER BY a;
 
44
 
 
45
# 2. Test SP variable name
 
46
delimiter //;
 
47
create procedure p2()
 
48
begin
 
49
  declare a int default 4;
 
50
  create table t2 as select a;
 
51
end//
 
52
delimiter ;//
 
53
 
 
54
call p2();
 
55
SELECT * FROM t2 ORDER BY a;
 
56
sync_slave_with_master;
 
57
connection slave;
 
58
SELECT * FROM t2 ORDER BY a;
 
59
 
 
60
connection master;
 
61
drop procedure p1;
 
62
drop procedure p2;
 
63
drop table t2;
 
64
 
 
65
# 3. Test FUNCTIONs in various places
 
66
 
 
67
delimiter //;
 
68
create function f1(x int) returns int
 
69
begin
 
70
  insert into t1 values(x);
 
71
  return x+1;
 
72
end//
 
73
 
 
74
create procedure p1(a int, b int)
 
75
begin
 
76
  declare v int default f1(5);
 
77
  if (f1(6)) then
 
78
    select 'yes';
 
79
  end if;
 
80
  set v = f1(7);
 
81
  while f1(8) < 1 do 
 
82
    select 'this cant be';
 
83
  end while;
 
84
 
 
85
end//
 
86
delimiter ;//
 
87
 
 
88
call p1(f1(1), f1(2));
 
89
SELECT * FROM t1 ORDER BY a;
 
90
 
 
91
create table t2(a int);
 
92
insert into t2 values (10),(11);
 
93
SELECT a,f1(a) FROM t2 ORDER BY a;
 
94
 
 
95
# This shouldn't put separate 'call f1(3)' into binlog:
 
96
insert into t2 select f1(3);
 
97
SELECT 'master:',a FROM t1 ORDER BY a;
 
98
 
 
99
sync_slave_with_master;
 
100
connection slave;
 
101
SELECT 'slave:',a FROM t1 ORDER BY a;
 
102
 
 
103
connection master;
 
104
drop procedure p1;
 
105
delete from t1;
 
106
delete from t2;
 
107
 
 
108
# 4. VIEWs
 
109
delete from t1;
 
110
insert into t2 values(1),(2);
 
111
create view v1 as select f1(a) as f from t2;
 
112
select * from v1 order by f;
 
113
SELECT 'master:',a FROM t1 ORDER BY a;
 
114
 
 
115
sync_slave_with_master;
 
116
connection slave;
 
117
SELECT 'slave:',a FROM t1 ORDER BY a;
 
118
 
 
119
connection master;
 
120
drop view v1;
 
121
delete from t1;
 
122
 
 
123
# 5. Prepared statements.
 
124
prepare s1 from 'select f1(?)';
 
125
set @xx=123;
 
126
execute s1 using @xx;
 
127
SELECT 'master:',a FROM t1 ORDER BY a;
 
128
 
 
129
sync_slave_with_master;
 
130
connection slave;
 
131
SELECT 'slave:',a FROM t1 ORDER BY a;
 
132
 
 
133
connection master;
 
134
delete from t1;
 
135
 
 
136
# 5. Cursors.
 
137
# t2 has (1),(2);
 
138
delimiter //;
 
139
create procedure p1(spv int)
 
140
begin
 
141
  declare c cursor for select f1(spv) from t2;
 
142
  while (spv > 2) do
 
143
    open c;
 
144
    fetch c into spv;
 
145
    close c;
 
146
    set spv= spv - 10;
 
147
  end while;
 
148
end//
 
149
delimiter ;//
 
150
call p1(15);
 
151
SELECT 'master:',a FROM t1 ORDER BY a;
 
152
sync_slave_with_master;
 
153
connection slave;
 
154
SELECT 'slave:',a FROM t1 ORDER BY a;
 
155
 
 
156
connection master;
 
157
drop procedure p1;
 
158
drop function f1;
 
159
drop table t1,t2;
 
160
 
 
161
# BUG#12637: User variables + SPs replication
 
162
create table t1 (a int);
 
163
delimiter //;
 
164
create procedure p1()
 
165
begin
 
166
  insert into t1 values(@x);
 
167
  set @x=@x+1;
 
168
  insert into t1 values(@x);
 
169
  if (f2()) then
 
170
    insert into t1 values(1243);
 
171
  end if;
 
172
end//
 
173
 
 
174
create function f2() returns int
 
175
begin
 
176
  insert into t1 values(@z);
 
177
  set @z=@z+1;
 
178
  insert into t1 values(@z);
 
179
  return 0;
 
180
end//
 
181
 
 
182
create function f1() returns int
 
183
begin
 
184
  insert into t1 values(@y);
 
185
  call p1();
 
186
  return 0;
 
187
end//
 
188
 
 
189
delimiter ;//
 
190
 
 
191
set @x=10;
 
192
set @y=20;
 
193
set @z=100;
 
194
select f1();
 
195
 
 
196
set @x=30;
 
197
call p1();
 
198
 
 
199
SELECT 'master', a FROM t1 ORDER BY a;
 
200
sync_slave_with_master;
 
201
connection slave;
 
202
SELECT 'slave', a FROM t1 ORDER BY a;
 
203
 
 
204
connection master;
 
205
drop table t1;
 
206
drop function f1;
 
207
drop function f2;
 
208
drop procedure p1;
 
209
sync_slave_with_master;