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:
Diffstat (limited to 'spec/lib/gitlab/database/tables_sorted_by_foreign_keys_spec.rb')
-rw-r--r--spec/lib/gitlab/database/tables_sorted_by_foreign_keys_spec.rb34
1 files changed, 31 insertions, 3 deletions
diff --git a/spec/lib/gitlab/database/tables_sorted_by_foreign_keys_spec.rb b/spec/lib/gitlab/database/tables_sorted_by_foreign_keys_spec.rb
index 97abd6d23bd..aa25590ed58 100644
--- a/spec/lib/gitlab/database/tables_sorted_by_foreign_keys_spec.rb
+++ b/spec/lib/gitlab/database/tables_sorted_by_foreign_keys_spec.rb
@@ -4,7 +4,10 @@ require 'spec_helper'
RSpec.describe Gitlab::Database::TablesSortedByForeignKeys do
let(:connection) { ApplicationRecord.connection }
- let(:tables) { %w[_test_gitlab_main_items _test_gitlab_main_references] }
+ let(:tables) do
+ %w[_test_gitlab_main_items _test_gitlab_main_references _test_gitlab_partition_parent
+ gitlab_partitions_dynamic._test_gitlab_partition_20220101]
+ end
subject do
described_class.new(connection, tables).execute
@@ -19,13 +22,33 @@ RSpec.describe Gitlab::Database::TablesSortedByForeignKeys do
item_id BIGINT NOT NULL,
CONSTRAINT fk_constrained_1 FOREIGN KEY(item_id) REFERENCES _test_gitlab_main_items(id)
);
+
+ CREATE TABLE _test_gitlab_partition_parent (
+ id bigserial not null,
+ created_at timestamptz not null,
+ item_id BIGINT NOT NULL,
+ primary key (id, created_at),
+ CONSTRAINT fk_constrained_1 FOREIGN KEY(item_id) REFERENCES _test_gitlab_main_items(id)
+ ) PARTITION BY RANGE(created_at);
+
+ CREATE TABLE gitlab_partitions_dynamic._test_gitlab_partition_20220101
+ PARTITION OF _test_gitlab_partition_parent
+ FOR VALUES FROM ('20220101') TO ('20220131');
+
+ ALTER TABLE _test_gitlab_partition_parent DETACH PARTITION gitlab_partitions_dynamic._test_gitlab_partition_20220101;
SQL
connection.execute(statement)
end
describe '#execute' do
it 'returns the tables sorted by the foreign keys dependency' do
- expect(subject).to eq([['_test_gitlab_main_references'], ['_test_gitlab_main_items']])
+ expect(subject).to eq(
+ [
+ ['_test_gitlab_main_references'],
+ ['_test_gitlab_partition_parent'],
+ ['gitlab_partitions_dynamic._test_gitlab_partition_20220101'],
+ ['_test_gitlab_main_items']
+ ])
end
it 'returns both tables together if they are strongly connected' do
@@ -35,7 +58,12 @@ RSpec.describe Gitlab::Database::TablesSortedByForeignKeys do
SQL
connection.execute(statement)
- expect(subject).to eq([tables])
+ expect(subject).to eq(
+ [
+ ['_test_gitlab_partition_parent'],
+ ['gitlab_partitions_dynamic._test_gitlab_partition_20220101'],
+ %w[_test_gitlab_main_items _test_gitlab_main_references]
+ ])
end
end
end