Spec-Zone.ru › MySQL 9.2

1.4 Что нового в MySQL 9.2

В этом разделе описывается, что было добавлено, устарело, изменено и удалено в MySQL 9.2 с момента MySQL 9.1. В связанном разделе перечислены параметры и переменные сервера MySQL, которые были добавлены, устарели или удалены в MySQL 9.2; см. Раздел 1.5, «Параметры и переменные сервера и состояния, добавленные, устаревшие или удаленные в MySQL 9.2».

  • Функции, добавленные или измененные в MySQL 9.2

  • Функции, устаревшие в MySQL 9.2

  • Функции, удаленные в MySQL 9.2

Функции, добавленные или изменённые в MySQL 9.2

Следующие функции были добавлены в MySQL 9.2:

  • Привилегия CREATE_SPATIAL_REFERENCE_SYSTEM. MySQL 9.2.0 вводит привилегию CREATE_SPATIAL_REFERENCE_SYSTEM, которая позволяет пользователю выполнять любые из следующих операторов:

    • CREATE SPATIAL REFERENCE SYSTEM

    • CREATE OR REPLACE SPATIAL REFERENCE SYSTEM

    • DROP SPATIAL REFERENCE SYSTEM

    Попытка выполнить любой из перечисленных операторов без этой привилегии (или привилегии SUPER) теперь вызывает ошибку. Использование привилегии SUPER для этой цели следует считать устаревшим.

    Дополнительную информацию см. в разделе 8.2.2, «Привилегии, предоставляемые MySQL».

  • Библиотеки JavaScript. Компонент MLE (см. раздел 7.5.8, «Компонент многоязычного движка (MLE)») теперь поддерживает многократно используемые библиотеки JavaScript, содержащие функции, которые могут быть вызваны из других хранимых JavaScript-программ. Такие функции должны быть помечены как импортируемые с помощью ключевого слова export. Библиотеки можно управлять с помощью SQL-операторов CREATE LIBRARY и DROP LIBRARY, добавленных в MySQL 9.2.0; они могут быть включены в другие хранимые JavaScript-программы с клаузой USING, добавленной в том же выпуске в CREATE FUNCTION и CREATE PROCEDURE; USING поддерживает список одного или нескольких имён библиотек.

    Оператор CREATE LIBRARY создает новую библиотеку JavaScript в указанной базе данных, используя код одной или нескольких JavaScript-функций. Код JavaScript анализируется и проверяется на соответствие при создании; CREATE LIBRARY отклоняется, если код содержит ошибки. DROP LIBRARY удаляет заданную библиотеку JavaScript. К функциям библиотек можно обращаться в других хранимых JavaScript-программах, используя обозначение library_name.function_name. Библиотеки могут быть алиасированы как часть клаузы USING с CREATE FUNCTION или CREATE PROCEDURE.

    Вы можете получить код, содержащийся в существующей библиотеке JavaScript, используя оператор SHOW CREATE LIBRARY, также реализованный в MySQL 9.2.0. Дополнительную информацию о JavaScript-библиотеках можно получить из двух таблиц Information Schema, добавленных в MySQL 9.2.0: таблица LIBRARIES содержит информацию о JavaScript-библиотеках; таблица ROUTINE_LIBRARIES содержит информацию о хранимых процедурах, использующих JavaScript-библиотеки.

    Количество операторов CREATE LIBRARY, DROP LIBRARY и SHOW CREATE LIBRARY, которые были выполнены на сервере, можно получить как переменные состояния Com_create_library, Com_drop_library и Com_show_create_library соответственно.

    Дополнительную информацию см. в разделе 27.3.8, «Использование JavaScript-библиотек».

  • API хранимых SQL-процедур и переменных сеанса для JavaScript. Компонент MLE в MySQL 9.2.0 и более поздних версиях поддерживает доступ из JavaScript-процедур к пользовательским функциям, процедурам и переменным.

    Теперь к хранимым функциям и процедурам MySQL можно получить доступ, используя методы Schema getFunction() и getProcedure(). Каждая из этих функций возвращает объект Function, который можно вызвать с аргументами. Аргумент хранимой функции или параметр IN хранимой процедуры можно передать непосредственно; параметр OUT или INOUT хранимой процедуры требует создания заполнителя (объекта Argument) с помощью mysql.arg().

    Кроме того, к переменным пользователей MySQL теперь можно получить прямой доступ как к свойствам глобального объекта JavaScript Session. Дополнительную информацию и примеры см. в Доступ к переменным сеанса из JavaScript.

    В выпуске 9.2.0 также добавлена поддержка прямого доступа к нескольким встроенным функциям MySQL, перечисленным здесь:

    • rand(): Эквивалентно MySQL RAND()

    • sleep(): Эквивалентно MySQL SLEEP()

    • uuid(): Эквивалентно MySQL UUID()

    • isUUID(): Эквивалентно MySQL IS_UUID()

    Все эти функции могут быть вызваны как методы глобального объекта Mysql.

    Дополнительную информацию см. в разделе 27.3.6.8, «API хранимых процедур», разделе 27.3.6.10, «Функции MySQL», а также разделе 7.5.8, «Компонент многоязычного движка (MLE)».

  • JavaScript API транзакций. Начиная с MySQL 9.2.0, компонент MLE предоставляет JavaScript API транзакций MySQL, который выполняет действия большинства SQL-операторов MySQL, таких как START TRANSACTION, COMMIT, ROLLBACK и SET AUTOCOMMIT. Также включена поддержка точек сохранения.

    Эта работа также реализует объект SqlError.

    Дополнительную информацию см. в разделе 27.3.6.9, «JavaScript API транзакций», а также разделе 27.3.6.11, «Объект SqlError».

  • Поддержка JavaScript ENUM и SET. Типы MySQL ENUM и SET поддерживаются для аргументов хранимых JavaScript-процедур в MySQL 9.2.0 и более поздних версиях.

    Более подробную информацию, включая правила преобразования между этими типами MySQL и типами JavaScript, см. в Преобразовании в и из MySQL ENUM и SET.

  • Информация о версии EXPLAIN FORMAT=JSON. MySQL 9.2.0 добавляет информацию о версии формата в вывод оператора EXPLAIN FORMAT=JSON, когда версия формата JSON установлена в 2.

    Для установки версии формата используйте оператор SET explain_json_format_version=2 или аналогичный. Затем вы можете увидеть информацию о версии в выводе, как показано здесь:

    mysql> EXPLAIN FORMAT=JSON SELECT 1\G
    *************************** 1. row ***************************
    EXPLAIN: {
      "query": "/* select#1 */ select 1 AS `1`",
      "query_plan": {
        "operation": "Rows fetched before execution",
        "access_type": "rows_fetched_before_execution",
        "estimated_rows": 1.0,
        "estimated_total_cost": 0.0,
        "estimated_first_row_cost": 0.0
      },
      "query_type": "select",
      "json_schema_version": "2.0"
    }
    1 row in set (0.00 sec)
    

    Вывод этого оператора не содержит информации о версии формата, когда explain_json_format_version имеет значение 1, как показано здесь:

    mysql> SET explain_json_format_version=1;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SELECT @@explain_json_format_version;
    +-------------------------------+
    | @@explain_json_format_version |
    +-------------------------------+
    |                             1 |
    +-------------------------------+
    1 row in set (0.00 sec)
    
    mysql> EXPLAIN FORMAT=JSON SELECT 1\G
    *************************** 1. row ***************************
    EXPLAIN: {
      "query_block": {
        "select_id": 1,
        "message": "No tables used"
      }
    }
    1 row in set, 1 warning (0.00 sec)
    

    Дополнительную информацию см. в Получение информации о плане выполнения, а также в описании системной переменной explain_json_format_version.

