Revert "PERF: optimise type lookup to avoid invoking procs"
This reverts commit da99a2a2982d35f670ad9647463e09bfe9032b70.
This commit is contained in:
parent
74c35b46e3
commit
b03f9ef86a
@ -431,22 +431,16 @@ def translate_exception(exception, message)
|
||||
private
|
||||
|
||||
def get_oid_type(oid, fmod, column_name, sql_type = '') # :nodoc:
|
||||
|
||||
result = type_map.fetch(oid, fmod, sql_type) {
|
||||
nil
|
||||
}
|
||||
|
||||
unless result
|
||||
if !type_map.key?(oid)
|
||||
load_additional_types(type_map, [oid])
|
||||
result = type_map.fetch(oid, fmod, sql_type) {
|
||||
warn "unknown OID #{oid}: failed to recognize type of '#{column_name}'. It will be treated as String."
|
||||
Type::Value.new.tap do |cast_type|
|
||||
type_map.register_type(oid, cast_type)
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
result
|
||||
type_map.fetch(oid, fmod, sql_type) {
|
||||
warn "unknown OID #{oid}: failed to recognize type of '#{column_name}'. It will be treated as String."
|
||||
Type::Value.new.tap do |cast_type|
|
||||
type_map.register_type(oid, cast_type)
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
def initialize_type_map(m) # :nodoc:
|
||||
|
@ -1,12 +1,6 @@
|
||||
module ActiveRecord
|
||||
module Type
|
||||
class HashLookupTypeMap < TypeMap # :nodoc:
|
||||
|
||||
def initialize
|
||||
@cache = {}
|
||||
super
|
||||
end
|
||||
|
||||
delegate :key?, to: :@mapping
|
||||
|
||||
def lookup(type, *args)
|
||||
@ -14,24 +8,12 @@ def lookup(type, *args)
|
||||
end
|
||||
|
||||
def fetch(type, *args, &block)
|
||||
cache = (@cache[type] ||= {})
|
||||
resolved = cache[args]
|
||||
|
||||
unless resolved
|
||||
resolved = cache[args] = @mapping.fetch(type, block).call(type, *args)
|
||||
end
|
||||
|
||||
resolved
|
||||
@mapping.fetch(type, block).call(type, *args)
|
||||
end
|
||||
|
||||
def alias_type(type, alias_type)
|
||||
register_type(type) { |_, *args| lookup(alias_type, *args) }
|
||||
end
|
||||
|
||||
def register_type(key, value=nil, &block)
|
||||
@cache = {}
|
||||
super(key, value, &block)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user