Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-22 18:09:49 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-22 18:09:49 +0300
commitf2dfd9ee819afb07bf11bd36a5f9d23009be0d39 (patch)
treeedd9468dc9c6c55f9882175fd83a1aadec22edf0 /lib/gitlab/database/schema_cleaner.rb
parent058c34839488502fcec48d805b83728f928a318c (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/database/schema_cleaner.rb')
-rw-r--r--lib/gitlab/database/schema_cleaner.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/gitlab/database/schema_cleaner.rb b/lib/gitlab/database/schema_cleaner.rb
new file mode 100644
index 00000000000..c1436d3e7ca
--- /dev/null
+++ b/lib/gitlab/database/schema_cleaner.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Database
+ class SchemaCleaner
+ attr_reader :original_schema
+
+ def initialize(original_schema)
+ @original_schema = original_schema
+ end
+
+ def clean(io)
+ structure = original_schema.dup
+
+ # Postgres compat fix for PG 9.6 (which doesn't support (AS datatype) syntax for sequences)
+ structure.gsub!(/CREATE SEQUENCE [^.]+\.\S+\n(\s+AS integer\n)/) { |m| m.gsub(Regexp.last_match[1], '') }
+
+ # Also a PG 9.6 compatibility fix, see below.
+ structure.gsub!(/^CREATE EXTENSION IF NOT EXISTS plpgsql.*/, '')
+ structure.gsub!(/^COMMENT ON EXTENSION.*/, '')
+
+ # Remove noise
+ structure.gsub!(/^SET.+/, '')
+ structure.gsub!(/^SELECT pg_catalog\.set_config\('search_path'.+/, '')
+ structure.gsub!(/^--.*/, "\n")
+ structure.gsub!(/\n{3,}/, "\n\n")
+
+ io << "SET search_path=public;\n\n"
+
+ # Adding plpgsql explicitly is again a compatibility fix for PG 9.6
+ # In more recent versions of pg_dump, the extension isn't explicitly dumped anymore.
+ # We use PG 9.6 still on CI and for schema checks - here this is still the case.
+ io << <<~SQL.strip
+ CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
+ SQL
+
+ io << structure
+
+ nil
+ end
+ end
+ end
+end