diff options
3 files changed, 46 insertions, 51 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb b/activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb index 8c67a7a80b..9f1021456b 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb @@ -13,15 +13,6 @@ module ActiveRecord            result          end -        # Returns an array of arrays containing the field values. -        # Order is the same as that returned by +columns+. -        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 -        end -          # Executes the SQL statement in the context of this connection.          def execute(sql, name = nil)            # make sure we carry over any changes to ActiveRecord::Base.default_timezone that have been @@ -58,16 +49,6 @@ module ActiveRecord              @connection.last_id            end -          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 -              exec_stmt_and_free(sql, name, binds, cache_stmt: true) { |_, result| yield result } -            end -          end -            def exec_stmt_and_free(sql, name, binds, cache_stmt: false)              # make sure we carry over any changes to ActiveRecord::Base.default_timezone that have been              # made since we established the connection diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb b/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb index 705e6063dc..ac5efbebeb 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb @@ -7,30 +7,6 @@ module ActiveRecord            PostgreSQL::ExplainPrettyPrinter.new.pp(exec_query(sql, "EXPLAIN", binds))          end -        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 = []) # :nodoc: -          select_result(arel, name, binds) do |result| -            if result.nfields > 0 -              result.column_values(0) -            else -              [] -            end -          end -        end - -        # Executes a SELECT query and returns an array of rows. Each row is an -        # array of field values. -        def select_rows(arel, name = nil, binds = []) # :nodoc: -          select_result(arel, name, binds) do |result| -            result.values -          end -        end -          # The internal PostgreSQL identifier of the money data type.          MONEY_COLUMN_TYPE_OID = 790 #:nodoc:          # The internal PostgreSQL identifier of the BYTEA data type. @@ -175,14 +151,6 @@ module ActiveRecord            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 diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb index 494663eb04..9b741545d7 100644 --- a/activerecord/test/cases/query_cache_test.rb +++ b/activerecord/test/cases/query_cache_test.rb @@ -204,6 +204,52 @@ class QueryCacheTest < ActiveRecord::TestCase      end    end +  def test_exists_queries_with_cache +    Post.cache do +      assert_queries(1) { Post.exists?; Post.exists? } +    end +  end + +  def test_select_all_with_cache +    Post.cache do +      assert_queries(1) do +        2.times { Post.connection.select_all(Post.all) } +      end +    end +  end + +  def test_select_one_with_cache +    Post.cache do +      assert_queries(1) do +        2.times { Post.connection.select_one(Post.all) } +      end +    end +  end + +  def test_select_value_with_cache +    Post.cache do +      assert_queries(1) do +        2.times { Post.connection.select_value(Post.all) } +      end +    end +  end + +  def test_select_values_with_cache +    Post.cache do +      assert_queries(1) do +        2.times { Post.connection.select_values(Post.all) } +      end +    end +  end + +  def test_select_rows_with_cache +    Post.cache do +      assert_queries(1) do +        2.times { Post.connection.select_rows(Post.all) } +      end +    end +  end +    def test_query_cache_dups_results_correctly      Task.cache do        now  = Time.now.utc  | 
