1source include/have_memcached_plugin.inc;
2source include/not_valgrind.inc;
3
4# Test of master and both with slave with memcached access and binlog-format=raw.
5#
6source include/not_windows.inc;
7source include/have_innodb.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("InnoDB: Warning: MySQL is trying to drop");
16--enable_query_log
17
18--enable_connect_log
19SET @tx_isolation= @@global.tx_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!
53INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so';
54
55# The following select is writing all to  memcache otherwisw memcache is empty.
56--sorted_result
57SELECT c1,c2,c21 FROM t1;
58
59SELECT SLEEP(2);
60
61perl;
62use DBI;
63use Cache::Memcached;
64my $memd = new Cache::Memcached {
65  'servers' => [ "127.0.0.1:11270" ]
66};
67print "Here the memcached results with D,B,H,C:\n";
68$val = $memd->get("D");
69if ($val) { print "$val\n"; }
70$val = $memd->get("B");
71if ($val) { print "$val\n"; }
72$val = $memd->get("H");
73if ($val) { print "$val\n"; }
74$val = $memd->get("C");
75if ($val) { print "$val\n"; }
76$memd->disconnect_all;
77EOF
78
79--sorted_result
80SELECT c1,c2,c21 FROM t1;
81
82--echo sync_slave_with_master;
83sync_slave_with_master;
84
85connection slave;
86--sorted_result
87SELECT c1,c2,c21 FROM t1;
88
89connection master;
90perl;
91use DBI;
92use Cache::Memcached;
93my $memd = new Cache::Memcached {
94  'servers' => [ "127.0.0.1:11270" ]
95};
96print "Here the memcached results after set:\n";
97$val = $memd->set("E","Essen|Ost");
98$val = $memd->get("E");
99if ($val) { print "$val\n"; }
100$memd->disconnect_all;
101EOF
102
103--sorted_result
104SELECT c1,c2,c21 FROM t1;
105
106--echo sync_slave_with_master;
107sync_slave_with_master;
108
109connection slave;
110--sorted_result
111SELECT c1,c2,c21 FROM t1;
112
113connection master;
114perl;
115use DBI;
116use Cache::Memcached;
117my $memd = new Cache::Memcached {
118  'servers' => [ "127.0.0.1:11270" ]
119};
120print "Here the memcached results after add:\n";
121$val = $memd->add("F","Frankfurt|Sachsenhause");
122$val = $memd->get("F");
123if ($val) { print "$val\n"; }
124$memd->disconnect_all;
125EOF
126
127--sorted_result
128SELECT c1,c2,c21 FROM t1;
129
130--echo sync_slave_with_master;
131sync_slave_with_master;
132
133connection slave;
134--sorted_result
135SELECT c1,c2,c21 FROM t1;
136
137connection master;
138perl;
139use DBI;
140use Cache::Memcached;
141my $memd = new Cache::Memcached {
142  'servers' => [ "127.0.0.1:11270" ]
143};
144print "Here the memcached results after replace:\n";
145$val = $memd->replace("F","Frankfurt a. M.|Sachsenhausen");
146$val = $memd->get("F");
147if ($val) { print "$val\n"; }
148$memd->disconnect_all;
149EOF
150
151--sorted_result
152SELECT c1,c2,c21 FROM t1;
153
154--echo sync_slave_with_master;
155sync_slave_with_master;
156
157connection slave;
158--sorted_result
159SELECT c1,c2,c21 FROM t1;
160
161connection master;
162perl;
163use DBI;
164use Cache::Memcached;
165my $memd = new Cache::Memcached {
166  'servers' => [ "127.0.0.1:11270" ]
167};
168print "Here the memcached results after delete:\n";
169$val = $memd->delete("F");
170$val = $memd->get("F");
171if ($val) { print "$val\n"; }
172$memd->disconnect_all;
173EOF
174
175--sorted_result
176SELECT c1,c2,c21 FROM t1;
177
178--echo sync_slave_with_master;
179sync_slave_with_master;
180
181connection slave;
182--sorted_result
183SELECT c1,c2,c21 FROM t1;
184
185connection master;
186perl;
187use DBI;
188use Cache::Memcached;
189my $memd = new Cache::Memcached {
190  'servers' => [ "127.0.0.1:11270" ]
191};
192print "Here the memcached results after add Frankfurt|:\n";
193$val = $memd->add("F","Frankfurt|");
194$val = $memd->get("F");
195if ($val) { print "$val\n"; }
196print "Here the memcached results after add |Airport:\n";
197$val = $memd->add("F","|");
198$val = $memd->get("F");
199if ($val) { print "$val\n"; }
200$memd->disconnect_all;
201EOF
202
203--sorted_result
204SELECT c1,c2,c21 FROM t1;
205
206--echo sync_slave_with_master;
207sync_slave_with_master;
208
209connection slave;
210--sorted_result
211SELECT c1,c2,c21 FROM t1;
212
213connection master;
214perl;
215use DBI;
216use Cache::Memcached;
217my $memd = new Cache::Memcached {
218  'servers' => [ "127.0.0.1:11270" ]
219};
220print "Here the memcached results after replace Frankfurt a.M.:\n";
221$val = $memd->replace("F","Frankfurt a. M.|");
222$val = $memd->get("F");
223if ($val) { print "$val\n"; }
224print "Here the memcached results after replace Sachsenhausen:\n";
225$val = $memd->replace("F","|Sachsenhausen");
226$val = $memd->get("F");
227if ($val) { print "$val\n"; }
228$memd->disconnect_all;
229EOF
230
231--sorted_result
232SELECT c1,c2,c21 FROM t1;
233
234--echo sync_slave_with_master;
235sync_slave_with_master;
236
237connection slave;
238--sorted_result
239SELECT c1,c2,c21 FROM t1;
240
241connection master;
242DROP TABLE t1;
243
244UNINSTALL PLUGIN daemon_memcached;
245DROP DATABASE innodb_memcache;
246
247SET @@global.tx_isolation= @tx_isolation;
248sync_slave_with_master;
249source include/rpl_end.inc;
250
251