1source include/not_valgrind.inc;
2source include/have_memcached_plugin.inc;
3source include/not_windows.inc;
4source include/have_innodb.inc;
5
6call mtr.add_suppression("InnoDB: Cannot add field ");
7
8--disable_query_log
9CALL mtr.add_suppression("daemon-memcached-w-batch-size': unsigned");
10CALL mtr.add_suppression("Could not obtain server's UPN to be used as target service name");
11CALL mtr.add_suppression("InnoDB: Warning: MySQL is trying to drop");
12--enable_query_log
13
14--enable_connect_log
15SET @tx_isolation= @@global.tx_isolation;
16SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
17
18# Create the memcached tables
19--disable_query_log
20source include/memcache_config.inc;
21--enable_query_log
22SET sql_mode='NO_ENGINE_SUBSTITUTION';
23INSERT INTO cache_policies VALUES("cache_policy", "innodb_only",
24				  "innodb_only", "innodb_only", "innodb_only");
25
26INSERT INTO config_options VALUES("separator", ",");
27
28# describe table for memcache
29INSERT INTO containers VALUES ("desc_t1", "test", "t1",
30			       "c1",
31                               "c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,
32                                c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,
33                                c220,c221,c222,c223,c224,c225,c226,c227,c228,c229,
34                                c230,c231,c232,c233,c234,c235,c236,c237,c238,c239,
35                                c240,c241,c242,c243,c244,c245,c246,c247,c248,c249",
36                               "c3", "c4", "c5", "PRIMARY");
37
38# Container's value_columns is 255 bytes, above insertion would be truncated.
39# The truncation left an invalid column name "c", which will be rejected
40# by InnoDB memcached configuration
41SELECT * FROM containers;
42
43DELETE FROM containers;
44
45# The 255 character limit of "value_columns" can hold columns up to "c230"
46INSERT INTO containers VALUES ("desc_t1", "test", "t1",
47			       "c1",
48                               "c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,
49                                c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,
50                                c220,c221,c222,c223,c224,c225,c226,c227,c228,c229",
51                               "c3", "c4", "c5", "PRIMARY");
52
53USE test;
54
55SET innodb_strict_mode=OFF;
56--disable_warnings
57CREATE TABLE t1        (c1 VARCHAR(32),
58			c200 VARCHAR(40),
59			c201 VARCHAR(40),
60			c202 VARCHAR(40),
61			c203 VARCHAR(40),
62			c204 VARCHAR(40),
63			c205 VARCHAR(40),
64			c206 VARCHAR(40),
65			c207 VARCHAR(40),
66			c208 VARCHAR(40),
67			c209 VARCHAR(40),
68			c210 VARCHAR(40),
69			c211 VARCHAR(40),
70			c212 VARCHAR(40),
71			c213 VARCHAR(40),
72			c214 VARCHAR(40),
73			c215 VARCHAR(40),
74			c216 VARCHAR(40),
75			c217 VARCHAR(40),
76			c218 VARCHAR(40),
77			c219 VARCHAR(40),
78			c220 VARCHAR(40),
79			c221 VARCHAR(40),
80			c222 VARCHAR(40),
81			c223 VARCHAR(40),
82			c224 VARCHAR(40),
83			c225 VARCHAR(40),
84			c226 VARCHAR(40),
85			c227 VARCHAR(40),
86			c228 VARCHAR(40),
87			c229 VARCHAR(40),
88			c230 VARCHAR(40),
89			c231 VARCHAR(40),
90			c232 VARCHAR(40),
91			c233 VARCHAR(40),
92			c234 VARCHAR(40),
93			c235 VARCHAR(40),
94			c236 VARCHAR(40),
95			c237 VARCHAR(40),
96			c238 VARCHAR(40),
97			c239 VARCHAR(40),
98			c240 VARCHAR(40),
99			c241 VARCHAR(40),
100			c242 VARCHAR(40),
101			c243 VARCHAR(40),
102			c244 VARCHAR(40),
103			c245 VARCHAR(40),
104			c246 VARCHAR(40),
105			c247 VARCHAR(40),
106			c248 VARCHAR(40),
107			c249 VARCHAR(40),
108			c3 INT, c4 BIGINT UNSIGNED, c5 INT, primary key(c1))
109ROW_FORMAT=COMPACT ENGINE = INNODB;
110--enable_warnings
111
112INSERT INTO t1 VALUES ('1',
113                       'c200','c201','c202','c203','c204','c205','c206','c207','c208','c209',
114                       'c210','c211','c212','c213','c214','c215','c216','c217','c218','c219',
115                       'c220','c221','c222','c223','c224','c225','c226','c227','c228','c229',
116                       'c230','c231','c232','c233','c234','c235','c236','c237','c238','c239',
117                       'c240','c241','c242','c243','c244','c245','c246','c247','c248','c249',
118                       0, 0, 0);
119INSERT INTO t1 VALUES ('2',
120                       'c200','c201','c202','c203','c204','c205','c206','c207','c208','c209',
121                       'c210','c211','c212','c213','c214','c215','c216','c217','c218','c219',
122                       'c220','c221','c222','c223','c224','c225','c226','c227','c228','c229',
123                       'c230','c231','c232','c233','c234','c235','c236','c237','c238','c239',
124                       'c240','c241','c242','c243','c244','c245','c246','c247','c248','c249',
125                       0, 0, 0);
126INSERT INTO t1 VALUES ('3',
127                       'c200','c201','c202','c203','c204','c205','c206','c207','c208','c209',
128                       'c210','c211','c212','c213','c214','c215','c216','c217','c218','c219',
129                       'c220','c221','c222','c223','c224','c225','c226','c227','c228','c229',
130                       'c230','c231','c232','c233','c234','c235','c236','c237','c238','c239',
131                       'c240','c241','c242','c243','c244','c245','c246','c247','c248','c249',
132                       0, 0, 0);
133
134# Tables must exist before plugin can be started!
135INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so';
136
137# The following select is writing all to  memcache otherwisw memcache is empty.
138--sorted_result
139SELECT c1,c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,
140          c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,
141          c220,c221,c222,c223,c224,c225,c226,c227,c228,c229,
142          c230,c231,c232,c233,c234,c235,c236,c237,c238,c239,
143          c240,c241,c242,c243,c244,c245,c246,c247,c248,c249
144       FROM t1;
145
146SELECT SLEEP(2);
147
148perl;
149use DBI;
150use Cache::Memcached;
151my $memd = new Cache::Memcached {
152  'servers' => [ "127.0.0.1:11215" ],
153  'connect_timeout' => 20,
154  'select_timeout' => 20
155};
156print "Here the memcached results:\n";
157$val = $memd->get("1");
158if ($val) { print "$val\n"; }
159$val = $memd->get("2");
160if ($val) { print "$val\n"; }
161$val = $memd->get("3");
162if ($val) { print "$val\n"; }
163$memd->disconnect_all;
164EOF
165
166--sorted_result
167SELECT c1,c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,
168          c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,
169          c220,c221,c222,c223,c224,c225,c226,c227,c228,c229,
170          c230,c231,c232,c233,c234,c235,c236,c237,c238,c239,
171          c240,c241,c242,c243,c244,c245,c246,c247,c248,c249
172       FROM t1;
173
174perl;
175use DBI;
176use Cache::Memcached;
177my $memd = new Cache::Memcached {
178  'servers' => [ "127.0.0.1:11215" ],
179  'connect_timeout' => 20,
180  'select_timeout' => 20
181};
182print "Here the memcached results after set:\n";
183$val = $memd->set("4","c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,c220,c221,c222,c223,c224,c225,c226,c227,c228,c229");
184$val = $memd->get("4");
185if ($val) { print "$val\n"; }
186$memd->disconnect_all;
187EOF
188
189--sorted_result
190SELECT c1,c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,
191          c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,
192          c220,c221,c222,c223,c224,c225,c226,c227,c228,c229,
193          c230,c231,c232,c233,c234,c235,c236,c237,c238,c239,
194          c240,c241,c242,c243,c244,c245,c246,c247,c248,c249
195       FROM t1;
196
197perl;
198use DBI;
199use Cache::Memcached;
200my $memd = new Cache::Memcached {
201  'servers' => [ "127.0.0.1:11215" ],
202  'connect_timeout' => 20,
203  'select_timeout' => 20
204};
205print "Here the memcached results after set:\n";
206$val = $memd->set("4","c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,
207                       c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,
208                       c220,c221,c222,c223,c224,c225,c226,c227,c228,c229"
209                 );
210$val = $memd->get("4");
211if ($val) { print "$val\n"; }
212$memd->disconnect_all;
213EOF
214
215--sorted_result
216SELECT c1,c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,
217          c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,
218          c220,c221,c222,c223,c224,c225,c226,c227,c228,c229,
219          c230,c231,c232,c233,c234,c235,c236,c237,c238,c239,
220          c240,c241,c242,c243,c244,c245,c246,c247,c248,c249
221       FROM t1;
222
223perl;
224use DBI;
225use Cache::Memcached;
226my $memd = new Cache::Memcached {
227  'servers' => [ "127.0.0.1:11215" ],
228  'connect_timeout' => 20,
229  'select_timeout' => 20
230};
231print "Here the memcached results after set:\n";
232$val = $memd->set("4","c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,
233                       c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,
234                       c220,c221,c222,c223,c224,c225,c226,c227,c228,c229,
235                       c230,c231,c232,c233,c234,c235,c236,c237,c238,c239,
236                       c240,c241,c242,c243,c244,c245,c246,c247,c248,c249"
237                 );
238$val = $memd->get("4");
239if ($val) { print "$val\n"; }
240$memd->disconnect_all;
241EOF
242
243--sorted_result
244SELECT c1,c200,c201,c202,c203,c204,c205,c206,c207,c208,c209,
245          c210,c211,c212,c213,c214,c215,c216,c217,c218,c219,
246          c220,c221,c222,c223,c224,c225,c226,c227,c228,c229,
247          c230,c231,c232,c233,c234,c235,c236,c237,c238,c239,
248          c240,c241,c242,c243,c244,c245,c246,c247,c248,c249
249       FROM t1;
250
251DROP TABLE t1;
252SET sql_mode=default;
253UNINSTALL PLUGIN daemon_memcached;
254DROP DATABASE innodb_memcache;
255
256SET @@global.tx_isolation= @tx_isolation;
257