1source include/have_memcached_plugin.inc;
2source include/not_valgrind.inc;
3source include/have_log_bin.inc;
4
5# Test of master and both with slave with memcached access and binlog-format=raw.
6#
7source include/not_windows.inc;
8--disable_warnings
9source include/master-slave.inc;
10--enable_warnings
11
12--disable_query_log
13CALL mtr.add_suppression("daemon-memcached-w-batch-size': unsigned");
14CALL mtr.add_suppression("Could not obtain server's UPN to be used as target service name");
15CALL mtr.add_suppression("Warning: MySQL is trying to drop");
16--enable_query_log
17
18--enable_connect_log
19SET @transaction_isolation= @@global.transaction_isolation;
20SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
21
22# Create the memcached tables
23--disable_query_log
24source include/memcache_config.inc;
25--enable_query_log
26
27INSERT INTO cache_policies VALUES("cache_policy", "innodb_only",
28				  "innodb_only", "innodb_only", "innodb_only");
29
30INSERT INTO config_options VALUES("separator", "|");
31
32# describe table for memcache
33INSERT INTO containers VALUES ("desc_t1", "test", "t1",
34			       "c1", "c2,c21", "c3", "c4", "c5", "PRIMARY");
35
36USE test;
37
38--disable_warnings
39DROP TABLE IF EXISTS t1;
40--enable_warnings
41CREATE TABLE t1        (c1 VARCHAR(32),
42			c2 VARCHAR(1024),
43			c21 VARCHAR(1024),
44			c3 INT, c4 BIGINT UNSIGNED, c5 INT, primary key(c1))
45ENGINE = INNODB;
46
47INSERT INTO t1 VALUES ('D', 'Darmstadt', 'City', 0, 0, 0);
48INSERT INTO t1 VALUES ('B', 'Berlin', 'Mitte', 0, 0, 0);
49INSERT INTO t1 VALUES ('C', 'Cottbus', 'West', 0, 0 ,0);
50INSERT INTO t1 VALUES ('H', 'Hamburg', 'Norderstedt', 0, 0, 0);
51
52# Tables must exist before plugin can be started!
53--let $memcached_address=127.0.0.1:11270
54--source ../include/load_daemon_memcached_expecting_success.inc
55
56--sorted_result
57SELECT c1,c2,c21 FROM t1;
58
59perl;
60use DBI;
61use Cache::Memcached;
62my $memd = new Cache::Memcached {
63  'servers' => [ "127.0.0.1:11270" ]
64};
65print "Here are the memcached results with D,B,H,C:\n";
66$val = $memd->get("D");
67if ($val) { print "$val\n"; }
68$val = $memd->get("B");
69if ($val) { print "$val\n"; }
70$val = $memd->get("H");
71if ($val) { print "$val\n"; }
72$val = $memd->get("C");
73if ($val) { print "$val\n"; }
74$memd->disconnect_all;
75EOF
76
77--sorted_result
78SELECT c1,c2,c21 FROM t1;
79
80--echo sync_slave_with_master;
81sync_slave_with_master;
82
83connection slave;
84--sorted_result
85SELECT c1,c2,c21 FROM t1;
86
87connection master;
88perl;
89use DBI;
90use Cache::Memcached;
91my $memd = new Cache::Memcached {
92  'servers' => [ "127.0.0.1:11270" ]
93};
94print "Here are the memcached results after set:\n";
95$val = $memd->set("E","Essen|Ost");
96$val = $memd->get("E");
97if ($val) { print "$val\n"; }
98$memd->disconnect_all;
99EOF
100
101--sorted_result
102SELECT c1,c2,c21 FROM t1;
103
104--echo sync_slave_with_master;
105sync_slave_with_master;
106
107connection slave;
108--sorted_result
109SELECT c1,c2,c21 FROM t1;
110
111connection master;
112perl;
113use DBI;
114use Cache::Memcached;
115my $memd = new Cache::Memcached {
116  'servers' => [ "127.0.0.1:11270" ]
117};
118print "Here are the memcached results after add:\n";
119$val = $memd->add("F","Frankfurt|Sachsenhause");
120$val = $memd->get("F");
121if ($val) { print "$val\n"; }
122$memd->disconnect_all;
123EOF
124
125--sorted_result
126SELECT c1,c2,c21 FROM t1;
127
128--echo sync_slave_with_master;
129sync_slave_with_master;
130
131connection slave;
132--sorted_result
133SELECT c1,c2,c21 FROM t1;
134
135connection master;
136perl;
137use DBI;
138use Cache::Memcached;
139my $memd = new Cache::Memcached {
140  'servers' => [ "127.0.0.1:11270" ]
141};
142print "Here are the memcached results after replace:\n";
143$val = $memd->replace("F","Frankfurt a. M.|Sachsenhausen");
144$val = $memd->get("F");
145if ($val) { print "$val\n"; }
146$memd->disconnect_all;
147EOF
148
149--sorted_result
150SELECT c1,c2,c21 FROM t1;
151
152--echo sync_slave_with_master;
153sync_slave_with_master;
154
155connection slave;
156--sorted_result
157SELECT c1,c2,c21 FROM t1;
158
159connection master;
160perl;
161use DBI;
162use Cache::Memcached;
163my $memd = new Cache::Memcached {
164  'servers' => [ "127.0.0.1:11270" ]
165};
166print "Here are the memcached results after delete:\n";
167$val = $memd->delete("F");
168$val = $memd->get("F");
169if ($val) { print "$val\n"; }
170$memd->disconnect_all;
171EOF
172
173--sorted_result
174SELECT c1,c2,c21 FROM t1;
175
176--echo sync_slave_with_master;
177sync_slave_with_master;
178
179connection slave;
180--sorted_result
181SELECT c1,c2,c21 FROM t1;
182
183connection master;
184perl;
185use DBI;
186use Cache::Memcached;
187my $memd = new Cache::Memcached {
188  'servers' => [ "127.0.0.1:11270" ]
189};
190print "Here are the memcached results after add Frankfurt|:\n";
191$val = $memd->add("F","Frankfurt|");
192$val = $memd->get("F");
193if ($val) { print "$val\n"; }
194print "Here are the memcached results after add |Airport:\n";
195$val = $memd->add("F","|");
196$val = $memd->get("F");
197if ($val) { print "$val\n"; }
198$memd->disconnect_all;
199EOF
200
201--sorted_result
202SELECT c1,c2,c21 FROM t1;
203
204--echo sync_slave_with_master;
205sync_slave_with_master;
206
207connection slave;
208--sorted_result
209SELECT c1,c2,c21 FROM t1;
210
211connection master;
212perl;
213use DBI;
214use Cache::Memcached;
215my $memd = new Cache::Memcached {
216  'servers' => [ "127.0.0.1:11270" ]
217};
218print "Here are the memcached results after replace Frankfurt a.M.:\n";
219$val = $memd->replace("F","Frankfurt a. M.|");
220$val = $memd->get("F");
221if ($val) { print "$val\n"; }
222print "Here are the memcached results after replace Sachsenhausen:\n";
223$val = $memd->replace("F","|Sachsenhausen");
224$val = $memd->get("F");
225if ($val) { print "$val\n"; }
226$memd->disconnect_all;
227EOF
228
229--sorted_result
230SELECT c1,c2,c21 FROM t1;
231
232--echo sync_slave_with_master;
233sync_slave_with_master;
234
235connection slave;
236--sorted_result
237SELECT c1,c2,c21 FROM t1;
238
239connection master;
240DROP TABLE t1;
241
242UNINSTALL PLUGIN daemon_memcached;
243DROP DATABASE innodb_memcache;
244
245SET @@global.transaction_isolation= @transaction_isolation;
246sync_slave_with_master;
247source include/rpl_end.inc;
248
249