aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/postgresql/column.rb
blob: 8f3628ec0edde54b324f29acc4b3c1a61a27b18b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
module ActiveRecord
  module ConnectionAdapters
    # PostgreSQL-specific extensions to column definitions in a table.
    class PostgreSQLColumn < Column #:nodoc:
      attr_reader :array, :oid, :fmod
      alias :array? :array

      def initialize(name, default, cast_type, sql_type = nil, null = true, default_function = nil, oid = nil, fmod = nil)
        if sql_type =~ /\[\]$/
          @array = true
          sql_type = sql_type[0..sql_type.length - 3]
        else
          @array = false
        end
        @oid = oid
        @fmod = fmod
        super(name, default, cast_type, sql_type, null, default_function)
      end

      def serial?
        default_function && default_function =~ /\Anextval\(.*\)\z/
      end
    end
  end
end