Skip to content

Commit

Permalink
executor: fix the missing Grantor when querying mysql.`tables_pri…
Browse files Browse the repository at this point in the history
…v` (#38461)

close #38293
  • Loading branch information
CbcWestwolf authored Oct 20, 2022
1 parent 5b0ae14 commit 17c7bcc
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
1 change: 1 addition & 0 deletions executor/grant.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ func (e *GrantExec) Next(ctx context.Context, req *chunk.Chunk) error {
// Create internal session to start internal transaction.
isCommit := false
internalSession, err := e.getSysSession()
internalSession.GetSessionVars().User = e.ctx.GetSessionVars().User
if err != nil {
return err
}
Expand Down
13 changes: 13 additions & 0 deletions executor/grant_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -588,3 +588,16 @@ func TestIssue34610(t *testing.T) {
tk.MustExec("GRANT SELECT ON T1 to user_1@localhost;")
tk.MustExec("GRANT SELECT ON t1 to user_1@localhost;")
}

func TestIssue38293(t *testing.T) {
store := testkit.CreateMockStore(t)
tk := testkit.NewTestKit(t, store)
tk.Session().GetSessionVars().User = &auth.UserIdentity{Username: "root", Hostname: "localhost"}
tk.MustExec("DROP USER IF EXISTS test")
tk.MustExec("CREATE USER test")
defer func() {
tk.MustExec("DROP USER test")
}()
tk.MustExec("GRANT SELECT ON `mysql`.`db` TO test")
tk.MustQuery("SELECT `Grantor` FROM `mysql`.`tables_priv` WHERE User = 'test'").Check(testkit.Rows("root@localhost"))
}

0 comments on commit 17c7bcc

Please sign in to comment.