Функции, устаревшие в MySQL 9.2

Следующие функции устарели в MySQL 9.2 и могут быть удалены в будущих версиях. При наличии альтернатив, приложения должны быть обновлены для использования альтернатив.

Для приложений, использующих устаревшие в MySQL 9.2 функции, которые были удалены в более поздних версиях MySQL, запросы могут завершаться ошибкой при репликации из источника MySQL 9.2 на реплику, работающую на более поздней версии, или могут иметь разные эффекты на источнике и реплике. Для избежания таких проблем, приложения, использующие устаревшие в 9.2 функции, должны быть пересмотрены, чтобы избежать их использования и использовать альтернативы, когда это возможно.

  • FLUSH PRIVILEGES устарело. Запрос FLUSH PRIVILEGES устарел начиная с MySQL 9.2.0 и вызывает предупреждение при выполнении. Ожидается, что этот запрос будет удален в будущих релизах MySQL.

    Также устарели следующие конструкции в MySQL 9.2.0:

    • Права доступа FLUSH_PRIVILEGES; предоставление этих прав вызывает предупреждение.

    • Команда mysqladmin flush-privileges; выполнение этой команды вызывает предупреждение.

    • Команда mysqladmin reload; выполнение этой команды вызывает предупреждение.

    Кроме того, следующие функции не вызывают предупреждений, но следует рассматривать как устаревшие:

    • Очистка прав доступа с помощью SIGHUP

    • Очистка кэша caching_sha2 с помощью FLUSH PRIVILEGES

    • Очистка прав доступа с помощью mysqladmin refresh

    Дополнительную информацию см. в разделе 15.7.8.3, “Запрос FLUSH”.

  • Плагин Version Tokens. Плагин Version Tokens устарел начиная с MySQL 9.2.0 и может быть удален в будущих выпусках MySQL. Попытка установить плагин version_tokens или запустить сервер с установленным плагином вызывает предупреждение об устаревании. Следующие связанные функции также устарели в MySQL 9.2.0 и вызывают предупреждения об устаревании при каждом вызове:

    • Перечисленные здесь функции:

      • version_tokens_delete()

      • version_tokens_edit()

      • version_tokens_lock_exclusive()

      • version_tokens_lock_shared()

      • version_tokens_set()

      • version_tokens_show()

      • version_tokens_unlock()

    • Предоставление прав VERSION_TOKEN_ADMIN

    • Следующие системные переменные сервера:

      • version_tokens_session

      • version_tokens_session_number

Функции, удаленные в MySQL 9.2

Следующие элементы устарели и были удалены в MySQL 9.2. При наличии альтернатив, приложения должны быть обновлены для использования альтернатив.

Для приложений MySQL 9.1, использующих функции, удалённые в MySQL 9.2, запросы могут завершаться ошибкой при репликации из источника MySQL 9.1 на реплику MySQL 9.2, или могут иметь разные эффекты на источнике и реплике. Для избежания таких проблем, приложения, использующие функции, удаленные в MySQL 9.2, должны быть пересмотрены, чтобы избежать их использования и использовать альтернативы, когда это возможно.

  • Ключевое слово BINLOG теперь ограничено. Ключевое слово BINLOG теперь ограничено и больше не может быть использовано без кавычек в качестве метки в хранимой процедуре или функции MySQL. Необходимо обновить все затронутые приложения до обновления на MySQL 9.2.

    См. раздел 11.3, “Ключевые слова и зарезервированные слова” для получения дополнительной информации.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/mysql-nutshell.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API