polardbxengine/mysql-test/suite/memcached/t/memc281_set_utf8.test

88 lines
2.4 KiB
Plaintext

# Test for Bug# 16875543 MEMCACHED: SERVER CRASH IN MEMCACHED SET OPERATION.
source include/not_valgrind.inc;
source include/have_memcached_plugin.inc;
source include/not_windows.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("Warning: MySQL is trying to drop");
--enable_query_log
--enable_connect_log
SET @transaction_isolation= @@global.transaction_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", "|");
# describe table for memcache
INSERT INTO containers VALUES ("desc_t1", "test", "t1",
"c1", "c2,c21", "c3", "c4", "c5", "PRIMARY");
USE test;
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
CREATE TABLE t1 (c1 VARCHAR(30) NOT NULL DEFAULT '',
c2 CHAR(120) NOT NULL DEFAULT '',
c21 CHAR(60) NOT NULL DEFAULT '',
primary key(c1))
ENGINE = INNODB DEFAULT CHARSET UTF8;
INSERT INTO t1 VALUES ('1', 'Darmstadt', 'City');
INSERT INTO t1 VALUES ('2', 'Berlin', 'Mitte');
INSERT INTO t1 VALUES ('3', 'Cottbus', 'West');
INSERT INTO t1 VALUES ('4', 'München', 'Süd');
# Tables must exist before plugin can be started!
--let $memcached_address=127.0.0.1:11281
--source ../include/load_daemon_memcached_expecting_success.inc
SHOW CREATE TABLE t1;
--sorted_result
SELECT c1, c2, c21 FROM t1;
# Test set/get by key.
# Here we test if the key is an invalid utf8 string,
# and if the key exceed the column length.
perl;
use DBI;
use Cache::Memcached;
my $memd = new Cache::Memcached {
'servers' => [ "127.0.0.1:11281" ],
'connect_timeout' => 20,
'select_timeout' =>20
};
# Test for set (update).
print "Here are the memcached results before set:\n";
$val = $memd->get("1");
if ($val) { print "$val\n"; }
print "Here are the memcached results after set:\n";
$val = $memd->set("1","Beijing|City");
$val = $memd->get("1");
if ($val) { print "$val\n"; }
$memd->disconnect_all;
EOF
--sorted_result
SELECT c1, c2, c21 FROM t1;
DROP TABLE t1;
UNINSTALL PLUGIN daemon_memcached;
DROP DATABASE innodb_memcache;
SET @@global.transaction_isolation= @transaction_isolation;