# restart SELECT @@global.temptable_use_mmap; @@global.temptable_use_mmap 1 SET @@session.temptable_use_mmap=false; ERROR HY000: Variable 'temptable_use_mmap' is a GLOBAL variable and should be set with SET GLOBAL SET @@global.temptable_use_mmap=NULL; ERROR 42000: Variable 'temptable_use_mmap' can't be set to the value of 'NULL' # Test with temptable_use_mmap set to false # to stop overflowing temptable to disk SET @@global.temptable_use_mmap=false; SELECT @@global.temptable_use_mmap; @@global.temptable_use_mmap 0 SELECT count_alloc > 0 FROM performance_schema.memory_summary_global_by_event_name WHERE event_name = 'memory/temptable/physical_disk'; count_alloc > 0 0 CREATE TABLE t (c VARCHAR(128)); INSERT INTO t VALUES (REPEAT('a', 128)), (REPEAT('b', 128)), (REPEAT('c', 128)), (REPEAT('d', 128)); ANALYZE TABLE t; Table Op Msg_type Msg_text test.t analyze status OK SET GLOBAL temptable_max_ram = 2097152; SELECT * FROM t AS t1, t AS t2, t AS t3, t AS t4, t AS t5, t AS t6 ORDER BY 1 LIMIT 2; SET GLOBAL temptable_max_ram = default; SELECT count_alloc > 0 FROM performance_schema.memory_summary_global_by_event_name WHERE event_name = 'memory/temptable/physical_disk'; count_alloc > 0 0 DROP TABLE t; # Test with temptable_use_mmap set to true # to enable overflowing temptable to disk SET @@global.temptable_use_mmap = true; SELECT @@global.temptable_use_mmap; @@global.temptable_use_mmap 1 CREATE TABLE t (c VARCHAR(128)); INSERT INTO t VALUES (REPEAT('a', 128)), (REPEAT('b', 128)), (REPEAT('c', 128)), (REPEAT('d', 128)); ANALYZE TABLE t; Table Op Msg_type Msg_text test.t analyze status OK SET GLOBAL temptable_max_ram = 2097152; # Disable hash join, since that will trigger the new execution engine, # which in turn won't do the temporary materialization needed to trigger # overflow to disk. SELECT /*+ NO_HASH_JOIN(t1, t2, t3, t4, t5, t6) */ * FROM t AS t1, t AS t2, t AS t3, t AS t4, t AS t5, t AS t6 ORDER BY 1 LIMIT 2; SET GLOBAL temptable_max_ram = default; SET GLOBAL temptable_use_mmap = default; SELECT @@global.temptable_use_mmap; @@global.temptable_use_mmap 1 SELECT count_alloc > 0 FROM performance_schema.memory_summary_global_by_event_name WHERE event_name = 'memory/temptable/physical_disk'; count_alloc > 0 1 DROP TABLE t;