aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/arel/nodes/exists.rb8
-rw-r--r--lib/arel/select_manager.rb6
-rw-r--r--lib/arel/tree_manager.rb2
-rw-r--r--lib/arel/visitors/to_sql.rb3
4 files changed, 11 insertions, 8 deletions
diff --git a/lib/arel/nodes/exists.rb b/lib/arel/nodes/exists.rb
index 167a345006..18ba8403b4 100644
--- a/lib/arel/nodes/exists.rb
+++ b/lib/arel/nodes/exists.rb
@@ -1,11 +1,7 @@
module Arel
module Nodes
- class Exists
- attr_reader :select_stmt
-
- def initialize select_stmt
- @select_stmt = select_stmt
- end
+ class Exists < Arel::Nodes::Function
+ alias :select_stmt :expressions
end
end
end
diff --git a/lib/arel/select_manager.rb b/lib/arel/select_manager.rb
index f2520f38d7..f6738bf26f 100644
--- a/lib/arel/select_manager.rb
+++ b/lib/arel/select_manager.rb
@@ -22,6 +22,12 @@ module Arel
self
end
+ ###
+ # Produces an Arel::Nodes::Exists node
+ def exists
+ Arel::Nodes::Exists.new @ast
+ end
+
def where_clauses
#warn "where_clauses is deprecated" if $VERBOSE
to_sql = Visitors::ToSql.new @engine
diff --git a/lib/arel/tree_manager.rb b/lib/arel/tree_manager.rb
index ca87def8d6..6176f8a250 100644
--- a/lib/arel/tree_manager.rb
+++ b/lib/arel/tree_manager.rb
@@ -4,7 +4,7 @@ module Arel
include Arel::Relation
attr_accessor :visitor
- attr_reader :ast
+ attr_reader :ast, :engine
def initialize engine
@engine = engine
diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb
index 3c96b3e259..b6af47cc57 100644
--- a/lib/arel/visitors/to_sql.rb
+++ b/lib/arel/visitors/to_sql.rb
@@ -62,7 +62,8 @@ module Arel
end
def visit_Arel_Nodes_Exists o
- "EXISTS (#{visit o.select_stmt})"
+ "EXISTS (#{visit o.select_stmt})#{
+ o.alias ? " AS #{visit o.alias}" : ''}"
end
def visit_Arel_Nodes_Values o