misc.python.materialize.version_ancestor_overrides

  1# Copyright Materialize, Inc. and contributors. All rights reserved.
  2#
  3# Use of this software is governed by the Business Source License
  4# included in the LICENSE file at the root of this repository.
  5#
  6# As of the Change Date specified in that file, in accordance with
  7# the Business Source License, use of this software will be governed
  8# by the Apache License, Version 2.0.
  9
 10
 11from __future__ import annotations
 12
 13from typing import Any
 14
 15from materialize.mz_version import MzVersion
 16
 17
 18def get_ancestor_overrides_for_performance_regressions(
 19    scenario_class: type[Any], scale: str | None
 20) -> dict[str, MzVersion]:
 21    """
 22    Git revisions that are based on commits listed as keys require at least the version specified in the value.
 23    Note that specified versions do not necessarily need to be already published.
 24    Commits must be ordered descending by their date.
 25    """
 26
 27    scenario_class_name = scenario_class.__name__
 28
 29    min_ancestor_mz_version_per_commit = dict()
 30
 31    if scenario_class_name in ("OrderBy", "FastPathFilterNoIndex"):
 32        # PR#34930 (Bump differential, timely and related) increases latency
 33        min_ancestor_mz_version_per_commit[
 34            "c20c82119261bab23c865bdfd1841348aa0acca3"
 35        ] = MzVersion.parse_mz("v26.12.0")
 36
 37    if scenario_class_name == "SwapSchema":
 38        # PR#29673 (adapter: derive implications from catalog changes) increases latency
 39        min_ancestor_mz_version_per_commit[
 40            "9a4ee6174553d4f14402e90927a05aa8cba37112"
 41        ] = MzVersion.parse_mz("v26.2.0")
 42
 43    if scenario_class_name in ("DifferentialJoin", "Retraction", "FinishOrderByLimit"):
 44        # PR#33979 (Enable active dataflow cancellation) increases latency
 45        min_ancestor_mz_version_per_commit[
 46            "e1944c939203eb29b84a18ce5153e2d99d157c1d"
 47        ] = MzVersion.parse_mz("v0.164.0")
 48
 49    if scenario_class_name == "CreateIndex":
 50        # PR#33938 (Update columnar, timely, differential) increases latency
 51        min_ancestor_mz_version_per_commit[
 52            "c28d0061a6c9e63ee50a5f555c5d90373d006686"
 53        ] = MzVersion.parse_mz("v0.164.0")
 54
 55    if scenario_class_name in ("CrossJoin", "AccumulateReductions"):
 56        # PR#31501 (Remove ChunkedStack and related) increases latency for inserts
 57        min_ancestor_mz_version_per_commit[
 58            "e91f9d5e47f5dddf1d5d1a3afa3c27907bdbb0a7"
 59        ] = MzVersion.parse_mz("v0.134.0")
 60
 61    if scenario_class_name == "ManySmallInserts":
 62        # PR#31309 ([adapter] don't block on builtin table write in Session creation) increases latency for inserts
 63        min_ancestor_mz_version_per_commit[
 64            "e8c42c65afb7acd55eb7e530a92c89a9165f2e33"
 65        ] = MzVersion.parse_mz("v0.133.0")
 66
 67    if scenario_class_name == "SwapSchema":
 68        # PR#30883 (Columnar in logging dataflows) increases Mz memory usage
 69        min_ancestor_mz_version_per_commit[
 70            "a077232ffcb76ef7498da7637fbc9e80aa88765c"
 71        ] = MzVersion.parse_mz("v0.131.0")
 72
 73    if scenario_class_name == "FastPathOrderByLimit":
 74        # PR#30872 (rust: Upgrade to 1.83.0) increases wallclock
 75        min_ancestor_mz_version_per_commit[
 76            "74ebdd68dd2e9ec860837d52866ab9db61a0a49e"
 77        ] = MzVersion.parse_mz("v0.129.0")
 78
 79    if scenario_class_name == "OptbenchTPCHQ01":
 80        # PR#30806 ([optimizer] report per-transform metrics) increases wallclock
 81        min_ancestor_mz_version_per_commit[
 82            "a5355b2e89fedef9f7a04a96b737f7434a8e3f62"
 83        ] = MzVersion.parse_mz("v0.128.0")
 84
 85    if scenario_class_name in ("KafkaUpsert", "KafkaUpsertUnique", "ParallelIngestion"):
 86        # PR#30617 (storage/kafka: use separate consumer for metadata probing)
 87        # adds 1s of delay to Kafka source startup
 88        min_ancestor_mz_version_per_commit[
 89            "9f7b634e6824f73d0effcdfa86c2b8b1642a4784"
 90        ] = MzVersion.parse_mz("v0.127.0")
 91    if scenario_class_name == "InsertMultiRow":
 92        # PR#30622 (Refactor how we run FoldConstants) increases wallclock
 93        min_ancestor_mz_version_per_commit[
 94            "a558d6bdc4b29abf79457eaba52914a0d6c805b7"
 95        ] = MzVersion.parse_mz("v0.127.0")
 96    if "OptbenchTPCH" in scenario_class_name:
 97        # PR#30602 (Replace ColumnKnowledge with EquivalencePropagation) increases wallclock
 98        min_ancestor_mz_version_per_commit[
 99            "1bd45336f8335b3487153beb7ce57f6391a7cf9c"
100        ] = MzVersion.parse_mz("v0.126.0")
101
102    if "OptbenchTPCH" in scenario_class_name:
103        # PR#30506 (Remove NonNullable transform) increases wallclock
104        min_ancestor_mz_version_per_commit[
105            "6981cb35f6a64748293867beb67e74b804f9e723"
106        ] = MzVersion.parse_mz("v0.126.0")
107
108    if scenario_class_name == "KafkaUpsertUnique":
109        # PR#29718 (storage: continual feedback upsert operator) increases CPU and memory
110        min_ancestor_mz_version_per_commit[
111            "b16b6a2c71f6e52adcbe37988cb262c15074a63f"
112        ] = MzVersion.parse_mz("v0.125.0")
113
114    if scenario_class_name in (
115        "SmallClusters",
116        "AccumulateReductions",
117        "CreateIndex",
118        "ManySmallUpdates",
119        "FastPathOrderByLimit",
120        "FastPathFilterIndex",
121        "ParallelIngestion",
122        "SubscribeParallelTableWithIndex",
123        "DeltaJoinMaintained",
124        "Update",
125        "Retraction",
126    ):
127        # PR#28307 (Render regions for object build and let bindings) increases messages
128        min_ancestor_mz_version_per_commit[
129            "ffcafa5b5c3e83845a868cf6103048c045b4f155"
130        ] = MzVersion.parse_mz("v0.113.0")
131
132    if "OptbenchTPCH" in scenario_class_name:
133        # PR#28664 (Introduce MirScalarExpr::reduce_safely) increases wallclock
134        min_ancestor_mz_version_per_commit[
135            "0a570022e1b78a205d5d9d3ebcb640b714e738c2"
136        ] = MzVersion.parse_mz("v0.111.0")
137
138    if scenario_class_name in {"OptbenchTPCHQ02", "OptbenchTPCHQ18", "OptbenchTPCHQ21"}:
139        # PR#28566 (Incorporate non-null information, and prevent its deletion) increased wallclock
140        min_ancestor_mz_version_per_commit[
141            "45d78090f8fea353dbdff9f1b2de463d475fabc3"
142        ] = MzVersion.parse_mz("v0.111.0")
143
144    if scenario_class_name == "ManyKafkaSourcesOnSameCluster":
145        # PR#28359 (Reapply "storage: wire up new reclock implementation") increased wallclock
146        min_ancestor_mz_version_per_commit[
147            "1937ca8b444a919e3077843980c97d61fc072252"
148        ] = MzVersion.parse_mz("v0.110.0")
149
150    if scenario_class_name == "ManyKafkaSourcesOnSameCluster":
151        # PR#28228 (storage/kafka: round-robin partition/worker assignment) increased wallclock
152        min_ancestor_mz_version_per_commit[
153            "256e1f839ba5243293e738bcd78d0f36c1be8f3e"
154        ] = MzVersion.parse_mz("v0.109.0")
155
156    if scenario_class_name == "MinMax":
157        # PR#27988 (adapter: always declare MV imports non-monotonic) increased wallclock and memory
158        min_ancestor_mz_version_per_commit[
159            "c18aa43828a7d2e9527151a0251c1f75a06d1469"
160        ] = MzVersion.parse_mz("v0.108.0")
161
162    if scenario_class_name == "AccumulateReductions":
163        # PR#26807 (compute: hydration status based on output frontiers) increased messages
164        min_ancestor_mz_version_per_commit[
165            "be0e50041169a5cac80c033b083c920b067d049f"
166        ] = MzVersion.parse_mz("v0.106.0")
167
168    if scenario_class_name == "SwapSchema":
169        # PR#27607 (catalog: Listen for updates in transactions) increased wallclock
170        min_ancestor_mz_version_per_commit[
171            "eef900de75d25fe854524dff9feeed8057e4bf79"
172        ] = MzVersion.parse_mz("v0.105.0")
173
174    if scenario_class_name == "MySqlInitialLoad":
175        # PR#27058 (storage: wire up new reclock implementation) increased memory usage
176        min_ancestor_mz_version_per_commit[
177            "10abb1cca257ffc3d605c99ed961e037bbf3fa51"
178        ] = MzVersion.parse_mz("v0.103.0")
179
180    if "OptbenchTPCH" in scenario_class_name:
181        # PR#26652 (explain: fix tracing fast path regression) significantly increased wallclock for OptbenchTPCH
182        min_ancestor_mz_version_per_commit[
183            "96c22562745f59010860bd825de5b4007a172c70"
184        ] = MzVersion.parse_mz("v0.97.0")
185        # PR#24155 (equivalence propagation) significantly increased wallclock for OptbenchTPCH
186        min_ancestor_mz_version_per_commit[
187            "3cfaa8207faa7df087942cd44311a3e7b4534c25"
188        ] = MzVersion.parse_mz("v0.92.0")
189
190    if scenario_class_name == "FastPathFilterNoIndex":
191        # PR#26084 (Optimize OffsetList) increased wallclock
192        min_ancestor_mz_version_per_commit[
193            "2abcd90ac3201b0235ea41c5db81bdd931a0fda0"
194        ] = MzVersion.parse_mz("v0.96.0")
195
196    if scenario_class_name == "ParallelDataflows":
197        # PR#26020 (Stage flatmap execution to consolidate as it goes) significantly increased wallclock
198        min_ancestor_mz_version_per_commit[
199            "da35946d636607a11fa27d5a8ea6e9939bf9525e"
200        ] = MzVersion.parse_mz("v0.93.0")
201
202    # add legacy entries
203    min_ancestor_mz_version_per_commit.update(
204        {
205            # insert newer commits at the top
206            # PR#25502 (JoinFusion across MFPs) increased number of messages
207            "62ea182963be5b956e13115b8ad39f7835fc4351": MzVersion.parse_mz("v0.91.0"),
208            # PR#24906 (Compute operator hydration status logging) increased number of messages against v0.88.1
209            "067ae870eef724f7eb5851b5745b9ff52b881481": MzVersion.parse_mz("v0.89.0"),
210            # PR#24918 (txn-wal: switch to a new operator protocol for lazy) increased number of messages against v0.86.1 (but got reverted in 0.87.1)
211            "b648576b52b8ba9bb3a4732f7022ab5c06ebed32": MzVersion.parse_mz("v0.87.0"),
212            # PR#23659 (txn-wal: enable in CI with "eager uppers") introduces regressions against v0.79.0
213            "c4f520a57a3046e5074939d2ea345d1c72be7079": MzVersion.parse_mz("v0.80.0"),
214            # PR#23421 (coord: smorgasbord of improvements for the crdb-backed timestamp oracle) introduces regressions against 0.78.13
215            "5179ebd39aea4867622357a832aaddcde951b411": MzVersion.parse_mz("v0.79.0"),
216            # insert newer commits at the top
217        }
218    )
219
220    return min_ancestor_mz_version_per_commit
221
222
223_MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_SCALABILITY_REGRESSIONS: dict[
224    str, MzVersion
225] = {
226    # insert newer commits at the top
227    # PR#31309 ([adapter] don't block on builtin table write in Session creation) increases latency for inserts
228    "e8c42c65afb7acd55eb7e530a92c89a9165f2e33": MzVersion.parse_mz("v0.133.0"),
229    # PR#30238 (adapter: Remove the global write lock) introduces regressions against v0.123.0
230    "98678454a334a470ceea46b126586c7e60a0d8a5": MzVersion.parse_mz("v0.124.0"),
231    # PR#28307 (Render regions for object build and let bindings) introduces regressions against v0.112.0
232    "ffcafa5b5c3e83845a868cf6103048c045b4f155": MzVersion.parse_mz("v0.113.0"),
233    # PR#23659 (txn-wal: enable in CI with "eager uppers") introduces regressions against v0.79.0
234    "c4f520a57a3046e5074939d2ea345d1c72be7079": MzVersion.parse_mz("v0.80.0"),
235    # PR#23421 (coord: smorgasbord of improvements for the crdb-backed timestamp oracle) introduces regressions against 0.78.13
236    "5179ebd39aea4867622357a832aaddcde951b411": MzVersion.parse_mz("v0.79.0"),
237    # insert newer commits at the top
238}
239"""
240Git revisions that are based on commits listed as keys require at least the version specified in the value.
241Note that specified versions do not necessarily need to be already published.
242Commits must be ordered descending by their date.
243"""
244
245_MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_CORRECTNESS_REGRESSIONS: dict[
246    str, MzVersion
247] = {
248    # insert newer commits at the top
249    # PR#29179: Add client_address to session
250    "deb8beb77ddb69895aad899cf2eab90a0a78585d": MzVersion.parse_mz("v0.118.0"),
251    # PR#24497 (Make sure variance never returns a negative number) changes DFR or CTF handling compared to v0.84.0
252    "82a5130a8466525c5b3bdb3eff845c7c34585774": MzVersion.parse_mz("v0.85.0"),
253}
254"""
255See: #_MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_PERFORMANCE_REGRESSIONS
256"""
257
258ANCESTOR_OVERRIDES_FOR_SCALABILITY_REGRESSIONS = (
259    _MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_SCALABILITY_REGRESSIONS
260)
261ANCESTOR_OVERRIDES_FOR_CORRECTNESS_REGRESSIONS = (
262    _MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_CORRECTNESS_REGRESSIONS
263)
def get_ancestor_overrides_for_performance_regressions( scenario_class: type[typing.Any], scale: str | None) -> dict[str, materialize.mz_version.MzVersion]:
 19def get_ancestor_overrides_for_performance_regressions(
 20    scenario_class: type[Any], scale: str | None
 21) -> dict[str, MzVersion]:
 22    """
 23    Git revisions that are based on commits listed as keys require at least the version specified in the value.
 24    Note that specified versions do not necessarily need to be already published.
 25    Commits must be ordered descending by their date.
 26    """
 27
 28    scenario_class_name = scenario_class.__name__
 29
 30    min_ancestor_mz_version_per_commit = dict()
 31
 32    if scenario_class_name in ("OrderBy", "FastPathFilterNoIndex"):
 33        # PR#34930 (Bump differential, timely and related) increases latency
 34        min_ancestor_mz_version_per_commit[
 35            "c20c82119261bab23c865bdfd1841348aa0acca3"
 36        ] = MzVersion.parse_mz("v26.12.0")
 37
 38    if scenario_class_name == "SwapSchema":
 39        # PR#29673 (adapter: derive implications from catalog changes) increases latency
 40        min_ancestor_mz_version_per_commit[
 41            "9a4ee6174553d4f14402e90927a05aa8cba37112"
 42        ] = MzVersion.parse_mz("v26.2.0")
 43
 44    if scenario_class_name in ("DifferentialJoin", "Retraction", "FinishOrderByLimit"):
 45        # PR#33979 (Enable active dataflow cancellation) increases latency
 46        min_ancestor_mz_version_per_commit[
 47            "e1944c939203eb29b84a18ce5153e2d99d157c1d"
 48        ] = MzVersion.parse_mz("v0.164.0")
 49
 50    if scenario_class_name == "CreateIndex":
 51        # PR#33938 (Update columnar, timely, differential) increases latency
 52        min_ancestor_mz_version_per_commit[
 53            "c28d0061a6c9e63ee50a5f555c5d90373d006686"
 54        ] = MzVersion.parse_mz("v0.164.0")
 55
 56    if scenario_class_name in ("CrossJoin", "AccumulateReductions"):
 57        # PR#31501 (Remove ChunkedStack and related) increases latency for inserts
 58        min_ancestor_mz_version_per_commit[
 59            "e91f9d5e47f5dddf1d5d1a3afa3c27907bdbb0a7"
 60        ] = MzVersion.parse_mz("v0.134.0")
 61
 62    if scenario_class_name == "ManySmallInserts":
 63        # PR#31309 ([adapter] don't block on builtin table write in Session creation) increases latency for inserts
 64        min_ancestor_mz_version_per_commit[
 65            "e8c42c65afb7acd55eb7e530a92c89a9165f2e33"
 66        ] = MzVersion.parse_mz("v0.133.0")
 67
 68    if scenario_class_name == "SwapSchema":
 69        # PR#30883 (Columnar in logging dataflows) increases Mz memory usage
 70        min_ancestor_mz_version_per_commit[
 71            "a077232ffcb76ef7498da7637fbc9e80aa88765c"
 72        ] = MzVersion.parse_mz("v0.131.0")
 73
 74    if scenario_class_name == "FastPathOrderByLimit":
 75        # PR#30872 (rust: Upgrade to 1.83.0) increases wallclock
 76        min_ancestor_mz_version_per_commit[
 77            "74ebdd68dd2e9ec860837d52866ab9db61a0a49e"
 78        ] = MzVersion.parse_mz("v0.129.0")
 79
 80    if scenario_class_name == "OptbenchTPCHQ01":
 81        # PR#30806 ([optimizer] report per-transform metrics) increases wallclock
 82        min_ancestor_mz_version_per_commit[
 83            "a5355b2e89fedef9f7a04a96b737f7434a8e3f62"
 84        ] = MzVersion.parse_mz("v0.128.0")
 85
 86    if scenario_class_name in ("KafkaUpsert", "KafkaUpsertUnique", "ParallelIngestion"):
 87        # PR#30617 (storage/kafka: use separate consumer for metadata probing)
 88        # adds 1s of delay to Kafka source startup
 89        min_ancestor_mz_version_per_commit[
 90            "9f7b634e6824f73d0effcdfa86c2b8b1642a4784"
 91        ] = MzVersion.parse_mz("v0.127.0")
 92    if scenario_class_name == "InsertMultiRow":
 93        # PR#30622 (Refactor how we run FoldConstants) increases wallclock
 94        min_ancestor_mz_version_per_commit[
 95            "a558d6bdc4b29abf79457eaba52914a0d6c805b7"
 96        ] = MzVersion.parse_mz("v0.127.0")
 97    if "OptbenchTPCH" in scenario_class_name:
 98        # PR#30602 (Replace ColumnKnowledge with EquivalencePropagation) increases wallclock
 99        min_ancestor_mz_version_per_commit[
100            "1bd45336f8335b3487153beb7ce57f6391a7cf9c"
101        ] = MzVersion.parse_mz("v0.126.0")
102
103    if "OptbenchTPCH" in scenario_class_name:
104        # PR#30506 (Remove NonNullable transform) increases wallclock
105        min_ancestor_mz_version_per_commit[
106            "6981cb35f6a64748293867beb67e74b804f9e723"
107        ] = MzVersion.parse_mz("v0.126.0")
108
109    if scenario_class_name == "KafkaUpsertUnique":
110        # PR#29718 (storage: continual feedback upsert operator) increases CPU and memory
111        min_ancestor_mz_version_per_commit[
112            "b16b6a2c71f6e52adcbe37988cb262c15074a63f"
113        ] = MzVersion.parse_mz("v0.125.0")
114
115    if scenario_class_name in (
116        "SmallClusters",
117        "AccumulateReductions",
118        "CreateIndex",
119        "ManySmallUpdates",
120        "FastPathOrderByLimit",
121        "FastPathFilterIndex",
122        "ParallelIngestion",
123        "SubscribeParallelTableWithIndex",
124        "DeltaJoinMaintained",
125        "Update",
126        "Retraction",
127    ):
128        # PR#28307 (Render regions for object build and let bindings) increases messages
129        min_ancestor_mz_version_per_commit[
130            "ffcafa5b5c3e83845a868cf6103048c045b4f155"
131        ] = MzVersion.parse_mz("v0.113.0")
132
133    if "OptbenchTPCH" in scenario_class_name:
134        # PR#28664 (Introduce MirScalarExpr::reduce_safely) increases wallclock
135        min_ancestor_mz_version_per_commit[
136            "0a570022e1b78a205d5d9d3ebcb640b714e738c2"
137        ] = MzVersion.parse_mz("v0.111.0")
138
139    if scenario_class_name in {"OptbenchTPCHQ02", "OptbenchTPCHQ18", "OptbenchTPCHQ21"}:
140        # PR#28566 (Incorporate non-null information, and prevent its deletion) increased wallclock
141        min_ancestor_mz_version_per_commit[
142            "45d78090f8fea353dbdff9f1b2de463d475fabc3"
143        ] = MzVersion.parse_mz("v0.111.0")
144
145    if scenario_class_name == "ManyKafkaSourcesOnSameCluster":
146        # PR#28359 (Reapply "storage: wire up new reclock implementation") increased wallclock
147        min_ancestor_mz_version_per_commit[
148            "1937ca8b444a919e3077843980c97d61fc072252"
149        ] = MzVersion.parse_mz("v0.110.0")
150
151    if scenario_class_name == "ManyKafkaSourcesOnSameCluster":
152        # PR#28228 (storage/kafka: round-robin partition/worker assignment) increased wallclock
153        min_ancestor_mz_version_per_commit[
154            "256e1f839ba5243293e738bcd78d0f36c1be8f3e"
155        ] = MzVersion.parse_mz("v0.109.0")
156
157    if scenario_class_name == "MinMax":
158        # PR#27988 (adapter: always declare MV imports non-monotonic) increased wallclock and memory
159        min_ancestor_mz_version_per_commit[
160            "c18aa43828a7d2e9527151a0251c1f75a06d1469"
161        ] = MzVersion.parse_mz("v0.108.0")
162
163    if scenario_class_name == "AccumulateReductions":
164        # PR#26807 (compute: hydration status based on output frontiers) increased messages
165        min_ancestor_mz_version_per_commit[
166            "be0e50041169a5cac80c033b083c920b067d049f"
167        ] = MzVersion.parse_mz("v0.106.0")
168
169    if scenario_class_name == "SwapSchema":
170        # PR#27607 (catalog: Listen for updates in transactions) increased wallclock
171        min_ancestor_mz_version_per_commit[
172            "eef900de75d25fe854524dff9feeed8057e4bf79"
173        ] = MzVersion.parse_mz("v0.105.0")
174
175    if scenario_class_name == "MySqlInitialLoad":
176        # PR#27058 (storage: wire up new reclock implementation) increased memory usage
177        min_ancestor_mz_version_per_commit[
178            "10abb1cca257ffc3d605c99ed961e037bbf3fa51"
179        ] = MzVersion.parse_mz("v0.103.0")
180
181    if "OptbenchTPCH" in scenario_class_name:
182        # PR#26652 (explain: fix tracing fast path regression) significantly increased wallclock for OptbenchTPCH
183        min_ancestor_mz_version_per_commit[
184            "96c22562745f59010860bd825de5b4007a172c70"
185        ] = MzVersion.parse_mz("v0.97.0")
186        # PR#24155 (equivalence propagation) significantly increased wallclock for OptbenchTPCH
187        min_ancestor_mz_version_per_commit[
188            "3cfaa8207faa7df087942cd44311a3e7b4534c25"
189        ] = MzVersion.parse_mz("v0.92.0")
190
191    if scenario_class_name == "FastPathFilterNoIndex":
192        # PR#26084 (Optimize OffsetList) increased wallclock
193        min_ancestor_mz_version_per_commit[
194            "2abcd90ac3201b0235ea41c5db81bdd931a0fda0"
195        ] = MzVersion.parse_mz("v0.96.0")
196
197    if scenario_class_name == "ParallelDataflows":
198        # PR#26020 (Stage flatmap execution to consolidate as it goes) significantly increased wallclock
199        min_ancestor_mz_version_per_commit[
200            "da35946d636607a11fa27d5a8ea6e9939bf9525e"
201        ] = MzVersion.parse_mz("v0.93.0")
202
203    # add legacy entries
204    min_ancestor_mz_version_per_commit.update(
205        {
206            # insert newer commits at the top
207            # PR#25502 (JoinFusion across MFPs) increased number of messages
208            "62ea182963be5b956e13115b8ad39f7835fc4351": MzVersion.parse_mz("v0.91.0"),
209            # PR#24906 (Compute operator hydration status logging) increased number of messages against v0.88.1
210            "067ae870eef724f7eb5851b5745b9ff52b881481": MzVersion.parse_mz("v0.89.0"),
211            # PR#24918 (txn-wal: switch to a new operator protocol for lazy) increased number of messages against v0.86.1 (but got reverted in 0.87.1)
212            "b648576b52b8ba9bb3a4732f7022ab5c06ebed32": MzVersion.parse_mz("v0.87.0"),
213            # PR#23659 (txn-wal: enable in CI with "eager uppers") introduces regressions against v0.79.0
214            "c4f520a57a3046e5074939d2ea345d1c72be7079": MzVersion.parse_mz("v0.80.0"),
215            # PR#23421 (coord: smorgasbord of improvements for the crdb-backed timestamp oracle) introduces regressions against 0.78.13
216            "5179ebd39aea4867622357a832aaddcde951b411": MzVersion.parse_mz("v0.79.0"),
217            # insert newer commits at the top
218        }
219    )
220
221    return min_ancestor_mz_version_per_commit

