Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #3124: more_robust_null_values_in_each_hash_initialization.patch

File more_robust_null_values_in_each_hash_initialization.patch, 2.0 kB (added by skaes, 3 years ago)
  • activerecord/lib/active_record/connection_adapters/mysql_adapter.rb

    old new  
    88      unless defined? Mysql 
    99        begin 
    1010          require_library_or_gem 'mysql' 
    11           # The C version of mysql returns null fields in each_hash if Mysql::VERSION is defined 
    12           ConnectionAdapters::MysqlAdapter.null_values_in_each_hash = Mysql.const_defined?(:VERSION) 
    1311        rescue LoadError => cannot_require_mysql 
    1412          # Only use the supplied backup Ruby/MySQL driver if no driver is already in place 
    1513          begin 
    1614            require 'active_record/vendor/mysql' 
    17             # The ruby version of mysql returns null fields in each_hash 
    18             ConnectionAdapters::MysqlAdapter.null_values_in_each_hash = true 
    1915          rescue LoadError 
    2016            raise cannot_require_mysql 
    2117          end 
     
    8783      @@emulate_booleans = true 
    8884      cattr_accessor :emulate_booleans 
    8985 
    90       cattr_accessor :null_values_in_each_hash 
    91       @@null_values_in_each_hash = false 
    92  
    9386      LOST_CONNECTION_ERROR_MESSAGES = [ 
    9487        "Server shutdown in progress", 
    9588        "Broken pipe", 
     
    10093      def initialize(connection, logger, connection_options=nil, mysql=Mysql) 
    10194        super(connection, logger) 
    10295        @connection_options = connection_options 
     96        @null_values_in_each_hash = Mysql.const_defined?(:VERSION) 
    10397        @mysql = mysql 
    10498      end 
    10599 
     
    341335          @connection.query_with_result = true 
    342336          result = execute(sql, name) 
    343337          rows = [] 
    344           if @@null_values_in_each_hash 
     338          if @null_values_in_each_hash 
    345339            result.each_hash { |row| rows << row } 
    346340          else 
    347341            all_fields = result.fetch_fields.inject({}) { |fields, f| fields[f.name] = nil; fields }