Skip to content

Commit

Permalink
MDEV-8464 : ALTER VIEW not replicated in some cases
Browse files Browse the repository at this point in the history
(Additional fix in 10.0-galera branch)
THD's lex->definer initially holds "*current_user" for
CURRENT_USER(). Use get_current_user() to get the real
current user.
  • Loading branch information
Nirbhay Choubey committed Aug 14, 2015
1 parent 52f1543 commit 5cf737c
Showing 1 changed file with 16 additions and 7 deletions.
23 changes: 16 additions & 7 deletions sql/wsrep_mysqld.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1130,24 +1130,33 @@ create_view_query(THD *thd, uchar** buf, size_t* buf_len)
buff.append(command[thd->lex->create_view_mode].str,
command[thd->lex->create_view_mode].length);

if (!lex->definer)
LEX_USER *definer;

if (lex->definer)
{
definer= get_current_user(thd, lex->definer);
}
else
{
/*
DEFINER-clause is missing; we have to create default definer in
persistent arena to be PS/SP friendly.
If this is an ALTER VIEW then the current user should be set as
the definer.
*/
definer= create_default_definer(thd, false);
}

if (!(lex->definer= create_default_definer(thd, false)))
{
WSREP_WARN("view default definer issue");
}
if (definer)
{
views->definer.user = definer->user;
views->definer.host = definer->host;
} else {
WSREP_ERROR("Failed to get DEFINER for VIEW.");
return 1;
}

views->algorithm = lex->create_view_algorithm;
views->definer.user = lex->definer->user;
views->definer.host = lex->definer->host;
views->view_suid = lex->create_view_suid;
views->with_check = lex->create_view_check;

Expand Down

0 comments on commit 5cf737c

Please sign in to comment.