Git revisions that are based on commits listed as keys require at least the version specified in the value. Note that specified versions do not necessarily need to be already published. Commits must be ordered descending by their date.

ANCESTOR_OVERRIDES_FOR_SCALABILITY_REGRESSIONS = {'e8c42c65afb7acd55eb7e530a92c89a9165f2e33': MzVersion(major=0, minor=133, patch=0, prerelease=None, build=None), '98678454a334a470ceea46b126586c7e60a0d8a5': MzVersion(major=0, minor=124, patch=0, prerelease=None, build=None), 'ffcafa5b5c3e83845a868cf6103048c045b4f155': MzVersion(major=0, minor=113, patch=0, prerelease=None, build=None), 'c4f520a57a3046e5074939d2ea345d1c72be7079': MzVersion(major=0, minor=80, patch=0, prerelease=None, build=None), '5179ebd39aea4867622357a832aaddcde951b411': MzVersion(major=0, minor=79, patch=0, prerelease=None, build=None)}
ANCESTOR_OVERRIDES_FOR_CORRECTNESS_REGRESSIONS = {'deb8beb77ddb69895aad899cf2eab90a0a78585d': MzVersion(major=0, minor=118, patch=0, prerelease=None, build=None), '82a5130a8466525c5b3bdb3eff845c7c34585774': MzVersion(major=0, minor=85, patch=0, prerelease=None, build=None)}