Sha256: 73874da77be4ce77272efbfa3f0453c7171bfbbd34f24dee070dea9a667b4e03

Contents?: true

Size: 1.52 KB

Versions: 22

Compression:

Stored size: 1.52 KB

Contents

module ArJdbc
  module PostgreSQL

    # @private these are defined on the Adapter class since 4.2
    module ColumnHelpers

      def extract_limit(sql_type) # :nodoc:
        case sql_type
        when /^bigint/i, /^int8/i then 8
        when /^smallint/i then 2
        when /^timestamp/i then nil
        else
          super
        end
      end

      # Extracts the value from a PostgreSQL column default definition.
      def extract_value_from_default(default)
        case default
          # Quoted types
          when /\A[\(B]?'(.*)'.*::"?([\w. ]+)"?(?:\[\])?\z/m
            # The default 'now'::date is CURRENT_DATE
            if $1 == "now".freeze && $2 == "date".freeze
              nil
            else
              $1.gsub("''".freeze, "'".freeze)
            end
          # Boolean types
          when 'true'.freeze, 'false'.freeze
            default
          # Numeric types
          when /\A\(?(-?\d+(\.\d*)?)\)?(::bigint)?\z/
            $1
          # Object identifier types
          when /\A-?\d+\z/
            $1
          else
            # Anything else is blank, some user type, or some function
            # and we can't know the value of that, so return nil.
            nil
        end
      end

      def extract_default_function(default_value, default)
        default if has_default_function?(default_value, default)
      end

      def has_default_function?(default_value, default)
        !default_value && %r{\w+\(.*\)|\(.*\)::\w+|CURRENT_DATE|CURRENT_TIMESTAMP} === default
      end
    end

  end
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
activerecord-jdbc-adapter-52.8-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-alt-adapter-52.6.0-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-alt-adapter-51.7.0-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-alt-adapter-50.7.0-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-52.7-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-51.8-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-50.8-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-52.6-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-51.7-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-50.7-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-alt-adapter-52.5.1-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-alt-adapter-51.6.1-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-alt-adapter-50.6.1-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-52.5-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-51.6-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-50.6-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-alt-adapter-52.4.0-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-alt-adapter-51.5.0-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-alt-adapter-50.5.0-java lib/arjdbc/postgresql/column.rb
activerecord-jdbc-adapter-52.4-java lib/arjdbc/postgresql/column.rb