Skip to content

Commit

Permalink
Merge pull request #13344 from ccutrer/fix-from-default-select
Browse files Browse the repository at this point in the history
fix default select when from is used
  • Loading branch information
rafaelfranca committed Dec 19, 2013
2 parents e4cde5d + 847e9a9 commit 3ea8403
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
18 changes: 18 additions & 0 deletions activerecord/CHANGELOG.md
@@ -1,3 +1,21 @@
* Improve the default select when from is used.

Previously, if you did something like Topic.from(:temp_topics), it
would generate SQL like:

SELECT topics.* FROM temp_topics;

Which is useless, cause obviously there's not a topics table to select
from. So one would always have to include a select to override the
default behavior. Now the default if you use from is just *:

SELECT * FROM temp_topics;

Which may not be what you want in all cases, but is at least usable
in some cases.

*Cody Cutrer*

* Fix `PostgreSQL` insert to properly extract table name from multiline string SQL.

Previously, executing an insert SQL in `PostgreSQL` with a command like this:
Expand Down
4 changes: 3 additions & 1 deletion activerecord/lib/active_record/relation/query_methods.rb
Expand Up @@ -982,8 +982,10 @@ def build_joins(manager, joins)
end

def build_select(arel, selects)
unless selects.empty?
if !selects.empty?
arel.project(*selects)
elsif from_value
arel.project(Arel.star)
else
arel.project(@klass.arel_table[Arel.star])
end
Expand Down
5 changes: 5 additions & 0 deletions activerecord/test/cases/relations_test.rb
Expand Up @@ -151,6 +151,11 @@ def test_finding_with_subquery_with_binds
assert_equal relation.to_a, Comment.select('a.*').from(relation, :a).to_a
end

def test_finding_with_subquery_without_select
relation = Topic.where(:approved => true)
assert_equal relation.to_a, Topic.from(relation).to_a
end

def test_finding_with_conditions
assert_equal ["David"], Author.where(:name => 'David').map(&:name)
assert_equal ['Mary'], Author.where(["name = ?", 'Mary']).map(&:name)
Expand Down

0 comments on commit 3ea8403

Please sign in to comment.