diff options
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 027169ae3c..23c1a8de2f 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -498,7 +498,7 @@ module ActiveRecord end # Extracts the value from a PostgreSQL column default definition. - def extract_value_from_default(default) # :nodoc: + def extract_value_from_default(oid, default) # :nodoc: # This is a performance optimization for Ruby 1.9.2 in development. # If the value is nil, we return nil straight away without checking # the regular expressions. If we check each regular expression, @@ -507,6 +507,13 @@ module ActiveRecord # makes this method very very slow. return default unless default + # TODO: The default extraction is related to the cast-type. + # we should probably make a type_map lookup and cast the default- + # expression accordingly + if oid.type == :enum && default =~ /\A'(.*)'::/ + return $1 + end + case default when /\A'(.*)'::(num|date|tstz|ts|int4|int8)range\z/m $1 |