Support PostgreSQL 10
This commit is contained in:
parent
04edbb5fb3
commit
3bb798756e
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Support PostgreSQL 10
|
||||
merge_request: 16471
|
||||
author:
|
||||
type: added
|
|
@ -0,0 +1,48 @@
|
|||
raise "Vendored ActiveRecord 5 code! Delete #{__FILE__}!" if ActiveRecord::VERSION::MAJOR >= 5
|
||||
|
||||
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.
|
||||
#
|
||||
# rubocop:disable all
|
||||
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
|
||||
# rubocop:enable all
|
|
@ -121,7 +121,7 @@ Existing users using GitLab with MySQL/MariaDB are advised to
|
|||
|
||||
### PostgreSQL Requirements
|
||||
|
||||
As of GitLab 10.0, PostgreSQL 9.6 or newer (but less than 10) is required, and earlier versions are
|
||||
As of GitLab 10.0, PostgreSQL 9.6 or newer is required, and earlier versions are
|
||||
not supported. We highly recommend users to use PostgreSQL 9.6 as this
|
||||
is the PostgreSQL version used for development and testing.
|
||||
|
||||
|
|
Loading…
Reference in New Issue