Skip to content

Commit d92cb8f

Browse files
committed
feat: optimise latest_tagged_pact_consumer_version_orders view
1 parent 5f12487 commit d92cb8f

3 files changed

+37
-9
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
def latest_tagged_pact_consumer_version_orders_v2(connection)
2+
pp = :pact_publications
3+
connection.from(pp)
4+
.select_group(
5+
Sequel[pp][:provider_id],
6+
Sequel[:cv][:pacticipant_id].as(:consumer_id),
7+
Sequel[:t][:name].as(:tag_name))
8+
.select_append{ max(order).as(latest_consumer_version_order) }
9+
.join(:versions, { Sequel[pp][:consumer_version_id] => Sequel[:cv][:id] }, { table_alias: :cv} )
10+
.join(:tags, { Sequel[:t][:version_id] => Sequel[pp][:consumer_version_id] }, { table_alias: :t })
11+
end
12+
13+
def latest_tagged_pact_consumer_version_orders_v3(connection)
14+
view = Sequel.as(:latest_pact_publication_ids_for_consumer_versions, :lp)
15+
connection.from(view)
16+
.select_group(
17+
Sequel[:lp][:provider_id],
18+
Sequel[:cv][:pacticipant_id].as(:consumer_id),
19+
Sequel[:t][:name].as(:tag_name))
20+
.select_append{ max(order).as(latest_consumer_version_order) }
21+
.join(:versions, { Sequel[:lp][:consumer_version_id] => Sequel[:cv][:id] }, { table_alias: :cv} )
22+
.join(:tags, { Sequel[:t][:version_id] => Sequel[:lp][:consumer_version_id] }, { table_alias: :t })
23+
end

db/migrations/20180311_optimise_head_matrix.rb

+1-9
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,7 @@
66
pp = :pact_publications
77
# For each consumer_id/provider_id/tag_name, the version order of the latest version that has a pact
88
create_or_replace_view(:latest_tagged_pact_consumer_version_orders,
9-
from(:pact_publications)
10-
.select_group(
11-
Sequel[pp][:provider_id],
12-
Sequel[:cv][:pacticipant_id].as(:consumer_id),
13-
Sequel[:t][:name].as(:tag_name))
14-
.select_append{ max(order).as(latest_consumer_version_order) }
15-
.join(:versions, { Sequel[pp][:consumer_version_id] => Sequel[:cv][:id] }, { table_alias: :cv} )
16-
.join(:tags, { Sequel[:t][:version_id] => Sequel[pp][:consumer_version_id] }, { table_alias: :t })
17-
)
9+
latest_tagged_pact_consumer_version_orders_v2(self))
1810

1911
# Add provider_version_order to original definition
2012
# The most recent verification for each pact_version
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
require_relative '../ddl_statements'
2+
3+
Sequel.migration do
4+
up do
5+
create_or_replace_view(:latest_tagged_pact_consumer_version_orders,
6+
latest_tagged_pact_consumer_version_orders_v3(self))
7+
end
8+
9+
down do
10+
create_or_replace_view(:latest_tagged_pact_consumer_version_orders,
11+
latest_tagged_pact_consumer_version_orders_v2(self))
12+
end
13+
end

0 commit comments

Comments
 (0)