Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-16414

Add type_handler_xpath_nodeset and remove XPATH_NODESET

    Details

      Description

      In item_xmlfunc.cc there is a number of tests like:

        if (item->type() == Item::XPATH_NODESET)
      

      We'll modify this code in a more Type_handler-ish style, as follows:

      • Remove XPATH_NODESET from the enum Item::Type.
      • Add a new type handler declaration in item_xmlfunc.cc:

        static Type_handler_long_blob type_handler_xpath_nodeset;
        

      • Overload Item_nodeset_func::type_handler() and Item_nodeset_func::fixed_type_handler() to return &type_handler_xpath_nodeset.
      • Change all tests for XPATH_NODESET to a test like this:

         if (item->fixed_type_handler() == &type_handler_xpath_nodeset)
        

      Additionally, we'll do the following cleanups:

      • Rename the method Item::val_nodeset() to a more generic Item::val_raw(). It will be later used by other non-traditional data types.
      • Remove XPATH_NODESET_CMP, as it's not used.

        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: