diff --git a/executor/index_lookup_join_test.go b/executor/index_lookup_join_test.go index 6b5d6e96bcc44..b3910fdd1a872 100644 --- a/executor/index_lookup_join_test.go +++ b/executor/index_lookup_join_test.go @@ -183,6 +183,16 @@ func TestInapplicableIndexJoinHint(t *testing.T) { tk.MustQuery(`show warnings;`).Check(testkit.Rows(`Warning 1815 Optimizer Hint /*+ INL_MERGE_JOIN(t1) */ is inapplicable`)) tk.MustQuery(`select /*+ INL_MERGE_JOIN(t2) */ * from t1 right join t2 on t1.a=t2.a;`).Check(testkit.Rows()) tk.MustQuery(`show warnings;`).Check(testkit.Rows(`Warning 1815 Optimizer Hint /*+ INL_MERGE_JOIN(t2) */ is inapplicable`)) + + // Test for issues/46160 + tk.MustExec(`drop table if exists t1, t2;`) + tk.MustExec("use test") + tk.MustExec(`create table t1 (a int, key(a))`) + tk.MustExec(`create table t2 (a int, key(a))`) + + query := `select /*+ tidb_inlj(bb) */ aa.* from (select * from t1) as aa left join + (select t2.a, t2.a*2 as a2 from t2) as bb on aa.a=bb.a;` + tk.HasPlan(query, "IndexJoin") } func TestIndexJoinOverflow(t *testing.T) { diff --git a/planner/core/logical_plan_builder.go b/planner/core/logical_plan_builder.go index defffec481895..77930a3edfae9 100644 --- a/planner/core/logical_plan_builder.go +++ b/planner/core/logical_plan_builder.go @@ -575,7 +575,8 @@ func extractTableAlias(p Plan, parentOffset int) *hintTableInfo { if len(p.OutputNames()) > 0 && p.OutputNames()[0].TblName.L != "" { firstName := p.OutputNames()[0] for _, name := range p.OutputNames() { - if name.TblName.L != firstName.TblName.L || name.DBName.L != firstName.DBName.L { + if name.TblName.L != firstName.TblName.L || + (name.DBName.L != "" && firstName.DBName.L != "" && name.DBName.L != firstName.DBName.L) { // DBName can be nil, see #46160 return nil } }