Spec-Zone .ru
спецификации, руководства, описания, API

17.6.3. Разделение Ограничений, Касающихся Функций

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

Только функции MySQL, показанные в следующей таблице, поддерживаются в разделении выражений.

ABS() CEILING() (см. CEILING() и FLOOR()) DAY()
DAYOFMONTH() DAYOFWEEK() DAYOFYEAR()
DATEDIFF() EXTRACT() (см. EXTRACT() функция с WEEK спецификатор) FLOOR() (см. CEILING() и FLOOR())
HOUR() MICROSECOND() MINUTE()
MOD() MONTH() QUARTER()
SECOND() TIME_TO_SEC() TO_DAYS()
TO_SECONDS() UNIX_TIMESTAMP()TIMESTAMP столбцы) WEEKDAY()
YEAR() YEARWEEK()

В MySQL 5.7 сокращение раздела поддерживается для TO_DAYS(), TO_SECONDS(), YEAR(), и UNIX_TIMESTAMP() функции. См. Раздел 17.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)

См. Раздел 12.6.2, "Математические Функции", для получения дополнительной информации о типах возврата этих функций, так же как Разделе 11.2, "Числовые Типы".