Hi Sergei! On Wed, Dec 4, 2019 at 10:10 PM Sergei Golubchik <s...@mariadb.org> wrote:
> ... > > + Lex_cstring *strdup_root(MEM_ROOT &mem_root) > > The way you use it, it looks like you really need a constructor, not > a strdup. > On second thought, it can't be a constructor because it can fail with allocation error. But it's better to be from the other side: bool Lex_cstring::strdup(MEM_ROOT *mem_root, const Lex_cstring &src) { // allocate and deep-copy from src to this } I'd really like to use such utility methods instead of C variants like thd_make_lex_string(). For plugins we can have strdup() method accepting THD * and compiled inside server (non-inline): bool Lex_cstring::strdup(THD *thd, const Lex_cstring &src) { strdup(thd->mem_root, src); } We better go away from this C service layer of thd_*() functions between server and plugins and use class methods instead. We can't use THD directly though, because we don't want it compiled in plugins. So we compile non-inline methods in server that are used in plugin. -- All the best, Aleksey Midenkov @midenok
_______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp