source include/not_valgrind.inc;
source include/have_memcached_plugin.inc;
source include/not_windows.inc;
source include/have_innodb.inc;

--disable_query_log
CALL mtr.add_suppression("daemon-memcached-w-batch-size': unsigned");
CALL mtr.add_suppression("Could not obtain server's UPN to be used as target service name");
CALL mtr.add_suppression("InnoDB: Warning: MySQL is trying to drop");
--enable_query_log

--enable_connect_log
SET @tx_isolation= @@global.tx_isolation;
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

# Create the memcached tables
--disable_query_log
source include/memcache_config.inc;
--enable_query_log

INSERT INTO cache_policies VALUES("cache_policy", "innodb_only",
				  "innodb_only", "innodb_only", "innodb_only");

INSERT INTO config_options VALUES("separator", "|");
INSERT INTO config_options VALUES("table_map_delimiter", ".");


--echo #
--echo #Bug 20391552 CRASH DURING MEMCACHE WORKLOAD
--echo #


# describe table for memcache
INSERT INTO containers VALUES ("desc_t1", "test", "t1",
			       "c1", "c2",  "c3", "c4", "c5", "PRIMARY");

USE test;

--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings

CREATE TABLE t1        (c1 VARCHAR(32),
			c2 VARCHAR(1024),
			c3 INT, c4 BIGINT UNSIGNED, c5 INT, primary key(c1))
ENGINE = INNODB;

# Tables must exist before plugin can be started!
INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so';

# The following select is writing all to memcache otherwisw memcache is empty.
--sorted_result
SELECT c1,c2 FROM t1;

SELECT SLEEP(2);

perl;
use DBI;
use Cache::Memcached;
my $memd = new Cache::Memcached {
  'servers' => [ "127.0.0.1:11283" ],
  'connect_timeout' => 20,
  'select_timeout' => 20
};
$val = $memd->get("1");
if ($memd->add("E","Essen")) {
  print "Ok.\n";
}
else {
  print "Error: E|Essen is still existing.\n";
}
$memd->disconnect_all;
EOF

--sorted_result
SELECT c1,c2 FROM t1;
DROP TABLE t1;

UNINSTALL PLUGIN daemon_memcached;
DROP DATABASE innodb_memcache;

SET @@global.tx_isolation= @tx_isolation;
