Справочное руководство по MySQL версии 4.1.1-alpha


         

понадобится также определить следующую функцию


Возможно, понадобится также определить следующую функцию объекта:
void Item_func_newname::fix_length_and_dec()
Эта функция должна как минимум вычислять max_length на основе переданных аргументов. max_length является максимальным количеством символов, которое может возвращать функция. Эта функция также должна устанавливать maybe_null = 0, если невозможно, чтобы главная функция возвратила значение NULL. Узнать, может ли какой-либо аргумент функции возвращать NULL, функция может путем проверки поля/переменной maybe_null аргумента. В качестве типичного примера того, как это делается, можно рассмотреть Item_func_mod::fix_length_and_dec.
Все функции должны поддерживать многопоточность (другими словами, непозволительно использовать какие-либо глобальные или статические переменные в функции без их защиты примитивами взаимного исключения).
Если желательно возвращать NULL, из ::val(), ::val_int() или ::str(), то необходимо устанавливать null_value в 1 и возвращать 0.
Для функции объекта ::str() существуют следующие дополнительные аспекты:


  • Аргумент String *str обеспечивает строковый буфер, который может быть использован для размещения результата (дополнительную информацию о типе String можно найти в файле `sql_string.h').

  • Функция ::str() должна возвращать строку, содержащую результат, или (char*) 0, если результат NULL.

  • На сегодняшний день при написании всех строковых функций принято избегать какого бы то ни было распределения памяти, за исключением случаев, когда это абсолютно необходимо!

    Содержание  Назад  Вперед