26.6.3 Ограничения разбиения по функциям
В этом разделе рассматриваются ограничения разбиения MySQL, относящиеся конкретно к функциям, используемым в выражениях разбиения.
В выражениях разбиения разрешены только функции MySQL, показанные в следующем списке:
CEILING()(см. CEILING() и FLOOR())FLOOR()(см. CEILING() и FLOOR())UNIX_TIMESTAMP()(с колонками типаTIMESTAMP)
В MySQL 9.2 оптимизация разбиения поддерживается для функций TO_DAYS(), TO_SECONDS(), YEAR() и UNIX_TIMESTAMP(). Дополнительную информацию см. в Разделе 26.4, «Оптимизация разбиения».
CEILING() и FLOOR(). Каждая из этих функций возвращает целое число только если ей передан аргумент точного числового типа, например, одного из типов INT или DECIMAL. Это означает, что, например, следующее утверждение CREATE
TABLE завершается с ошибкой, как показано ниже:
mysql> CREATE TABLE t (c FLOAT) PARTITION BY LIST( FLOOR(c) )(
-> PARTITION p0 VALUES IN (1,3,5),
-> PARTITION p1 VALUES IN (2,4,6)
-> );
ERROR 1490 (HY000): The PARTITION function returns the wrong type
Функция EXTRACT() со спецификатором WEEK. Значение, возвращаемое функцией EXTRACT(), когда она используется как EXTRACT(WEEK FROM
, зависит от значения системной переменной col)default_week_format. По этой причине функция EXTRACT() не разрешена как функция разбиения, когда она указывает единицу как WEEK. (Ошибка #54483)
Дополнительную информацию о типах возвращаемых значений этих функций, а также о Разделе 14.6.2, «Математические функции» и Разделе 13.1, «Числовые типы данных».
© 2025 Oracle
Licensed under the GPLv2 License.