2024/03/14分のコミットです。
CHANGELOGへの追加はありませんでした。
Memoize key_provider from key or deterministic key_provider if any
activerecord/lib/active_record/encryption/scheme.rbの修正です。
Active Record Encryptionで、keyから取得したkey_provider、及び、deterministic key_providerをメモ化するよう修正しています。元々key_providerはメモ化されていたのですが、Remove memoization to accept key_provider overridden by with_encryption_contextで、with_encryption_context値をoverride出来るようにするためメモ化しないよう変更されていました。
しかし、key_providerの作成処理はActiveSupport::KeyGenerator#generate_keyやOpenSSL::KDF.pbkdf2_hmacなどの比較的実行に時間が掛かる処理が含まれており、メモ化しないようにした対応によってテストの実行時間に影響が出ていました。そのため、可能な範囲でメモ化するよう対応を行っています。
Stablize ConnectionPoolTests#test_idle_timeout_configuration
activerecord/test/cases/connection_pool_test.rbの修正です。
ConnectionPoolTests#test_idle_timeout_configurationでtimeoutの動作確認用にインスタンス変数を変更する際の値を調整しています。テストが安定するようにする為。
Do not try to alias on key update when raw SQL is supplied
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbの修正です。
MySQL adapterのbulk insert処理で、on_duplicateオプションにraw SQLが指定された場合、key update処理でaliasの指定を行わないよう修正しています。不正なSQLが生成されてしまうのを避ける為。