Skip to content

Commit 5d50851

Browse files
aidanharanAidan Haran
andauthored
Mark transaction as written if non-read SQL performed (#897)
Co-authored-by: Aidan Haran <aharan@fusioneer.com>
1 parent 151c3ff commit 5d50851

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

lib/active_record/connection_adapters/sqlserver/database_statements.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ def execute(sql, name = nil)
1717
end
1818

1919
materialize_transactions
20+
mark_transaction_written_if_write(sql)
2021

2122
if id_insert_table_name = query_requires_identity_insert?(sql)
2223
with_identity_insert_enabled(id_insert_table_name) { do_execute(sql, name) }
@@ -31,6 +32,7 @@ def exec_query(sql, name = "SQL", binds = [], prepare: false)
3132
end
3233

3334
materialize_transactions
35+
mark_transaction_written_if_write(sql)
3436

3537
sp_executesql(sql, name, binds, prepare: prepare)
3638
end
@@ -291,6 +293,7 @@ def set_identity_insert(table_name, enable = true)
291293

292294
def do_execute(sql, name = "SQL")
293295
materialize_transactions
296+
mark_transaction_written_if_write(sql)
294297

295298
log(sql, name) { raw_connection_do(sql) }
296299
end

test/cases/execute_procedure_test_sqlserver.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,13 @@ class ExecuteProcedureTestSQLServer < ActiveRecord::TestCase
4141
date_base = connection.select_value("select GETUTCDATE()")
4242
assert_equal date_base.change(usec: 0), date_proc.change(usec: 0)
4343
end
44+
45+
it 'test deprecation with transaction return when executing procedure' do
46+
assert_deprecated do
47+
ActiveRecord::Base.transaction do
48+
connection.execute_procedure("my_getutcdate")
49+
return
50+
end
51+
end
52+
end
4453
end

0 commit comments

Comments
 (0)