File tree 3 files changed +18
-0
lines changed
lib/active_record/connection_adapters/sqlserver
3 files changed +18
-0
lines changed Original file line number Diff line number Diff line change 4
4
5
5
- [ #1006 ] ( https://.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1006 ) Fix support for index types
6
6
7
+ #### Changed
8
+
9
+ - [ #1014 ] ( https://.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1014 ) Better handle SQL queries with invalid encoding
10
+
7
11
## v6.1.2.1
8
12
9
13
[ Full changelog] ( https://.com/rails-sqlserver/activerecord-sqlserver-adapter/compare/v6.1.2.0...v6.1.2.1 )
Original file line number Diff line number Diff line change @@ -9,6 +9,8 @@ module DatabaseStatements
9
9
10
10
def write_query? ( sql ) # :nodoc:
11
11
!READ_QUERY . match? ( sql )
12
+ rescue ArgumentError # Invalid encoding
13
+ !READ_QUERY . match? ( sql . b )
12
14
end
13
15
14
16
def execute ( sql , name = nil )
Original file line number Diff line number Diff line change @@ -92,6 +92,18 @@ def test_errors_when_an_insert_query_prefixed_by_a_double_dash_comment_is_called
92
92
Subscriber . send ( :load_schema! )
93
93
original_test_errors_when_an_insert_query_prefixed_by_a_double_dash_comment_is_called_while_preventing_writes
94
94
end
95
+
96
+ coerce_tests! :test_doesnt_error_when_a_select_query_has_encoding_errors
97
+ def test_doesnt_error_when_a_select_query_has_encoding_errors_coerced
98
+ ActiveRecord ::Base . while_preventing_writes do
99
+ # TinyTDS fail on encoding errors.
100
+ # But at least we can assert it fails in the client and not before when trying to
101
+ # match the query.
102
+ assert_raises ActiveRecord ::StatementInvalid do
103
+ @connection . select_all ( "SELECT '\xC8 '" )
104
+ end
105
+ end
106
+ end
95
107
end
96
108
end
97
109
You can’t perform that action at this time.
0 commit comments