noosfero | Rails 4.2 Backport support for PostgreSQL 10 (#382)

Leandro Nunes gitlab at mg.gitlab.com
Wed Feb 6 09:35:13 BRST 2019


New Issue was created.

Issue 382: https://gitlab.com/noosfero/noosfero/issues/382
Author:    Leandro Nunes
Assignee:  

Rodei o rails com a versão mais nova do postgres e em algum momento tive um bug que precisei adicionar o trecho de código abaixo nos initializers.
Por algum motivo não consigo mais reproduzir o problema.
Vou criar essa issue para deixar o problema registrado aqui para um uso futuro se necessário.

config/initializers/backport_pg_10_support_to_rails_4.rb

`require 'active_record/connection_adapters/postgresql/schema_statements'

#
# Monkey-patch the refused Rails 4.2 patch at https://github.com/rails/rails/pull/31330
#
# Updates sequence logic to support PostgreSQL 10.
#

module ActiveRecord
  module ConnectionAdapters
    module PostgreSQL
      module SchemaStatements
        # Resets the sequence of a table's primary key to the maximum value.
        def reset_pk_sequence!(table, pk = nil, sequence = nil) #:nodoc:
          unless pk and sequence
            default_pk, default_sequence = pk_and_sequence_for(table)

            pk ||= default_pk
            sequence ||= default_sequence
          end

          if @logger && pk && !sequence
            @logger.warn "#{table} has primary key #{pk} with no default sequence"
          end

          if pk && sequence
            quoted_sequence = quote_table_name(sequence)
            max_pk = select_value("SELECT MAX(#{quote_column_name pk}) FROM #{quote_table_name(table)}")
            if max_pk.nil?
              if postgresql_version >= 100000
                minvalue = select_value("SELECT seqmin FROM pg_sequence WHERE seqrelid = #{quote(quoted_sequence)}::regclass")
              else
                minvalue = select_value("SELECT min_value FROM #{quoted_sequence}")
              end
            end

            select_value <<-end_sql, 'SCHEMA'
              SELECT setval(#{quote(quoted_sequence)}, #{max_pk ? max_pk : minvalue}, #{max_pk ? true : false})
            end_sql
          end
        end
      end
    end
  end
end`

-- 
Reply to this email directly or view it on GitLab: https://gitlab.com/noosfero/noosfero/issues/382
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20190206/49fc0f48/attachment.html>


More information about the Noosfero-dev mailing list