1

次のクエリが 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_timeoutCAST(@@wait_timeout AS INT)or CONVERT(@@wait_timeout, SIGNED)(後者は MySQL でも機能します) に置き換えることで解決できますが、なぜ 2 番目と 3 番目のクエリが機能するのか疑問に思います。

何が起きてる?クエリ 3 が機能するため、GREATEST操作にすることはできず、クエリ 2 で (暗黙の) 変換が失敗するため、異なる変数型にすることはできません (とにかく同じ型を持つ必要があります)。他のシステム変数でも同じことが起こります。

ところで、同じクエリが MySQL で動作するため (MySQL バージョン 5.6 の SQLfiddle で試してみました)、これは MariaDB と MySQL の間の矛盾です。

どんな助けでも大歓迎です!

4

1 に答える 1

1

一部の人が正しく推測しているように、これは最近導入されたバグ (現在確認済み) です。

詳細については、mariadb イシュー トラッカーをご覧ください: https://jira.mariadb.org/browse/MDEV-9516

更新 (2016-03-21)

バグトラッカーに関しては、問題は 10.1.13 で修正されたようです。

于 2016-02-08T21:43:45.010 に答える