@@ -235,6 +235,72 @@ def test_doesnt_error_when_a_select_query_is_called_while_preventing_writes
235235 end
236236 end
237237
238+ def test_doesnt_error_when_a_select_query_starting_with_a_slash_star_comment_is_called_while_preventing_writes
239+ @connection . insert ( "INSERT INTO subscribers(nick) VALUES ('138853948594')" )
240+
241+ @connection_handler . while_preventing_writes do
242+ result = @connection . select_all ( "/* some comment */ SELECT subscribers.* FROM subscribers WHERE nick = '138853948594'" )
243+ assert_equal 1 , result . length
244+ end
245+ end
246+
247+ def test_errors_when_an_insert_query_prefixed_by_a_slash_star_comment_is_called_while_preventing_writes
248+ @connection_handler . while_preventing_writes do
249+ @connection . transaction do
250+ assert_no_queries do
251+ assert_raises ( ActiveRecord ::ReadOnlyError ) do
252+ @connection . insert ( "/* some comment */ INSERT INTO subscribers(nick) VALUES ('138853948594')" , nil , false )
253+ end
254+ end
255+ end
256+ end
257+ end
258+
259+ def test_doesnt_error_when_a_select_query_starting_with_double_dash_comments_is_called_while_preventing_writes
260+ @connection . insert ( "INSERT INTO subscribers(nick) VALUES ('138853948594')" )
261+
262+ @connection_handler . while_preventing_writes do
263+ result = @connection . select_all ( "-- some comment\n -- comment about INSERT\n SELECT subscribers.* FROM subscribers WHERE nick = '138853948594'" )
264+ assert_equal 1 , result . length
265+ end
266+ end
267+
268+ def test_errors_when_an_insert_query_prefixed_by_a_double_dash_comment_is_called_while_preventing_writes
269+ @connection_handler . while_preventing_writes do
270+ @connection . transaction do
271+ assert_no_queries do
272+ assert_raises ( ActiveRecord ::ReadOnlyError ) do
273+ @connection . insert ( "-- some comment\n INSERT INTO subscribers(nick) VALUES ('138853948594')" , nil , false )
274+ end
275+ end
276+ end
277+ end
278+ end
279+
280+ def test_errors_when_an_insert_query_prefixed_by_a_slash_star_comment_containing_read_command_is_called_while_preventing_writes
281+ @connection_handler . while_preventing_writes do
282+ @connection . transaction do
283+ assert_no_queries do
284+ assert_raises ( ActiveRecord ::ReadOnlyError ) do
285+ @connection . insert ( "/* SELECT */ INSERT INTO subscribers(nick) VALUES ('138853948594')" , nil , false )
286+ end
287+ end
288+ end
289+ end
290+ end
291+
292+ def test_errors_when_an_insert_query_prefixed_by_a_double_dash_comment_containing_read_command_is_called_while_preventing_writes
293+ @connection_handler . while_preventing_writes do
294+ @connection . transaction do
295+ assert_no_queries do
296+ assert_raises ( ActiveRecord ::ReadOnlyError ) do
297+ @connection . insert ( "-- SELECT\n INSERT INTO subscribers(nick) VALUES ('138853948594')" , nil , false )
298+ end
299+ end
300+ end
301+ end
302+ end
303+
238304 if ActiveRecord ::Base . connection . supports_common_table_expressions?
239305 def test_doesnt_error_when_a_read_query_with_a_cte_is_called_while_preventing_writes
240306 @connection . insert ( "INSERT INTO subscribers(nick) VALUES ('138853948594')" )
0 commit comments