Skip to content

Commit 8fc0587

Browse files
committed
use a recursive lambda for finding a table object from a select statement.
1 parent 894a3fc commit 8fc0587

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

lib/arel/visitors/sqlserver.rb

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -203,20 +203,17 @@ def table_from_select_statement(o)
203203
# elsif Arel::Nodes::JoinSource === core.source
204204
# Arel::Nodes::SqlLiteral === core.source.left ? Arel::Table.new(core.source.left, @engine) : core.source.left
205205
# end
206-
if Arel::Table === core.froms
207-
core.froms
208-
elsif Arel::Nodes::SqlLiteral === core.froms
209-
Arel::Table.new(core.froms, @engine)
210-
elsif Arel::Nodes::Join === core.froms
211-
case x = core.froms.left
206+
table_finder = lambda { |x|
207+
case x
212208
when Arel::Table
213209
x
214210
when Arel::Nodes::SqlLiteral
215211
Arel::Table.new(x, @engine)
216-
when Arel::Nodes::OuterJoin
217-
x.left
212+
when Arel::Nodes::Join
213+
table_finder.call(x.left)
218214
end
219-
end
215+
}
216+
table_finder.call(core.froms)
220217
end
221218

222219
def single_distinct_select_statement?(o)

0 commit comments

Comments
 (0)