Как составить полный список «слов» MySQL

#mysql #syntax

#mysql #синтаксис

Вопрос:

По-настоящему вхожу в MySQL, и одна мысль, которая у меня возникла при освоении одного из его аспектов, заключается в том, чтобы собрать полный список слов MySQL. Одним из примеров этого может быть список зарезервированных слов, хотя, похоже, это не полный список; пример: CONCAT, CRC32 и т.д.

Каким бы странным это ни казалось, я думал, что такой список может существовать, или что даже может существовать запрос, который выдаст его, и / или способ извлечь его из исходного кода MySQL.

Комментарии:

1. Ну, зависит от вашего определения «зарезервированных слов». технически говоря, CONCAT и CRC32 являются функциями . Затем, поверх этого, находятся типы данных .

2. @Брэд Кристи: Мое определение слова MySQL — это любая строка букв, которая введена с помощью команды MySQL или системной команды (при правильном контексте), будет иметь значение для MySQL. Ссылка на «зарезервированные слова» была именно такой, ссылка на то, что это пример простого списка слов, которые имеют значение для MySQL; это неполный список, и я ищу полный список. Очевидно, я знаком с онлайн-руководством, но это не то, что я ищу. Я ищу список слов MySQL в одном месте. Спасибо за комментарий! Если у вас есть какие-либо дополнительные вопросы, просто дайте мне знать.

3. Я уверен, что в нормальной системе баз данных для этого была бы команда. В MySQL не так уж и много 🙂

4. @mikl: Я согласен… 🙂 … хотя я не знаю ни одной системы, в которой есть команда, которая выводит контекстно-свободный список строк, которые в контексте она распознала бы. Знаете ли вы о каких-либо?

5. Ну, в оболочке PostgreSQL вы можете получить доступ к спискам с помощью таких команд, как dT для типов данных, do для операторов и т.д. Все пользовательские объекты могут быть перечислены и объединены с известным списком встроенных модулей, я думаю, что должно быть достаточно просто собрать что-то вместе. Не то, чтобы это хоть немного помогло с MySQL 🙂

Ответ №1:

Это ненаучный метод, но то, что я бы сделал, это:

  • извлеките все строки из Native_func_registry func_array. Найдите его в sql/item_create.cc , например, в

http://bazaar.launchpad.net /~mysql/mysql-server/mysql-trunk/view/head:/sql/item_create.cc

Они должны охватывать встроенные функции.

  • извлекать строки из «символов» и «функций» в lexer :

http://bazaar.launchpad.net /~mysql/mysql-server/mysql-trunk/view/head:/sql/lex.h

за исключением случаев, когда токены имеют суффикс _SYM (они покрываются sql /lex.h)

Объедините все это, и результирующий набор может приблизиться 🙂

Комментарии:

1. vaintroub: Супер, спасибо — плюс, наконец, повод взглянуть на исходный код… 🙂 … приветствия!!