Skip to content

Commit cabad3d

Browse files
committed
Method for correlating joins is fixed for 2.0.7
1 parent 8fc0587 commit cabad3d

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

lib/arel/visitors/sqlserver.rb

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -262,15 +262,23 @@ def find_and_fix_uncorrelated_joins_in_select_statement(o)
262262
# return if !join_in_select_statement?(o) || core.source.right.size != 2
263263
# j1 = core.source.right.first
264264
# j2 = core.source.right.second
265-
return
266-
267-
return unless Arel::Nodes::OuterJoin === j1 && Arel::Nodes::StringJoin === j2
268-
j1_tn = j1.left.name
269-
j2_tn = j2.left.match(/JOIN \[(.*)\].*ON/).try(:[],1)
265+
# return unless Arel::Nodes::OuterJoin === j1 && Arel::Nodes::StringJoin === j2
266+
# j1_tn = j1.left.name
267+
# j2_tn = j2.left.match(/JOIN \[(.*)\].*ON/).try(:[],1)
268+
# return unless j1_tn == j2_tn
269+
# crltd_tn = "#{j1_tn}_crltd"
270+
# j1.left.table_alias = crltd_tn
271+
# j1.right.expr.left.relation.table_alias = crltd_tn
272+
return if !join_in_select_statement?(o) || !(Arel::Nodes::StringJoin === core.froms)
273+
j1 = core.froms.left
274+
j2 = core.froms.right
275+
return unless Arel::Nodes::OuterJoin === j1 && Arel::Nodes::SqlLiteral === j2 && j2.include?('JOIN ')
276+
j1_tn = j1.right.name
277+
j2_tn = j2.match(/JOIN \[(.*)\].*ON/).try(:[],1)
270278
return unless j1_tn == j2_tn
271-
crltd_tn = "#{j1_tn}_crltd"
272-
j1.left.table_alias = crltd_tn
273-
j1.right.expr.left.relation.table_alias = crltd_tn
279+
on_index = j2.index(' ON ')
280+
j2.insert on_index, " AS [#{j2_tn}_crltd]"
281+
j2.sub! "[#{j2_tn}].", "[#{j2_tn}_crltd]."
274282
end
275283

276284
def rowtable_projections(o)

test/cases/scratch_test_sqlserver.rb

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22

33
class ScratchTestSqlserver < ActiveRecord::TestCase
44

5-
# fixtures
6-
75
should 'pass' do
8-
6+
assert true
97
end
10-
11-
8+
129

1310
end
1411

0 commit comments

Comments
 (0)