code: func (e *GrantExec) grantTablePriv(priv *ast.PrivElem, user *ast.UserSpec) error {
  	dbName := e.Level.DBName
  	if len(dbName) == 0 {
  		dbName = e.ctx.GetSessionVars().CurrentDB
  	}
  	tblName := e.Level.TableName
  	asgns, err := composeTablePrivUpdateForGrant(e.ctx, priv.Priv, user.User.Username, user.User.Hostname, dbName, tblName)
  	if err != nil {
  		return err
  	}
  	sql := fmt.Sprintf(`UPDATE %s.%s SET %s WHERE User='%s' AND Host='%s' AND DB='%s' AND Table_name='%s';`, mysql.SystemDB, mysql.TablePrivTable, asgns, user.User.Username, user.User.Hostname, dbName, tblName)
  	_, _, err = e.ctx.(sqlexec.RestrictedSQLExecutor).ExecRestrictedSQL(e.ctx, sql)
  	return err
  }
docs: // grantTablePriv manipulates mysql.tables_priv table.