From d51ebae693f33c11d745eae2090ef7988ca5136a Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Fri, 3 Jul 2026 14:41:10 +0800 Subject: [PATCH 1/5] vars: update memory arbitrator mode to priority Signed-off-by: Zhigao TONG --- pkg/sessionctx/vardef/tidb_vars.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/sessionctx/vardef/tidb_vars.go b/pkg/sessionctx/vardef/tidb_vars.go index 23ab58a02678e..96815f7eeb8d7 100644 --- a/pkg/sessionctx/vardef/tidb_vars.go +++ b/pkg/sessionctx/vardef/tidb_vars.go @@ -1826,7 +1826,7 @@ const ( DefTiDBEnableBindingUsage = true DefTiDBAdvancerCheckPointLagLimit = 48 * time.Hour DefTiDBMemArbitratorSoftLimitText = memory.ArbitratorSoftLimitModDisableName - DefTiDBMemArbitratorModeText = memory.ArbitratorModeDisableName + DefTiDBMemArbitratorModeText = memory.ArbitratorModePriorityName DefTiDBMemArbitratorQueryReservedText = "0" DefTiDBMemArbitratorWaitAverse = "0" DefTiDBIndexLookUpPushDownPolicy = IndexLookUpPushDownPolicyHintOnly From 979a8c34430dc105721d87a5cbf1cb842a60d981 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Fri, 3 Jul 2026 15:07:27 +0800 Subject: [PATCH 2/5] executor: update global memory arbitrator mode tests for accuracy Signed-off-by: Zhigao TONG --- pkg/executor/test/memtest/mem_test.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pkg/executor/test/memtest/mem_test.go b/pkg/executor/test/memtest/mem_test.go index 0501b706657ae..bbeecd18ee4d5 100644 --- a/pkg/executor/test/memtest/mem_test.go +++ b/pkg/executor/test/memtest/mem_test.go @@ -56,8 +56,7 @@ func TestGlobalMemArbitrator(t *testing.T) { tk.MustExecToErr("set @@tidb_mem_arbitrator_mode = standard") // only global require.Equal(t, tk.ExecToErr("set global tidb_mem_arbitrator_mode = 1").Error(), "tidb_mem_arbitrator_mode: disable; standard; priority;") - require.Equal(t, memory.ArbitratorModeDisable, memory.GlobalMemArbitrator().WorkMode()) - require.True(t, memory.GlobalMemArbitrator() == nil) + tk.MustQuery("select @@tidb_mem_arbitrator_mode").Check(testkit.Rows("priority")) tk.MustExec("set global tidb_mem_arbitrator_mode = standard") tk.MustQuery("select @@tidb_mem_arbitrator_mode").Check(testkit.Rows("standard")) @@ -68,20 +67,19 @@ func TestGlobalMemArbitrator(t *testing.T) { require.Equal(t, memory.ArbitratorModePriority, memory.GlobalMemArbitrator().WorkMode()) tk.MustExec("set global tidb_mem_arbitrator_mode = default") - tk.MustQuery("select @@tidb_mem_arbitrator_mode").Check(testkit.Rows("disable")) - require.Equal(t, memory.ArbitratorModeDisable, memory.GlobalMemArbitrator().WorkMode()) + tk.MustQuery("select @@tidb_mem_arbitrator_mode").Check(testkit.Rows("priority")) const maxServerLimit uint64 = 1e15 maxServerLimitStr := fmt.Sprintf("%d", maxServerLimit) tk.MustExec(fmt.Sprintf("set global tidb_server_memory_limit=%d", maxServerLimit)) tk.MustQuery("select @@tidb_server_memory_limit").Check(testkit.Rows(maxServerLimitStr)) require.Equal(t, maxServerLimit, memory.ServerMemoryLimit.Load()) - require.Equal(t, uint64(0), memory.GlobalMemArbitrator().Limit()) // 0 under disable mode + require.Equal(t, maxServerLimit, memory.GlobalMemArbitrator().Limit()) // 0 under disable mode require.Equal(t, tk.ExecToErr("set global tidb_mem_arbitrator_soft_limit=-1").Error(), "tidb_mem_arbitrator_soft_limit: 0 (default); (0, 1.0] float-rate * server-limit; (1, server-limit] integer bytes; auto;") tk.MustExec("set global tidb_mem_arbitrator_soft_limit = 12345678") tk.MustQuery("select @@tidb_mem_arbitrator_soft_limit").Check(testkit.Rows("12345678")) - require.Equal(t, uint64(0), memory.GlobalMemArbitrator().SoftLimit()) // 0 under disable mode + require.Equal(t, uint64(12345678), memory.GlobalMemArbitrator().SoftLimit()) // normal under standard mode tk.MustExec("set global tidb_mem_arbitrator_mode = standard") From 2250585a0745e29c1981f972d5b4e3cb1c6d309b Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Fri, 3 Jul 2026 15:13:26 +0800 Subject: [PATCH 3/5] util/memory: reset global arbitrator mode in tests --- pkg/executor/test/memtest/mem_test.go | 2 +- pkg/util/memory/global_arbitrator.go | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/executor/test/memtest/mem_test.go b/pkg/executor/test/memtest/mem_test.go index bbeecd18ee4d5..751d5b2b1ba9c 100644 --- a/pkg/executor/test/memtest/mem_test.go +++ b/pkg/executor/test/memtest/mem_test.go @@ -74,7 +74,7 @@ func TestGlobalMemArbitrator(t *testing.T) { tk.MustExec(fmt.Sprintf("set global tidb_server_memory_limit=%d", maxServerLimit)) tk.MustQuery("select @@tidb_server_memory_limit").Check(testkit.Rows(maxServerLimitStr)) require.Equal(t, maxServerLimit, memory.ServerMemoryLimit.Load()) - require.Equal(t, maxServerLimit, memory.GlobalMemArbitrator().Limit()) // 0 under disable mode + require.Equal(t, maxServerLimit, memory.GlobalMemArbitrator().Limit()) require.Equal(t, tk.ExecToErr("set global tidb_mem_arbitrator_soft_limit=-1").Error(), "tidb_mem_arbitrator_soft_limit: 0 (default); (0, 1.0] float-rate * server-limit; (1, server-limit] integer bytes; auto;") tk.MustExec("set global tidb_mem_arbitrator_soft_limit = 12345678") diff --git a/pkg/util/memory/global_arbitrator.go b/pkg/util/memory/global_arbitrator.go index a2825313149d6..7fcc093cf4468 100644 --- a/pkg/util/memory/global_arbitrator.go +++ b/pkg/util/memory/global_arbitrator.go @@ -331,6 +331,8 @@ func SetupGlobalMemArbitratorForTest(baseDir string) { panic("the global memory arbitrator is already set up") } + setGlobalMemArbitratorWorkModeText(ArbitratorModeDisableName) + globalArbitrator.enable.Store(false) _ = os.Remove(runtimeMemStateRecorderFilePath(baseDir)) mockinitGlobalMemArbitrator = func() *MemArbitrator { m := NewMemArbitrator( From 827f8f417850478ef68d5f3a2e70ad44b3f38b96 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Fri, 3 Jul 2026 15:20:03 +0800 Subject: [PATCH 4/5] util/memory: avoid resetting arbitrator mode in test setup --- pkg/util/memory/global_arbitrator.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/util/memory/global_arbitrator.go b/pkg/util/memory/global_arbitrator.go index 7fcc093cf4468..a2825313149d6 100644 --- a/pkg/util/memory/global_arbitrator.go +++ b/pkg/util/memory/global_arbitrator.go @@ -331,8 +331,6 @@ func SetupGlobalMemArbitratorForTest(baseDir string) { panic("the global memory arbitrator is already set up") } - setGlobalMemArbitratorWorkModeText(ArbitratorModeDisableName) - globalArbitrator.enable.Store(false) _ = os.Remove(runtimeMemStateRecorderFilePath(baseDir)) mockinitGlobalMemArbitrator = func() *MemArbitrator { m := NewMemArbitrator( From 3ba3ba6bb9904c0f4f615e40cb6e582623e9c763 Mon Sep 17 00:00:00 2001 From: Zhigao TONG Date: Fri, 3 Jul 2026 15:32:29 +0800 Subject: [PATCH 5/5] planner: add rule_max_min_eliminate_test and update test dependencies Signed-off-by: Zhigao TONG --- pkg/planner/core/rule/BUILD.bazel | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/planner/core/rule/BUILD.bazel b/pkg/planner/core/rule/BUILD.bazel index ef49c5ad23299..9cc8f73bd88cf 100644 --- a/pkg/planner/core/rule/BUILD.bazel +++ b/pkg/planner/core/rule/BUILD.bazel @@ -66,12 +66,13 @@ go_test( timeout = "short", srcs = [ "collect_column_stats_usage_test.go", + "rule_max_min_eliminate_test.go", "rule_partition_pruning_test.go", ], + embed = [":rule"], flaky = True, - shard_count = 13, + shard_count = 14, deps = [ - ":rule", "//pkg/expression", "//pkg/infoschema", "//pkg/meta/model", @@ -79,6 +80,7 @@ go_test( "//pkg/parser/ast", "//pkg/planner/core", "//pkg/planner/core/base", + "//pkg/planner/core/operator/logicalop", "//pkg/planner/core/resolve", "//pkg/planner/util/coretestsdk", "//pkg/session",