From 7ca5c37f484edebd169e4136331500d4b5c31cbe Mon Sep 17 00:00:00 2001 From: Sean Griffin Date: Fri, 21 Jul 2017 09:23:24 -0400 Subject: Ensure `ToSql` collector returns a UTF-8 string Switching from `''.dup` to `String.new` had the side effect of changing the encoding on Ruby 2.4 and later. Oddly, `String.new(encoding: Encoding::UTF_8)` is significantly slower than `''.dup`. This seems like a bug in Ruby, but not something we're going to address right now. A test has been added to ensure this regression doesn't occur again. --- test/collectors/test_sql_string.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'test/collectors/test_sql_string.rb') diff --git a/test/collectors/test_sql_string.rb b/test/collectors/test_sql_string.rb index 8651296ff8..debec8e9c9 100644 --- a/test/collectors/test_sql_string.rb +++ b/test/collectors/test_sql_string.rb @@ -33,6 +33,14 @@ module Arel sql = collector.compile ["hello", "world"] assert_equal 'SELECT FROM "users" WHERE "users"."age" = ? AND "users"."name" = ?', sql end + + def test_returned_sql_uses_utf8_encoding + bv = Nodes::BindParam.new(nil) + collector = collect ast_with_binds bv + + sql = collector.compile ["hello", "world"] + assert_equal sql.encoding, Encoding::UTF_8 + end end end end -- cgit v1.2.3