@@ -58,7 +58,7 @@ def visit_Arel_Nodes_Limit o, collector
5858 def visit_Arel_Nodes_SelectStatement o , collector
5959 distinct_One_As_One_Is_So_Not_Fetch o
6060
61- @select_statement = o
61+ set_select_statement_lock o . lock
6262
6363 if o . with
6464 collector = visit o . with , collector
@@ -106,7 +106,7 @@ def visit_Arel_Nodes_SelectStatement o, collector
106106 end
107107
108108 ensure
109- @select_statement = nil
109+ set_select_statement_lock nil
110110 end
111111
112112 def visit_Arel_Nodes_JoinSource o , collector
@@ -132,8 +132,8 @@ def visit_Arel_Nodes_OuterJoin o, collector
132132 # SQLServer ToSql/Visitor (Additions)
133133
134134 def visit_Arel_Nodes_SelectStatement_SQLServer_Lock collector , options = { }
135- if select_statement_lock?
136- collector = visit @select_statement . lock , collector
135+ if lock = select_statement_lock
136+ collector = visit lock , collector
137137 collector << SPACE if options [ :space ]
138138 end
139139 collector
@@ -162,8 +162,13 @@ def visit_Make_Fetch_Happen o, collector
162162
163163 # SQLServer Helpers
164164
165- def select_statement_lock?
166- @select_statement && @select_statement . lock # AVOID INSTANCE var
165+ # attr_reader :select_statement_lock
166+ def select_statement_lock
167+ Thread . current [ :'Arel::Visitors::SQLServerNG.select_statement_lock' ]
168+ end
169+
170+ def set_select_statement_lock ( lock ) # @select_statement_lock = lock
171+ Thread . current [ :'Arel::Visitors::SQLServerNG.select_statement_lock' ] = lock
167172 end
168173
169174 def make_Fetch_Possible_And_Deterministic o
0 commit comments