Merge pull request #41410 from eileencodes/define-empty-result

Add ActiveRecord::Result.empty
This commit is contained in:
Eileen M. Uchitelle 2021-02-11 11:37:09 -05:00 committed by GitHub
commit bddb2c9b19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 3 deletions

@ -65,7 +65,7 @@ def select_all(arel, name = nil, binds = [], preparable: nil, async: false)
select(sql, name, binds, prepare: prepared_statements && preparable, async: async && FutureResult::SelectAll)
rescue ::RangeError
ActiveRecord::Result.new([], [])
ActiveRecord::Result.empty
end
# Returns a record hash with the column names as keys and column values

@ -90,7 +90,7 @@ class SelectAll < FutureResult # :nodoc:
def exec_query(*, **)
super
rescue ::RangeError
ActiveRecord::Result.new([], [])
ActiveRecord::Result.empty
end
end
end

@ -195,7 +195,7 @@ def pluck(*column_names)
relation.select_values = columns
result = skip_query_cache_if_necessary do
if where_clause.contradiction?
ActiveRecord::Result.new([], [])
ActiveRecord::Result.empty
else
klass.connection.select_all(relation.arel, "#{klass.name} Pluck")
end

@ -36,6 +36,10 @@ class Result
attr_reader :columns, :rows, :column_types
def self.empty # :nodoc:
EMPTY
end
def initialize(columns, rows, column_types = {})
@columns = columns
@rows = rows
@ -43,6 +47,9 @@ def initialize(columns, rows, column_types = {})
@column_types = column_types
end
EMPTY = new([].freeze, [].freeze, {}.freeze)
private_constant :EMPTY
# Returns true if this result set includes the column named +name+
def includes_column?(name)
@columns.include? name