mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix select_rows
method signature for consistency
Related #22973, #24708. `select_all`, `select_one`, `select_value`, and `select_values` method signature is `(arel, name = nil, binds = [])`. But `select_rows` is `(sql, name = nil, binds = [])`.
This commit is contained in:
parent
530e5ff910
commit
cb1803591e
3 changed files with 24 additions and 20 deletions
|
@ -51,8 +51,7 @@ module ActiveRecord
|
||||||
|
|
||||||
# Returns a single value from a record
|
# Returns a single value from a record
|
||||||
def select_value(arel, name = nil, binds = [])
|
def select_value(arel, name = nil, binds = [])
|
||||||
arel, binds = binds_from_relation arel, binds
|
if result = select_rows(arel, name, binds).first
|
||||||
if result = select_rows(to_sql(arel, binds), name, binds).first
|
|
||||||
result.first
|
result.first
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -60,14 +59,13 @@ module ActiveRecord
|
||||||
# Returns an array of the values of the first column in a select:
|
# Returns an array of the values of the first column in a select:
|
||||||
# select_values("SELECT id FROM companies LIMIT 3") => [1,2,3]
|
# select_values("SELECT id FROM companies LIMIT 3") => [1,2,3]
|
||||||
def select_values(arel, name = nil, binds = [])
|
def select_values(arel, name = nil, binds = [])
|
||||||
arel, binds = binds_from_relation arel, binds
|
select_rows(arel, name, binds).map(&:first)
|
||||||
select_rows(to_sql(arel, binds), name, binds).map(&:first)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns an array of arrays containing the field values.
|
# Returns an array of arrays containing the field values.
|
||||||
# Order is the same as that returned by +columns+.
|
# Order is the same as that returned by +columns+.
|
||||||
def select_rows(sql, name = nil, binds = [])
|
def select_rows(arel, name = nil, binds = [])
|
||||||
exec_query(sql, name, binds).rows
|
select_all(arel, name, binds).rows
|
||||||
end
|
end
|
||||||
|
|
||||||
# Executes the SQL statement in the context of this connection and returns
|
# Executes the SQL statement in the context of this connection and returns
|
||||||
|
|
|
@ -3,7 +3,7 @@ module ActiveRecord
|
||||||
module MySQL
|
module MySQL
|
||||||
module DatabaseStatements
|
module DatabaseStatements
|
||||||
# Returns an ActiveRecord::Result instance.
|
# 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
|
result = if ExplainRegistry.collect? && prepared_statements
|
||||||
unprepared_statement { super }
|
unprepared_statement { super }
|
||||||
else
|
else
|
||||||
|
@ -15,8 +15,8 @@ module ActiveRecord
|
||||||
|
|
||||||
# Returns an array of arrays containing the field values.
|
# Returns an array of arrays containing the field values.
|
||||||
# Order is the same as that returned by +columns+.
|
# Order is the same as that returned by +columns+.
|
||||||
def select_rows(sql, name = nil, binds = [])
|
def select_rows(arel, name = nil, binds = []) # :nodoc:
|
||||||
select_result(sql, name, binds) do |result|
|
select_result(arel, name, binds) do |result|
|
||||||
@connection.next_result while @connection.more_results?
|
@connection.next_result while @connection.more_results?
|
||||||
result.to_a
|
result.to_a
|
||||||
end
|
end
|
||||||
|
@ -58,7 +58,9 @@ module ActiveRecord
|
||||||
@connection.last_id
|
@connection.last_id
|
||||||
end
|
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)
|
if without_prepared_statement?(binds)
|
||||||
execute_and_free(sql, name) { |result| yield result }
|
execute_and_free(sql, name) { |result| yield result }
|
||||||
else
|
else
|
||||||
|
|
|
@ -7,18 +7,14 @@ module ActiveRecord
|
||||||
PostgreSQL::ExplainPrettyPrinter.new.pp(exec_query(sql, "EXPLAIN", binds))
|
PostgreSQL::ExplainPrettyPrinter.new.pp(exec_query(sql, "EXPLAIN", binds))
|
||||||
end
|
end
|
||||||
|
|
||||||
def select_value(arel, name = nil, binds = [])
|
def select_value(arel, name = nil, binds = []) # :nodoc:
|
||||||
arel, binds = binds_from_relation arel, binds
|
select_result(arel, name, binds) do |result|
|
||||||
sql = to_sql(arel, binds)
|
|
||||||
execute_and_clear(sql, name, binds) do |result|
|
|
||||||
result.getvalue(0, 0) if result.ntuples > 0 && result.nfields > 0
|
result.getvalue(0, 0) if result.ntuples > 0 && result.nfields > 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def select_values(arel, name = nil, binds = [])
|
def select_values(arel, name = nil, binds = []) # :nodoc:
|
||||||
arel, binds = binds_from_relation arel, binds
|
select_result(arel, name, binds) do |result|
|
||||||
sql = to_sql(arel, binds)
|
|
||||||
execute_and_clear(sql, name, binds) do |result|
|
|
||||||
if result.nfields > 0
|
if result.nfields > 0
|
||||||
result.column_values(0)
|
result.column_values(0)
|
||||||
else
|
else
|
||||||
|
@ -29,8 +25,8 @@ module ActiveRecord
|
||||||
|
|
||||||
# Executes a SELECT query and returns an array of rows. Each row is an
|
# Executes a SELECT query and returns an array of rows. Each row is an
|
||||||
# array of field values.
|
# array of field values.
|
||||||
def select_rows(sql, name = nil, binds = [])
|
def select_rows(arel, name = nil, binds = []) # :nodoc:
|
||||||
execute_and_clear(sql, name, binds) do |result|
|
select_result(arel, name, binds) do |result|
|
||||||
result.values
|
result.values
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -179,6 +175,14 @@ module ActiveRecord
|
||||||
def suppress_composite_primary_key(pk)
|
def suppress_composite_primary_key(pk)
|
||||||
pk unless pk.is_a?(Array)
|
pk unless pk.is_a?(Array)
|
||||||
end
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue