~drizzle-trunk/drizzle/development

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;

-------- Test for BUG#9361 --------
CREATE TABLE t1 (
a int unsigned not null auto_increment primary key,
b int unsigned
) ENGINE=MyISAM;
CREATE TABLE t2 (
a int unsigned not null auto_increment primary key,
b int unsigned
) ENGINE=MyISAM;
INSERT INTO t1 VALUES (NULL, 0);
INSERT INTO t1 SELECT NULL, 0 FROM t1;
INSERT INTO t2 VALUES (NULL, 0), (NULL,1);
SELECT * FROM t1 ORDER BY a;
a	b
1	0
2	0
SELECT * FROM t2 ORDER BY a;
a	b
1	0
2	1
UPDATE t2, (SELECT a FROM t1 ORDER BY a) AS t SET t2.b = t.a+5 ;
SELECT * FROM t1 ORDER BY a;
a	b
1	0
2	0
SELECT * FROM t2 ORDER BY a;
a	b
1	6
2	6
SELECT * FROM t1 ORDER BY a;
a	b
1	0
2	0
SELECT * FROM t2 ORDER BY a;
a	b
1	6
2	6
drop table t1,t2;

-------- Test 1 for BUG#9361 --------
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
CREATE TABLE t1 (
a1  char(30),
a2  int,
a3  int,
a4  char(30),
a5  char(30)
);
CREATE TABLE t2 (
b1  int,
b2  char(30)
);
INSERT INTO t1 VALUES ('Yes', 1, NULL, 'foo', 'bar');
INSERT INTO t2 VALUES (1, 'baz');
UPDATE t1 a, t2 
SET    a.a1 = 'No' 
WHERE  a.a2 = 
(SELECT  b1 
FROM    t2 
WHERE   b2 = 'baz') 
AND a.a3 IS NULL 
AND a.a4 = 'foo' 
AND a.a5 = 'bar';
SELECT * FROM t1;
a1	a2	a3	a4	a5
No	1	NULL	foo	bar
SELECT * FROM t2;
b1	b2
1	baz
DROP TABLE t1, t2;

-------- Test 2 for BUG#9361 --------
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
CREATE TABLE t1 (
i   INT,
j   INT,
x   INT,
y   INT,
z   INT
);
CREATE TABLE t2 (
i   INT,
k   INT,
x   INT,
y   INT,
z   INT
);
CREATE TABLE t3 (
j   INT,
k   INT,
x   INT,
y   INT,
z   INT
);
INSERT INTO t1 VALUES ( 1, 2,13,14,15);
INSERT INTO t2 VALUES ( 1, 3,23,24,25);
INSERT INTO t3 VALUES ( 2, 3, 1,34,35), ( 2, 3, 1,34,36);
UPDATE      t1 AS a  
INNER JOIN  t2 AS b 
ON a.i = b.i
INNER JOIN  t3 AS c 
ON a.j = c.j  AND  b.k = c.k
SET         a.x = b.x, 
a.y = b.y, 
a.z = (
SELECT  sum(z) 
FROM    t3
WHERE   y = 34 
) 
WHERE       b.x = 23;
SELECT * FROM t1;
i	j	x	y	z
1	2	23	24	71
DROP TABLE t1, t2, t3;
DROP TABLE IF EXISTS t1;
Warnings:
Note	1051	Unknown table 't1'
DROP TABLE IF EXISTS t2;
Warnings:
Note	1051	Unknown table 't2'
CREATE TABLE t1 (
idp int(11) NOT NULL default '0',
idpro int(11) default NULL,
price decimal(19,4) default NULL,
PRIMARY KEY (idp)
);
CREATE TABLE t2 (
idpro int(11) NOT NULL default '0',
price decimal(19,4) default NULL,
nbprice int(11) default NULL,
PRIMARY KEY (idpro)
);
INSERT INTO t1 VALUES 
(1,1,'3.0000'),
(2,2,'1.0000'),
(3,1,'1.0000'),
(4,1,'4.0000'),
(5,3,'2.0000'),
(6,2,'4.0000');
INSERT INTO t2 VALUES 
(1,'0.0000',0),
(2,'0.0000',0),
(3,'0.0000',0);
update 
t2
join 
( select    idpro, min(price) as min_price, count(*) as nbr_price
from      t1 
where     idpro>0 and price>0 
group by  idpro
) as table_price
on   t2.idpro = table_price.idpro 
set  t2.price = table_price.min_price, 
t2.nbprice = table_price.nbr_price;
select "-- MASTER AFTER JOIN --" as "";

-- MASTER AFTER JOIN --
select * from t1;
idp	idpro	price
1	1	3.0000
2	2	1.0000
3	1	1.0000
4	1	4.0000
5	3	2.0000
6	2	4.0000
select * from t2;
idpro	price	nbprice
1	1.0000	3
2	1.0000	2
3	2.0000	1
select "-- SLAVE AFTER JOIN --" as "";

-- SLAVE AFTER JOIN --
select * from t1;
idp	idpro	price
1	1	3.0000
2	2	1.0000
3	1	1.0000
4	1	4.0000
5	3	2.0000
6	2	4.0000
select * from t2;
idpro	price	nbprice
1	1.0000	3
2	1.0000	2
3	2.0000	1
DROP TABLE t1, t2;