184 lines
5.3 KiB
Plaintext
184 lines
5.3 KiB
Plaintext
source include/not_valgrind.inc;
|
|
source include/have_memcached_plugin.inc;
|
|
source include/not_windows.inc;
|
|
|
|
# This is a test on max daemon_memcached_w_batch_size configure option (1048576)
|
|
# The read configure option daemon_memcached_r_batch_size is also configured
|
|
# to 1048576. This means the transaction never commits
|
|
--disable_query_log
|
|
CALL mtr.add_suppression("daemon-memcached-r-batch-size': unsigned value");
|
|
CALL mtr.add_suppression("Could not obtain server's UPN to be used as target service name");
|
|
CALL mtr.add_suppression("Warning: MySQL is trying to drop");
|
|
--enable_query_log
|
|
|
|
--enable_connect_log
|
|
SET @auto_commit= @@global.autocommit;
|
|
SET @@global.autocommit=0;
|
|
SET @transaction_isolation= @@global.transaction_isolation;
|
|
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
SET @lock_wait=@@global.lock_wait_timeout;
|
|
SET @@global.lock_wait_timeout=1;
|
|
SET @innodb_lock_wait=@@global.innodb_lock_wait_timeout;
|
|
SET @@global.innodb_lock_wait_timeout=1;
|
|
|
|
# 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", "|");
|
|
|
|
# describe table for memcache
|
|
INSERT INTO containers VALUES ("desc_t1", "test", "t1",
|
|
"c1", "c2,c21", "c3", "c4", "c5", "PRIMARY");
|
|
COMMIT;
|
|
|
|
CREATE USER mysqltest1@localhost;
|
|
COMMIT;
|
|
connect (mysqltest1,localhost,mysqltest1,,);
|
|
connection mysqltest1;
|
|
|
|
USE test;
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
CREATE TABLE t1 (c1 VARCHAR(32),
|
|
c2 TEXT,
|
|
c21 TEXT,
|
|
c3 INT, c4 BIGINT UNSIGNED, c5 INT, primary key(c1))
|
|
ENGINE = INNODB;
|
|
|
|
INSERT INTO t1 VALUES("Z", REPEAT("a", 15000), REPEAT("b", 1000), 0, 0, 0);
|
|
COMMIT;
|
|
|
|
connection default;
|
|
# Tables must exist before plugin can be started!
|
|
--let $memcached_address=127.0.0.1:11251
|
|
--source ../include/load_daemon_memcached_expecting_success.inc
|
|
SELECT @@global.daemon_memcached_w_batch_size;
|
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
|
SET @@global.daemon_memcached_w_batch_size=100;
|
|
|
|
connection default;
|
|
perl;
|
|
use DBI;
|
|
use Cache::Memcached;
|
|
my $memd = new Cache::Memcached {
|
|
'servers' => [ "127.0.0.1:11251" ],
|
|
'connect_timeout' => 20,
|
|
'select_timeout' => 20
|
|
};
|
|
#print "Here are the memcached :\n";
|
|
$val = $memd->set("B","Berlin|Mitte");
|
|
$val = $memd->get("B");
|
|
if ($val) { print "$val\n"; }
|
|
$val = $memd->set("D","Darmstadt|City");
|
|
$val = $memd->get("D");
|
|
if ($val) { print "$val\n"; }
|
|
$val = $memd->get("Z");
|
|
if ($val) { print "$val\n"; }
|
|
$memd->disconnect_all;
|
|
EOF
|
|
|
|
--sorted_result
|
|
SELECT c1 FROM test.t1;
|
|
|
|
connection mysqltest1;
|
|
# With latest checkin, the memcached plugin will automatically commit
|
|
# transactions when the connection is closed. So we cannot test the
|
|
# timeout with the memcached connection closed. If there are new ways
|
|
# to test such, we can re-enable this
|
|
# --error ER_LOCK_WAIT_TIMEOUT
|
|
SELECT c1 FROM t1 FOR UPDATE;
|
|
COMMIT;
|
|
|
|
connection default;
|
|
perl;
|
|
use DBI;
|
|
use Cache::Memcached;
|
|
my $memd = new Cache::Memcached {
|
|
'servers' => [ "127.0.0.1:11251" ],
|
|
'connect_timeout' => 20,
|
|
'select_timeout' => 20
|
|
};
|
|
print "Here are the memcached results:\n";
|
|
$val = $memd->add("M","München|Perlach");
|
|
$val = $memd->get("M");
|
|
if ($val) { print "$val\n"; }
|
|
$val = $memd->add("N","Nürnberg|Nord");
|
|
$val = $memd->get("N");
|
|
if ($val) { print "$val\n"; }
|
|
$val = $memd->add("O","Oldenburg|Friesland");
|
|
$val = $memd->get("O");
|
|
if ($val) { print "$val\n"; }
|
|
|
|
#It will not be able to see values added by other session
|
|
$val = $memd->get("D");
|
|
if ($val) { print "$val\n"; }
|
|
$memd->disconnect_all;
|
|
EOF
|
|
--sorted_result
|
|
SELECT c1 FROM test.t1;
|
|
|
|
connection mysqltest1;
|
|
# With latest checkin, the memcached plugin will automatically commit
|
|
# transactions when the connection is closed. So we cannot test the
|
|
# timeout with the memcached connection closed. If there are new ways
|
|
# to test such, we can re-enable this
|
|
# --error ER_LOCK_WAIT_TIMEOUT
|
|
SELECT c1,c2,c21 FROM test.t1 FOR UPDATE;
|
|
COMMIT;
|
|
|
|
connection default;
|
|
perl;
|
|
use DBI;
|
|
use Cache::Memcached;
|
|
my $memd = new Cache::Memcached {
|
|
'servers' => [ "127.0.0.1:11251" ],
|
|
'connect_timeout' => 20,
|
|
'select_timeout' => 20
|
|
};
|
|
print "Here are the memcached results:\n";
|
|
$val = $memd->replace("G","Gossen|C");
|
|
if ($val) { print "$val\n"; }
|
|
$val = $memd->get("G");
|
|
if ($val) { print "$val\n"; }
|
|
$val = $memd->replace("F","Frankfurt|S");
|
|
if ($val) { print "$val\n"; }
|
|
$val = $memd->get("F");
|
|
if ($val) { print "$val\n"; }
|
|
$val = $memd->replace("E","Essen|W");
|
|
if ($val) { print "$val\n"; }
|
|
$val = $memd->get("E");
|
|
if ($val) { print "$val\n"; }
|
|
$memd->disconnect_all;
|
|
EOF
|
|
--sorted_result
|
|
SELECT c1 FROM test.t1;
|
|
|
|
connection default;
|
|
# With latest checkin, the memcached plugin will automatically commit
|
|
# transactions when the connection is closed. So we cannot test the
|
|
# timeout with the memcached connection closed. If there are new ways
|
|
# to test such, we can re-enable this
|
|
# --error ER_LOCK_WAIT_TIMEOUT
|
|
SELECT c1,c2,c21 FROM test.t1 FOR UPDATE;
|
|
|
|
DROP TABLE test.t1;
|
|
|
|
connection default;
|
|
disconnect mysqltest1;
|
|
|
|
UNINSTALL PLUGIN daemon_memcached;
|
|
DROP DATABASE innodb_memcache;
|
|
DROP USER mysqltest1@localhost;
|
|
|
|
SET @@global.transaction_isolation= @transaction_isolation;
|
|
SET @@global.autocommit=@auto_commit;
|
|
SET @@global.lock_wait_timeout=@lock_wait;
|
|
SET @@global.innodb_lock_wait_timeout=@innodb_lock_wait;
|