summaryrefslogtreecommitdiff
path: root/mysql-test/suite/federated/federatedx_create_handlers.test
blob: 373b2aaaa33c22ec152dfdf3f11ef62196d025b6 (plain)
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
--source have_federatedx.inc
--source include/federated.inc

connection default;

set global federated_pushdown=1;

connection slave;

DROP TABLE IF EXISTS federated.t1;

CREATE TABLE federated.t1 (
  id int(20) NOT NULL,
  name varchar(16) NOT NULL default ''
)
DEFAULT CHARSET=latin1;

INSERT INTO federated.t1 VALUES
  (3,'xxx'), (7,'yyy'), (4,'xxx'), (1,'zzz'), (5,'yyy');

DROP TABLE IF EXISTS federated.t2;

CREATE TABLE federated.t2 (
  name varchar(16) NOT NULL default ''
)
DEFAULT CHARSET=latin1;

INSERT INTO federated.t2 VALUES
  ('yyy'), ('www'), ('yyy'), ('xxx'), ('www'), ('yyy'), ('www');


connection master;

DROP TABLE IF EXISTS federated.t1;

--replace_result $SLAVE_MYPORT SLAVE_PORT
eval
CREATE TABLE federated.t1 (
  id int(20) NOT NULL,
  name varchar(16) NOT NULL default ''
)
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1';

DROP TABLE IF EXISTS federated.t2;

--replace_result $SLAVE_MYPORT SLAVE_PORT
eval
CREATE TABLE federated.t2 (
  name varchar(16) NOT NULL default ''
)
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t2';

SELECT * FROM federated.t1;

SELECT id FROM federated.t1 WHERE id < 5;

SELECT count(*), name FROM federated.t1 WHERE id < 5 GROUP BY name;

SELECT * FROM federated.t1, federated.t2
  WHERE federated.t1.name = federated.t2.name;

SELECT * FROM federated.t1 LEFT JOIN federated.t2
              ON federated.t1.name = federated.t2.name
  WHERE federated.t1.id > 1;

SELECT * FROM federated.t1
  WHERE id IN (SELECT count(*) FROM federated.t2 GROUP BY name);

EXPLAIN
SELECT id FROM federated.t1 WHERE id < 5;
 
EXPLAIN EXTENDED
SELECT id FROM federated.t1 WHERE id < 5;

EXPLAIN FORMAT=JSON
SELECT id FROM federated.t1 WHERE id < 5;

ANALYZE
SELECT id FROM federated.t1 WHERE id < 5;

--source include/analyze-format.inc
ANALYZE FORMAT=JSON
SELECT id FROM federated.t1 WHERE id < 5;

CREATE TABLE federated.t3 (
  name varchar(16) NOT NULL default ''
)
DEFAULT CHARSET=latin1;

INSERT INTO federated.t3 VALUES
  ('yyy'), ('www'), ('yyy'), ('xxx'), ('www'), ('yyy'), ('www');

SELECT *
FROM federated.t3, (SELECT * FROM federated.t1 WHERE id > 3) t
WHERE federated.t3.name=t.name;

EXPLAIN
SELECT *
FROM federated.t3, (SELECT * FROM federated.t1 WHERE id > 3) t
WHERE federated.t3.name=t.name;

EXPLAIN FORMAT=JSON
SELECT *
FROM federated.t3, (SELECT * FROM federated.t1 WHERE id > 3) t
WHERE federated.t3.name=t.name;

ANALYZE
SELECT *
FROM federated.t3, (SELECT * FROM federated.t1 WHERE id > 3) t
WHERE federated.t3.name=t.name;

SELECT *
FROM federated.t3, (SELECT t1.name FROM federated.t1
                    WHERE id IN (SELECT count(*)
                                 FROM federated.t2 GROUP BY name)) t
WHERE federated.t3.name=t.name;

EXPLAIN
SELECT *
FROM federated.t3, (SELECT t1.name FROM federated.t1
                    WHERE id IN (SELECT count(*)
                                 FROM federated.t2 GROUP BY name)) t
WHERE federated.t3.name=t.name;

--source include/analyze-format.inc
ANALYZE FORMAT=JSON
SELECT *
FROM federated.t3, (SELECT t1.name FROM federated.t1
                    WHERE id IN (SELECT count(*)
                                 FROM federated.t2 GROUP BY name)) t
WHERE federated.t3.name=t.name;

SELECT t.id, federated.t3.name
FROM federated.t3,
     ( SELECT * FROM federated.t1 WHERE id < 3
       UNION
       SELECT * FROM federated.t1 WHERE id >= 5) t
WHERE federated.t3.name=t.name;

EXPLAIN
SELECT t.id, federated.t3.name
FROM federated.t3,
     ( SELECT * FROM federated.t1 WHERE id < 3
       UNION
       SELECT * FROM federated.t1 WHERE id >= 5) t
WHERE federated.t3.name=t.name;


DROP TABLE federated.t1, federated.t2, federated.t3;

connection slave;
DROP TABLE federated.t1, federated.t2;

connection default;

set global federated_pushdown=0;

source include/federated_cleanup.inc;