EMQX 6.2 における非互換変更点
6.2.1
- #17157 新しいルールエンジン設定
rule_engine.limit_selects_in_namespaceを導入しました。デフォルト値はtrueです。有効にすると、ルールは同じネームスペース内のクライアントがパブリッシュしたメッセージにのみトリガーされます。
6.2.0
#16589 ルールエンジンのランタイムで使用される jq 言語をバージョン1.6.1から1.8.1にアップグレードしました。これによりいくつかの微妙な非互換性が生じています。通常のデプロイメントには影響しにくいですが、完全性のために以下に記載します。
空文字列を jq プログラムとして指定することはエラーとみなされます:代わりに
"."を使用してください。(jq#2790)文字列関数はコードポイントインデックスを使用するようになりました:
indices/1、index/1、rindex/1はバイトインデックスではなくコードポイントインデックスを使用します。バイトインデックスが必要な場合はutf8bytelength/0を使用してください。(jq#3065)tonumber/0は前後の空白を含む数値を拒否します:tonumber/0を呼び出す前にtrim/0で前後の空白を除去してください。(jq#3055, jq#3195)last(empty)の挙動が変更されました:last(empty)は出力値を返さず、first(empty)と一貫した動作になります。(jq#3179)limit/2は負のカウントでエラーを返すようになりました:以前は無視されていました。(jq#3181)Tclスタイルの複数行コメントがサポートされました:既存コードのパースに微妙な影響を与える可能性があります。(jq#2989)
10進数の変換方法が変更されました:10進数は decimal64 ではなく binary64(double)に変換されるようになり、jq の動作が JSON 仕様や他の言語により近くなりました。(jq#2949)
nth/2は範囲外のインデックスで空を出力し、エラーを返さなくなりました。(jq#2674)文字列の乗算で 0 または 1 未満の場合は空文字列を返すようになりました:以前は元の文字列を返していました。(jq#2142)