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) (#38561)

close #38293
  • Loading branch information
ti-chi-bot authored Oct 31, 2022
1 parent 1acd0b6 commit 6ebef7a
Show file tree
Hide file tree
Showing 2 changed files with 16 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 @@ -126,6 +126,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
15 changes: 15 additions & 0 deletions executor/grant_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -595,3 +595,18 @@ func TestNonExistTableIllegalGrant(t *testing.T) {
// Column level, not existing table, illegal privilege
tk.MustGetErrCode("grant create temporary tables (NotExistsCol) on NotExistsD29302.NotExistsT29302 to u29302;", mysql.ErrWrongUsage)
}

func TestIssue38293(t *testing.T) {
store, clean := testkit.CreateMockStore(t)
defer clean()

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 6ebef7a

Please sign in to comment.