Merge pull request #25522 from kamipo/fix_select_rows_method_signature_for_consistency

Fix `select_rows` method signature for consistency
This commit is contained in:
Rafael França 2017-01-03 19:48:56 -05:00 committed by GitHub
commit 5c40239d31
3 changed files with 24 additions and 20 deletions

@ -51,8 +51,7 @@ def select_one(arel, name = nil, binds = [])
# Returns a single value from a record
def select_value(arel, name = nil, binds = [])
arel, binds = binds_from_relation arel, binds
if result = select_rows(to_sql(arel, binds), name, binds).first
if result = select_rows(arel, name, binds).first
result.first
end
end
@ -60,14 +59,13 @@ def select_value(arel, name = nil, binds = [])
# Returns an array of the values of the first column in a select:
# select_values("SELECT id FROM companies LIMIT 3") => [1,2,3]
def select_values(arel, name = nil, binds = [])
arel, binds = binds_from_relation arel, binds
select_rows(to_sql(arel, binds), name, binds).map(&:first)
select_rows(arel, name, binds).map(&:first)
end
# Returns an array of arrays containing the field values.
# Order is the same as that returned by +columns+.
def select_rows(sql, name = nil, binds = [])
exec_query(sql, name, binds).rows
def select_rows(arel, name = nil, binds = [])
select_all(arel, name, binds).rows
end
# Executes the SQL statement in the context of this connection and returns

@ -3,7 +3,7 @@ module ConnectionAdapters
module MySQL
module DatabaseStatements
# Returns an ActiveRecord::Result instance.
def select_all(arel, name = nil, binds = [], preparable: nil)
def select_all(arel, name = nil, binds = [], preparable: nil) # :nodoc:
result = if ExplainRegistry.collect? && prepared_statements
unprepared_statement { super }
else
@ -15,8 +15,8 @@ def select_all(arel, name = nil, binds = [], preparable: nil)
# Returns an array of arrays containing the field values.
# Order is the same as that returned by +columns+.
def select_rows(sql, name = nil, binds = [])
select_result(sql, name, binds) do |result|
def select_rows(arel, name = nil, binds = []) # :nodoc:
select_result(arel, name, binds) do |result|
@connection.next_result while @connection.more_results?
result.to_a
end
@ -58,7 +58,9 @@ def last_inserted_id(result)
@connection.last_id
end
def select_result(sql, name = nil, binds = [])
def select_result(arel, name, binds)
arel, binds = binds_from_relation(arel, binds)
sql = to_sql(arel, binds)
if without_prepared_statement?(binds)
execute_and_free(sql, name) { |result| yield result }
else

@ -7,18 +7,14 @@ def explain(arel, binds = [])
PostgreSQL::ExplainPrettyPrinter.new.pp(exec_query(sql, "EXPLAIN", binds))
end
def select_value(arel, name = nil, binds = [])
arel, binds = binds_from_relation arel, binds
sql = to_sql(arel, binds)
execute_and_clear(sql, name, binds) do |result|
def select_value(arel, name = nil, binds = []) # :nodoc:
select_result(arel, name, binds) do |result|
result.getvalue(0, 0) if result.ntuples > 0 && result.nfields > 0
end
end
def select_values(arel, name = nil, binds = [])
arel, binds = binds_from_relation arel, binds
sql = to_sql(arel, binds)
execute_and_clear(sql, name, binds) do |result|
def select_values(arel, name = nil, binds = []) # :nodoc:
select_result(arel, name, binds) do |result|
if result.nfields > 0
result.column_values(0)
else
@ -29,8 +25,8 @@ def select_values(arel, name = nil, binds = [])
# Executes a SELECT query and returns an array of rows. Each row is an
# array of field values.
def select_rows(sql, name = nil, binds = [])
execute_and_clear(sql, name, binds) do |result|
def select_rows(arel, name = nil, binds = []) # :nodoc:
select_result(arel, name, binds) do |result|
result.values
end
end
@ -179,6 +175,14 @@ def exec_rollback_db_transaction
def suppress_composite_primary_key(pk)
pk unless pk.is_a?(Array)
end
def select_result(arel, name, binds)
arel, binds = binds_from_relation(arel, binds)
sql = to_sql(arel, binds)
execute_and_clear(sql, name, binds) do |result|
yield result
end
end
end
end
end