Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел описывает различные функции, которые Вы должны определить, когда Вы создаете совокупный UDF. Раздел 22.3.2, "Добавляя Новую Определяемую пользователем Функцию", описывает порядок, в котором MySQL вызывает эти функции.
xxx_reset()
Эта функция вызывается, когда MySQL находит первую строку в новой группе. Это должно сбросить любые
внутренние сводные переменные и затем использовать данный UDF_ARGS
параметр как первое значение в Вашей внутренней сводке оценивает за группу. Объявить xxx_reset()
следующим образом:
void xxx_reset(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error);
xxx_reset()
не необходим или используется в MySQL 5.7, в котором UDF
соединяют интерфейсом с использованием xxx_clear()
вместо этого.
Однако, можно определить обоих xxx_reset()
и xxx_clear()
если Вы хотите иметь свою работу UDF с более старыми версиями сервера. (Если Вы действительно
включаете обе функции, xxx_reset()
функция во многих случаях может быть
реализована внутренне, вызывая xxx_clear()
сбрасывать все переменные, и
затем вызов xxx_add()
добавить UDF_ARGS
параметр как первое значение в группе.)
xxx_clear()
Эта функция вызывается, когда MySQL должен сбросить сводные результаты. Это вызывают вначале для
каждой новой группы, но может также быть вызвано, чтобы сбросить значения для запроса, где не было
никаких строк соответствия. Объявить xxx_clear()
следующим образом:
void xxx_clear(UDF_INIT *initid, char *is_null, char *error);
is_null
устанавливается указать на CHAR(0)
перед вызовом xxx_clear()
.
Если что-то пошло не так, как надо, можно сохранить значение в переменной к который error
точки параметра. error
точки к
однобайтовой переменной, не к строковому буферу.
xxx_clear()
требуется MySQL 5.7.
xxx_add()
Эта функция вызывается для всех строк, которые принадлежат той же самой группе. Следует использовать
это, чтобы включить значение UDF_ARGS
параметр Вашей внутренней сводной
переменной.
void xxx_add(UDF_INIT *initid, UDF_ARGS *args,char *is_null, char *error);
xxx()
функция для совокупного UDF должна быть объявлена тем же самым путем что
касается несовокупного UDF. См. Раздел 22.3.2.1,
"Вызывающие последовательности UDF для Простых Функций".
Для совокупного UDF MySQL вызывает xxx()
функция после всех строк в группе была
обработана. Никогда недопустимо обычно получать доступ к UDF_ARGS
параметр здесь,
но вместо этого возвращает значение, основанное на Ваших внутренних сводных переменных.
Обработка возвращаемого значения в xxx()
должен быть сделан тот же самый путь что
касается несовокупного UDF. См. Раздел 22.3.2.4,
"Возвращаемые значения UDF и Обработка ошибок".
xxx_reset()
и xxx_add()
функции обрабатывают их UDF_ARGS
параметр тот же самый путь как функции для несовокупного UDFs. См. Раздел
22.3.2.3, "Обработка Параметра UDF".
Параметры указателя is_null
и error
то же самое для
всех звонков xxx_reset()
, xxx_clear()
, xxx_add()
и xxx()
. Можно использовать это, чтобы
помнить, что Вы получили ошибку или ли xxx()
функция должна возвратиться NULL
. Недопустимо сохранить строку в *error
! error
точки к однобайтовой переменной, не к строковому буферу.
*is_null
сбрасывается для каждой группы (прежде, чем вызов xxx_clear()
).
*error
никогда не сбрасывается.
Если *is_null
или *error
устанавливаются когда xxx()
возвраты, возвраты MySQL NULL
как результат для
групповой функции.