XML-функции в MySQL 5.1

В MySQL 5.1 появилась пара функций для работы с XML-данными:

  • ExtractValue – оценка XPath-выражения для XML-документа, хранящегося в традиционном текстовом поле;

  • UpdateXML – обновление части документа.

Подробнее об этом можно прочитать в официальной документации.

Возникает ряд закономерных вопросов. Во-первых, зачем торопиться с реализацией операции обновления. Есть подозрение, что реализация эта в некотором роде фиктивна – наверняка, при обновлении документа на физическом уровне происходит перезапись всего поля (а скорее, всего кортежа). Повторюсь, это всего лишь подозрение :-) Если я ошибаюсь, значит реализована задача частичного обновления XML-документов. Не такая уж простая, надо сказать, задача. Как правило, когда доходит до её решения, СУБД уже обрастает богатыми возможностями для работы с XML-данными, чего о MySQL на данный момент не скажешь.
Во-вторых, лично меня удивляет тот факт, что выбран именно такой синтаксис и что не решены предварительно задачи а) более простые (SQL/XML publishing functions, 14-я часть стандартов SQL:200n) и б) более фундаментальные (проверка на well-formedness, кодировки, согласование типов).

Реализация XPath у них, видимо, своя. Хотя, почему бы не использовать libxml2? :-) По крайней мере, то, что есть сейчас, так или иначе напоминает некоторое “прощупывание” почвы, пробу пера. Возможностей libxml2 для этого было бы более чем достаточно.

Update. Наткнулся на прошлогоднюю презентацию (к сожалению, только в гугловом кэше). Простенькие примеры XPath-запросов, ничего особенного. “Гениальная” идея ускорения оценки XPath-выражений на большом количестве документов – воспользоваться полнотекстовым индексом :-) Поле-то, где хранится XML-документ, текстовое, почему бы и нет, просто дополнительный фильтр, сужающий выборку.

Ну что ж, пожелаем, творцам TheirSQL дальнейших творческих успехов :-)