Ошибка типа MariaDB при установке переменной сеанса

Почему следующие запросы работают на Maria DB (10.1.9)...

  • SET SESSION wait_timeout = 28000;
  • SET SESSION wait_timeout = @@wait_timeout;
  • SELECT GREATEST(28000, @@wait_timeout);

... но это не так?

  • SET SESSION wait_timeout = GREATEST(28000, @@wait_timeout)

Выдает ошибку типа:

#1232 - Incorrect argument type to variable 'wait_timeout`

Хотя эту ошибку можно устранить, заменив @wait_timeout с CAST(@@wait_timeout AS INT) или же CONVERT(@@wait_timeout, SIGNED) (последний работает и на MySQL) к запросу интересно, почему второй и третий запросы работают.

Что тут происходит? Это не может быть операция GREATEST, потому что запрос 3 работает, и это не может быть тип переменной переменной, потому что (неявное) преобразование не выполнится в запросе 2 (в любом случае он должен иметь тот же тип). То же самое происходит и с другими системными переменными.

Кстати: тот же запрос работает под MySQL (пробовал в SQLfiddle с MySQL версии 5.6), так что это несоответствие между MariaDB и MySQL.

Любая помощь приветствуется!

1 ответ

Решение

Как некоторые догадались правильно: это ошибка (теперь подтвержденная), которая была недавно введена.

Для получения более подробной информации посмотрите на трекер проблем mariadb: https://jira.mariadb.org/browse/MDEV-9516

Обновление (2016-03-21)

Что касается bugtracker, то проблема, похоже, исправлена ​​в 10.1.13.

Другие вопросы по тегам