SET @transaction_isolation= @@global.transaction_isolation; SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; INSERT INTO cache_policies VALUES("cache_policy", "innodb_only", "innodb_only", "innodb_only", "innodb_only"); INSERT INTO config_options VALUES("separator", "|"); INSERT INTO containers VALUES ("desc_t1", "test", "t1", "c1", "c2", "c3", "c4", "c5", "PRIMARY"); USE test; DROP TABLE IF EXISTS t1; CREATE TABLE t1 (c1 VARCHAR(32), c2 VARCHAR(1024), c3 INT, c4 BIGINT UNSIGNED, c5 INT, primary key(c1)) ENGINE = INNODB; INSERT INTO t1 VALUES ('D', 'Darmstadt', 0, 0, 0); INSERT INTO t1 VALUES ('B', 'Berlin', 0, 0, 0); INSERT INTO t1 VALUES ('C', 'Cottbus', 0, 0 ,0); INSERT INTO t1 VALUES ('H', 'Hamburg', 0, 0, 0); INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so'; SELECT c1,c2 FROM t1; c1 c2 B Berlin C Cottbus D Darmstadt H Hamburg # Add E|Essen: Ok. # Add E|Essen: Error: E|Essen is still existing. SELECT c1,c2 FROM t1; c1 c2 B Berlin C Cottbus D Darmstadt E Essen H Hamburg # Here are the memcached results with E: Essen SELECT c1,c2 FROM t1; c1 c2 B Berlin C Cottbus D Darmstadt E Essen H Hamburg # Here are the memcached results with E,H: Essen Hamburg UNINSTALL PLUGIN daemon_memcached; use innodb_memcache; DELETE FROM containers; INSERT INTO containers VALUES ("desc_t2", "test", "t2", "c1", "c2", "c3", "c4", "c5", "PRIMARY"); USE test; DROP TABLE IF EXISTS t1; CREATE TABLE t2 (c1 VARCHAR(32), c2 VARCHAR(1024), c3 INT, c4 BIGINT UNSIGNED, c5 INT, primary key(c1)) ENGINE = INNODB; INSERT INTO t2 VALUES ('D', 't2_Darmstadt', 0, 0, 0); INSERT INTO t2 VALUES ('B', 't2_Berlin', 0, 0, 0); INSERT INTO t2 VALUES ('C', 't2_Cottbus', 0, 0 ,0); INSERT INTO t2 VALUES ('H', 't2_Hamburg', 0, 0, 0); INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so'; SELECT c1,c2 FROM t2; c1 c2 B t2_Berlin C t2_Cottbus D t2_Darmstadt H t2_Hamburg # Add E|Essen: Ok. # Add E|Essen: Error: E|Essen is still existing. SELECT c1,c2 FROM t2; c1 c2 B t2_Berlin C t2_Cottbus D t2_Darmstadt E Essen H t2_Hamburg # Here are the memcached results with E: Essen SELECT c1,c2 FROM t2; c1 c2 B t2_Berlin C t2_Cottbus D t2_Darmstadt E Essen H t2_Hamburg # Here are the memcached results with E,H: Essen t2_Hamburg UNINSTALL PLUGIN daemon_memcached; use innodb_memcache; DELETE FROM containers; INSERT INTO containers VALUES ("desc_t2", NULL, "t2", "c1", "c2", "c3", "c4", "c5", "PRIMARY"); ERROR 23000: Column 'db_schema' cannot be null INSERT INTO containers VALUES ("desc_t2", "test", "t2", NULL, "c2", "c3", "c4", "c5", "PRIMARY"); ERROR 23000: Column 'key_columns' cannot be null DELETE FROM containers; INSERT INTO containers VALUES ("desc_t2", "junk", "t2", "c1", "c2", "c3", "c4", "c5", "PRIMARY"); INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so'; # This will fail, since memcached not initialized UNINSTALL PLUGIN daemon_memcached; DELETE FROM containers; INSERT INTO containers VALUES ("desc_t2", "test", "t2", "c1", "c2", "c3", "c4", "c5", "PRIMARY"); USE test; DROP TABLE IF EXISTS t2; CREATE TABLE t2 (c1 int, c2 VARCHAR(1024), c3 INT, c4 BIGINT UNSIGNED, c5 INT, primary key(c1)) ENGINE = INNODB; INSERT INTO t2 VALUES (3, 't2_Hamburg', 0, 0, 0); INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so'; # This will succeed, since memcached supports int as key t2_Hamburg use test; DROP TABLE IF EXISTS t2; CREATE TABLE t2 (c1 CHAR(10), c2 VARCHAR(1024), c3 INT, c4 INT, c5 INT, primary key(c1)); INSERT INTO t2 VALUES ('H', 't2_Hamburg', 0, 0, 0); UNINSTALL PLUGIN daemon_memcached; INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so'; # This will fail, since memcached not initialized t2_Hamburg UNINSTALL PLUGIN daemon_memcached; use innodb_memcache; DELETE FROM containers; INSERT INTO containers VALUES ("desc_t2", "test", "t2", "c1", "c2", "c3", "c4", "c5", "PRIMARY"); USE test; DROP TABLE IF EXISTS t2; CREATE TABLE t2 (c1 VARCHAR(32), c2 VARCHAR(1024), c3 INT, c4 BIGINT UNSIGNED, c5 INT, primary key(c1)) ENGINE = INNODB; INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so'; SELECT c1,c2 FROM t2; c1 c2 # Add E|Essen: Ok. SELECT MAX(c4) INTO @baseline_cas_value FROM t2; SELECT c1, c2, c4-@baseline_cas_value as relative_cas FROM t2; c1 c2 relative_cas E Essen 0 # Add G|Gossen: Ok. Ok. SELECT c1, c2, c4-@baseline_cas_value as relative_cas FROM t2; c1 c2 relative_cas E Essen 0 G Gossen 1 H Hamburg 2 SELECT c1,c2,c3,c4-@baseline_cas_value as relative_cas,c5 FROM test.t2; c1 c2 c3 relative_cas c5 E Essen 0 0 0 G Gossen 0 1 0 H Hamburg 0 2 0 # Add B|Berlin expires in 1 seconds: Ok. select sleep(3); sleep(3) 0 # Should not find B|Berlin, since it is expired # Add C|Cottbus, expires 100 seconds: Ok. # Should be able to find C|Cottbus, assume it does not take 100s to get here Cottbus # Add J|Jilin Ok. # Should not find J|Jilin, it should be expired UNINSTALL PLUGIN daemon_memcached; use innodb_memcache; DELETE FROM containers; INSERT INTO containers VALUES ("desc_t2", "test", "t2", "c1", "c2", "c3", "c4", "c5", "PRIMARY"); USE test; DROP TABLE IF EXISTS t2; CREATE TABLE t2 (c1 VARCHAR(32), c2 VARCHAR(1024), c3 INT, c4 BIGINT UNSIGNED, c5 INT, primary key(c1)) ENGINE = INNODB; INSERT INTO t2 VALUES ('D', 't2_Darmstadt', 0, 0, 0); INSERT INTO t2 VALUES ('B', 't2_Berlin', 0, 0, 0); INSERT INTO t2 VALUES ('C', 't2_Cottbus', 0, 0 ,0); INSERT INTO t2 VALUES ('H', 't2_Hamburg', 0, 0, 0); INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so'; SELECT c1,c2 FROM t2; c1 c2 B t2_Berlin C t2_Cottbus D t2_Darmstadt H t2_Hamburg # Add E|Essen: Ok. connection default; c1 c2 # Add E|Essen: Error: E|Essen is still existing. c1 c2 # Here are the memcached results with E: c1 c2 # Here are the memcached results with E,H: alter table test.t2 change c2 c_new int; show create table test.t2; Table Create Table t2 CREATE TABLE `t2` ( `c1` varchar(32) NOT NULL, `c_new` int(11) DEFAULT NULL, `c3` int(11) DEFAULT NULL, `c4` bigint(20) unsigned DEFAULT NULL, `c5` int(11) DEFAULT NULL, PRIMARY KEY (`c1`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so'; DROP TABLE t2; UNINSTALL PLUGIN daemon_memcached; DROP DATABASE innodb_memcache; SET @@global.transaction_isolation= @transaction_isolation;