From 65bef152cb8f7f730a51c4967cb4218605e945e6 Mon Sep 17 00:00:00 2001
From: xixirangrang <35301108+hfxsd@users.noreply.github.com>
Date: Wed, 27 Sep 2023 11:12:08 +0800
Subject: [PATCH 1/4] draft
---
optimizer-hints.md | 10 ++++++++++
system-variables.md | 10 ++++++++++
2 files changed, 20 insertions(+)
diff --git a/optimizer-hints.md b/optimizer-hints.md
index 9d85671fe7c3..dd363dd727d8 100644
--- a/optimizer-hints.md
+++ b/optimizer-hints.md
@@ -997,3 +997,13 @@ CREATE TABLE t2 (a INT);
EXPLAIN SELECT /*+ NO_HASH_JOIN(t1), NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1.a=t2.a;
ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query
```
+
+- 如果系统变量 [`tidb_opt_enable_hash_join`](/system-variables.md#tidb_opt_enable_hash_join-从-v740-版本开始引入) 设置为 `OFF`,那么其他 Join 方式也都会被排除。
+
+```sql
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (a INT);
+set tidb_opt_enable_hash_join=off;
+EXPLAIN SELECT /*+ NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1.a=t2.a;
+ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query
+```
diff --git a/system-variables.md b/system-variables.md
index 6ec480302616..5f66493c2aaf 100644
--- a/system-variables.md
+++ b/system-variables.md
@@ -3005,6 +3005,16 @@ mysql> desc select count(distinct a) from test.t;
- 默认值:`ON`
- 这个变量用来控制优化器是否开启交叉估算。
+### `tidb_opt_enable_hash_join` 从 v7.4.0 版本开始引入
+
+- 作用域:SESSION | GLOBAL
+- 是否持久化到集群:是
+- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
+- 类型:布尔型
+- 默认值:`ON`
+- 控制优化器是否会选择表的哈希连接。默认打开 (`ON`)。设置为 `OFF` 时,除非没有计划可用,否则优化器在生成执行计划时会避免选择表的哈希连接。
+- 如果同时使用了 `tidb_opt_enable_hash_join` 和 `HASH_JOIN` Hint,则 `HASH_JOIN` Hint 优先级更高。即使 `tidb_opt_enable_hash_join` 被设置为 `off`,如果在查询中指定了 `HASH_JOIN` Hint,TiDB 优化器仍然会强制执行哈希连接计划。
+
### `tidb_opt_enable_non_eval_scalar_subquery` 从 v7.3.0 版本开始引入
- 作用域:SESSION | GLOBAL
From aec8ec072d7b7bbb8025067115eddaaf62c70466 Mon Sep 17 00:00:00 2001
From: xixirangrang
Date: Sat, 7 Oct 2023 10:33:12 +0800
Subject: [PATCH 2/4] Apply suggestions from code review
Co-authored-by: Grace Cai
---
system-variables.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/system-variables.md b/system-variables.md
index 5f66493c2aaf..fb3e95556534 100644
--- a/system-variables.md
+++ b/system-variables.md
@@ -3012,8 +3012,8 @@ mysql> desc select count(distinct a) from test.t;
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
- 类型:布尔型
- 默认值:`ON`
-- 控制优化器是否会选择表的哈希连接。默认打开 (`ON`)。设置为 `OFF` 时,除非没有计划可用,否则优化器在生成执行计划时会避免选择表的哈希连接。
-- 如果同时使用了 `tidb_opt_enable_hash_join` 和 `HASH_JOIN` Hint,则 `HASH_JOIN` Hint 优先级更高。即使 `tidb_opt_enable_hash_join` 被设置为 `off`,如果在查询中指定了 `HASH_JOIN` Hint,TiDB 优化器仍然会强制执行哈希连接计划。
+- 控制优化器是否会选择表的哈希连接。默认打开 (`ON`)。设置为 `OFF` 时,优化器在生成执行计划时会避免选择表的哈希连接,除非没有其他连接方式可用。
+- 如果同时使用了 `tidb_opt_enable_hash_join` 和 `HASH_JOIN` Hint,则 `HASH_JOIN` Hint 优先级更高。即使 `tidb_opt_enable_hash_join` 被设置为 `OFF`,如果在查询中指定了 `HASH_JOIN` Hint,TiDB 优化器仍然会强制执行哈希连接计划。
### `tidb_opt_enable_non_eval_scalar_subquery` 从 v7.3.0 版本开始引入
From e5049079bb254d109f75fed1989b0b60d3a86813 Mon Sep 17 00:00:00 2001
From: xixirangrang
Date: Sat, 7 Oct 2023 10:37:16 +0800
Subject: [PATCH 3/4] Update optimizer-hints.md
---
optimizer-hints.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/optimizer-hints.md b/optimizer-hints.md
index dd363dd727d8..a91e7181b289 100644
--- a/optimizer-hints.md
+++ b/optimizer-hints.md
@@ -998,7 +998,7 @@ EXPLAIN SELECT /*+ NO_HASH_JOIN(t1), NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1
ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query
```
-- 如果系统变量 [`tidb_opt_enable_hash_join`](/system-variables.md#tidb_opt_enable_hash_join-从-v740-版本开始引入) 设置为 `OFF`,那么其他 Join 方式也都会被排除。
+- 系统变量 [`tidb_opt_enable_hash_join`](/system-variables.md#tidb_opt_enable_hash_join-从-v740-版本开始引入) 设置为 `OFF`,而且其他 Join 方式也都会被排除。
```sql
CREATE TABLE t1 (a INT);
From 97d225c19254e6d77f3aac276982e080869ae565 Mon Sep 17 00:00:00 2001
From: xixirangrang
Date: Sat, 7 Oct 2023 10:37:48 +0800
Subject: [PATCH 4/4] Update optimizer-hints.md
---
optimizer-hints.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/optimizer-hints.md b/optimizer-hints.md
index a91e7181b289..9f8e5e0ec0e9 100644
--- a/optimizer-hints.md
+++ b/optimizer-hints.md
@@ -998,7 +998,7 @@ EXPLAIN SELECT /*+ NO_HASH_JOIN(t1), NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1
ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query
```
-- 系统变量 [`tidb_opt_enable_hash_join`](/system-variables.md#tidb_opt_enable_hash_join-从-v740-版本开始引入) 设置为 `OFF`,而且其他 Join 方式也都会被排除。
+- 系统变量 [`tidb_opt_enable_hash_join`](/system-variables.md#tidb_opt_enable_hash_join-从-v740-版本开始引入) 设置为 `OFF`,而且其他 Join 方式也都被排除了。
```sql
CREATE TABLE t1 (a INT);