Ошибка типа 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.