File tree Expand file tree Collapse file tree 3 files changed +15
-0
lines changed
lib/active_record/connection_adapters/sqlserver Expand file tree Collapse file tree 3 files changed +15
-0
lines changed Original file line number Diff line number Diff line change 77#### Changed
88
99- [ #983 ] ( https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/983 ) Optimize remove_columns to use a single SQL statement
10+ - [ #984 ] ( https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/984 ) Better handle SQL queries with invalid encoding
1011
1112#### Added
1213
Original file line number Diff line number Diff line change @@ -9,6 +9,8 @@ module DatabaseStatements
99
1010 def write_query? ( sql ) # :nodoc:
1111 !READ_QUERY . match? ( sql )
12+ rescue ArgumentError # Invalid encoding
13+ !READ_QUERY . match? ( sql . b )
1214 end
1315
1416 def execute ( sql , name = nil )
Original file line number Diff line number Diff line change @@ -91,6 +91,18 @@ def test_errors_when_an_insert_query_prefixed_by_a_double_dash_comment_is_called
9191 Subscriber . send ( :load_schema! )
9292 original_test_errors_when_an_insert_query_prefixed_by_a_double_dash_comment_is_called_while_preventing_writes
9393 end
94+
95+ coerce_tests! :test_doesnt_error_when_a_select_query_has_encoding_errors
96+ def test_doesnt_error_when_a_select_query_has_encoding_errors_coerced
97+ ActiveRecord ::Base . while_preventing_writes do
98+ # TinyTDS fail on encoding errors.
99+ # But at least we can assert it fails in the client and not before when trying to
100+ # match the query.
101+ assert_raises ActiveRecord ::StatementInvalid do
102+ @connection . select_all ( "SELECT '\xC8 '" )
103+ end
104+ end
105+ end
94106 end
95107end
96108
You can’t perform that action at this time.
0 commit comments