Hi, Sergei!

On Wed, Dec 26, 2018 at 7:42 AM Sergei Golubchik <serg@mariadb.org> wrote:
Hi, Nikita!

On Dec 21, Nikita Malyavin wrote:
> > > @@ -4938,6 +4938,7 @@ int ha_create_table(THD *thd, const char *path,
> > >                          !create_info->tmp_table();
> > >
> > >      share.frm_image= frm;
> > > +    share.orig_table_name= table_name;
> >
> > why? if orig_table_name is NULL, error_table_name() will use table_name,
> > so there's never need to make orig_table_name==table_name.
> >
> > and I don't understand all your other manipulations with
> > orig_table_name. Could you please explain that?
>
> It affects ALTER TABLE error messages. table_name will contain temporary name,
> and error_table_name() will output "(temporary)", which is rather inconvenient.
> AFAICS, orig_table_name purpose is exactly for fixing that, but some
> corner cases were not covered to this moment.

I don't understand that. You've made a lot of changes in many places
passing orig table name around, it's difficult to see what corner cases
you were trying to fix.

Could you please fix it in a separate commit? With tests and an
explanation in a commit comment, describing what exactly corner cases
were not covered.

TABLE_SHARE::orig_table_name has been removed in some later 10.3 code. So it's not relevant anymore. I've made the workaround another way, and have put it in separate commit, with test changes. Looks much more compact now, but I was afraid for side effects with such approach. Although --suite=main passes well.

--
Yours truly,
Nikita Malyavin