次のクエリが 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)
or CONVERT(@@wait_timeout, SIGNED)
(後者は MySQL でも機能します) に置き換えることで解決できますが、なぜ 2 番目と 3 番目のクエリが機能するのか疑問に思います。
何が起きてる?クエリ 3 が機能するため、GREATEST操作にすることはできず、クエリ 2 で (暗黙の) 変換が失敗するため、異なる変数型にすることはできません (とにかく同じ型を持つ必要があります)。他のシステム変数でも同じことが起こります。
ところで、同じクエリが MySQL で動作するため (MySQL バージョン 5.6 の SQLfiddle で試してみました)、これは MariaDB と MySQL の間の矛盾です。
どんな助けでも大歓迎です!