aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/arel.rb2
-rw-r--r--lib/arel/errors.rb7
-rw-r--r--lib/arel/select_manager.rb2
-rw-r--r--lib/arel/table.rb2
-rw-r--r--test/test_select_manager.rb10
-rw-r--r--test/test_table.rb6
6 files changed, 27 insertions, 2 deletions
diff --git a/lib/arel.rb b/lib/arel.rb
index e04999ed92..710914a2e3 100644
--- a/lib/arel.rb
+++ b/lib/arel.rb
@@ -1,3 +1,5 @@
+require 'arel/errors'
+
require 'arel/crud'
require 'arel/factory_methods'
diff --git a/lib/arel/errors.rb b/lib/arel/errors.rb
new file mode 100644
index 0000000000..c8a6af9f77
--- /dev/null
+++ b/lib/arel/errors.rb
@@ -0,0 +1,7 @@
+module Arel
+ class ArelError < StandardError
+ end
+
+ class EmptyJoinError < ArelError
+ end
+end
diff --git a/lib/arel/select_manager.rb b/lib/arel/select_manager.rb
index eae3bc8cbc..6af9b6fbe6 100644
--- a/lib/arel/select_manager.rb
+++ b/lib/arel/select_manager.rb
@@ -106,7 +106,7 @@ module Arel
case relation
when String, Nodes::SqlLiteral
- raise if relation.empty?
+ raise EmptyJoinError if relation.empty?
klass = Nodes::StringJoin
end
diff --git a/lib/arel/table.rb b/lib/arel/table.rb
index 3e06f94272..130b7ea028 100644
--- a/lib/arel/table.rb
+++ b/lib/arel/table.rb
@@ -37,7 +37,7 @@ module Arel
case relation
when String, Nodes::SqlLiteral
- raise if relation.empty?
+ raise EmptyJoinError if relation.empty?
klass = Nodes::StringJoin
end
diff --git a/test/test_select_manager.rb b/test/test_select_manager.rb
index 9a225edeec..e88f0e8e11 100644
--- a/test/test_select_manager.rb
+++ b/test/test_select_manager.rb
@@ -618,6 +618,16 @@ module Arel
manager = Arel::SelectManager.new
manager.join(nil).must_equal manager
end
+
+ it 'raises EmptyJoinError on empty' do
+ left = Table.new :users
+ manager = Arel::SelectManager.new
+
+ manager.from left
+ assert_raises(EmptyJoinError) do
+ manager.join("")
+ end
+ end
end
describe 'outer join' do
diff --git a/test/test_table.rb b/test/test_table.rb
index 168fde370d..e36a6e3a41 100644
--- a/test/test_table.rb
+++ b/test/test_table.rb
@@ -71,6 +71,12 @@ module Arel
mgr.to_sql.must_be_like %{ SELECT FROM "users" }
end
+ it 'raises EmptyJoinError on empty' do
+ assert_raises(EmptyJoinError) do
+ @relation.join ""
+ end
+ end
+
it 'takes a second argument for join type' do
right = @relation.alias
predicate = @relation[:id].eq(right[:id])