Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-10142 PL/SQL parser
  3. MDEV-13533

Remove the THD parameter from sp_head::init_sp_name()

    Details

    • Type: Technical task
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 10.3.1
    • Component/s: Stored routines
    • Labels:
      None
    • Sprint:
      10.2.2-3, 10.2.2-1, 10.2.2-2, 10.2.2-4, 10.1.18

      Description

      sp_head has its own member MEM_ROOT main_mem_root.
      The caller of sp_head::init_sp_name() currently makes sure to set THD::mem_root to &sphead::main_mem_root, by calling sphead::reset_thd_mem_root(THD*). So the name is effectively created on main_mem_root anyway.

      There is no a need to pass a pointer to THD to init_sp_name(). It's much safer to create the name by allocating memory directly on sp_head::main_mem_root, instead of using its alias THD::mem_root.

      Under terms of this task we'll do the following:

      • Change:

        void init_sp_name(THD *thd, const sp_name *spname);
        

        to

        void init_sp_name(const sp_name *spname);
        

      • Change:

        bool Database_qualified_name::make_qname(THD *thd, LEX_CSTRING *dst) const;
        

        to

        bool make_qname(MEM_ROOT *mem_root, LEX_CSTRING *dst) const;
        

      After this change, the code will be more flexible, as it will be possible to call init_sp_name() without prior call for sp->reset_thd_mem_root(thd).

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                bar Alexander Barkov
                Reporter:
                bar Alexander Barkov
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: