Добавление новой процедуры в MySQL
В MySQL, можно определить процедуру на C++, которая обращается к данным в запросе и изменяет их до того, как они будут посланы клиенту. Изменение может быть выполнено на построчном уровне, либо на уровне GROUP BY.
Чтобы продемонстрировать то, как это можно сделать, мы создали пример процедуры в версии MySQL 3.23.
Дополнительно мы рекомендуем обратить внимание mylua. Располагая mylua, можно использовать язык LUA для загрузки процедуры в mysqld во время выполнения.
Процедура Analyse
analyse([max elements,[max memory]])
Эта процедура определена в 'sql/sql_analyse.cc'. Она исследует результат запроса и возвращает анализ результатов:
max elements (по умолчанию 256) - максимальное число различных значений, которые analyse будет распознавать в столбце. Аргумент используется analyse для проверки того, является ли тип ENUM оптимальным типом столбца.
max memory (по умолчанию 8192) - максимальное количество памяти, которую должна выделять analyse для столбца в процессе поиска всех различных значений.
SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max elements,[max memory]])
Написание процедуры
На данный момент единственной документацией по этой теме является исходный код.
Всю информацию о процедурах можно найти, изучив следующие файлы:
'sql/sql_analyse.cc'
'sql/procedure.h'
'sql/procedure.cc'
'sql/sql_select.cc'
1 2 3
8 8 8
| |