aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/algebra/relations/operations/join.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arel/algebra/relations/operations/join.rb')
-rw-r--r--lib/arel/algebra/relations/operations/join.rb10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/arel/algebra/relations/operations/join.rb b/lib/arel/algebra/relations/operations/join.rb
index 695f360b51..02a8fa629d 100644
--- a/lib/arel/algebra/relations/operations/join.rb
+++ b/lib/arel/algebra/relations/operations/join.rb
@@ -2,7 +2,7 @@ module Arel
class Join < Relation
attributes :relation1, :relation2, :predicates
deriving :==
- delegate :engine, :name, :to => :relation1
+ delegate :name, :to => :relation1
hash_on :relation1
def initialize(relation1, relation2 = Nil.instance, *predicates)
@@ -31,6 +31,10 @@ module Arel
def join?
true
end
+
+ def engine
+ relation1.engine != relation2.engine ? Memory::Engine.new : relation1.engine
+ end
end
class InnerJoin < Join; end
@@ -39,6 +43,10 @@ module Arel
def attributes
relation1.externalize.attributes
end
+
+ def engine
+ relation1.engine
+ end
end
class Relation