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 ( 32 "MySqlInitialLoad", 33 "MySqlInitialLoadMultiWorkerSampled", 34 "MySqlInitialLoadMultiWorkerSingleTable", 35 ): 36 # PR#38094 (storage: Fast approximate snapshot partitioning) increased 37 # snapshot wallclock: integer primary keys are no longer partitioned, 38 # so MySqlInitialLoad reads serially, and approximate key probing is 39 # slower than the exact OFFSET sampler on small datasets (~30% on 40 # MySqlInitialLoadMultiWorkerSampled). 41 min_ancestor_mz_version_per_commit[ 42 "de8eac0d1683ffd788dfba6edaa88aef7f0f1740" 43 ] = MzVersion.parse_mz("v26.39.0") 44 45 if scenario_class_name == "FastPathFilterNoIndex": 46 # PR#38151 (Sql-150: Temporary objects to the catalog) increased wallclock by ~10% 47 min_ancestor_mz_version_per_commit[ 48 "f3b4f3f1becf6f56690360874e8aec111c38630d" 49 ] = MzVersion.parse_mz("v26.39.0") 50 51 if scenario_class_name in ("ManySmallUpdates", "Update"): 52 # PR#37923 (adapter: sequence read-then-write from the session task with OCC) increases wallclock for writes, and clusterd memory for ManySmallUpdates 53 min_ancestor_mz_version_per_commit[ 54 "4f0805a4d8d8e398f2fdfe10d5bdbe70b16924a4" 55 ] = MzVersion.parse_mz("v26.39.0") 56 57 if scenario_class_name == "ParallelDataflows": 58 # PR#32095 (Dictionary compressed arrangements) increased wallclock by ~10% 59 min_ancestor_mz_version_per_commit[ 60 "90644c483749ce746da002f69dbd8bd2835ef9d0" 61 ] = MzVersion.parse_mz("v26.29.0") 62 63 if scenario_class_name == "Retraction": 64 # PR#36386 (timely-util: switch Column::Align to Vec<u64>) increases clusterd memory 65 min_ancestor_mz_version_per_commit[ 66 "2571dcdc4b9a41359b5ee70054bb06423aab7c27" 67 ] = MzVersion.parse_mz("v26.24.0") 68 69 if scenario_class_name == "CrossJoin": 70 # PR#35328 (compute: move MV sink persist I/O off Timely thread) increases clusterd memory 71 min_ancestor_mz_version_per_commit[ 72 "4d8deb2de7b6a0fb8d7c9e5b0a682416bef1e5c2" 73 ] = MzVersion.parse_mz("v26.23.0") 74 75 if scenario_class_name in ("OrderBy", "FastPathFilterNoIndex"): 76 # PR#34930 (Bump differential, timely and related) increases latency 77 min_ancestor_mz_version_per_commit[ 78 "c20c82119261bab23c865bdfd1841348aa0acca3" 79 ] = MzVersion.parse_mz("v26.12.0") 80 81 if scenario_class_name == "SwapSchema": 82 # PR#29673 (adapter: derive implications from catalog changes) increases latency 83 min_ancestor_mz_version_per_commit[ 84 "9a4ee6174553d4f14402e90927a05aa8cba37112" 85 ] = MzVersion.parse_mz("v26.2.0") 86 87 if scenario_class_name in ("DifferentialJoin", "Retraction", "FinishOrderByLimit"): 88 # PR#33979 (Enable active dataflow cancellation) increases latency 89 min_ancestor_mz_version_per_commit[ 90 "e1944c939203eb29b84a18ce5153e2d99d157c1d" 91 ] = MzVersion.parse_mz("v0.164.0") 92 93 if scenario_class_name == "CreateIndex": 94 # PR#33938 (Update columnar, timely, differential) increases latency 95 min_ancestor_mz_version_per_commit[ 96 "c28d0061a6c9e63ee50a5f555c5d90373d006686" 97 ] = MzVersion.parse_mz("v0.164.0") 98 99 if scenario_class_name in ("CrossJoin", "AccumulateReductions"): 100 # PR#31501 (Remove ChunkedStack and related) increases latency for inserts 101 min_ancestor_mz_version_per_commit[ 102 "e91f9d5e47f5dddf1d5d1a3afa3c27907bdbb0a7" 103 ] = MzVersion.parse_mz("v0.134.0") 104 105 if scenario_class_name == "ManySmallInserts": 106 # PR#31309 ([adapter] don't block on builtin table write in Session creation) increases latency for inserts 107 min_ancestor_mz_version_per_commit[ 108 "e8c42c65afb7acd55eb7e530a92c89a9165f2e33" 109 ] = MzVersion.parse_mz("v0.133.0") 110 111 if scenario_class_name == "SwapSchema": 112 # PR#30883 (Columnar in logging dataflows) increases Mz memory usage 113 min_ancestor_mz_version_per_commit[ 114 "a077232ffcb76ef7498da7637fbc9e80aa88765c" 115 ] = MzVersion.parse_mz("v0.131.0") 116 117 if scenario_class_name == "FastPathOrderByLimit": 118 # PR#30872 (rust: Upgrade to 1.83.0) increases wallclock 119 min_ancestor_mz_version_per_commit[ 120 "74ebdd68dd2e9ec860837d52866ab9db61a0a49e" 121 ] = MzVersion.parse_mz("v0.129.0") 122 123 if scenario_class_name == "OptbenchTPCHQ01": 124 # PR#30806 ([optimizer] report per-transform metrics) increases wallclock 125 min_ancestor_mz_version_per_commit[ 126 "a5355b2e89fedef9f7a04a96b737f7434a8e3f62" 127 ] = MzVersion.parse_mz("v0.128.0") 128 129 if scenario_class_name in ("KafkaUpsert", "KafkaUpsertUnique", "ParallelIngestion"): 130 # PR#30617 (storage/kafka: use separate consumer for metadata probing) 131 # adds 1s of delay to Kafka source startup 132 min_ancestor_mz_version_per_commit[ 133 "9f7b634e6824f73d0effcdfa86c2b8b1642a4784" 134 ] = MzVersion.parse_mz("v0.127.0") 135 if scenario_class_name == "InsertMultiRow": 136 # PR#30622 (Refactor how we run FoldConstants) increases wallclock 137 min_ancestor_mz_version_per_commit[ 138 "a558d6bdc4b29abf79457eaba52914a0d6c805b7" 139 ] = MzVersion.parse_mz("v0.127.0") 140 if "OptbenchTPCH" in scenario_class_name: 141 # PR#30602 (Replace ColumnKnowledge with EquivalencePropagation) increases wallclock 142 min_ancestor_mz_version_per_commit[ 143 "1bd45336f8335b3487153beb7ce57f6391a7cf9c" 144 ] = MzVersion.parse_mz("v0.126.0") 145 146 if "OptbenchTPCH" in scenario_class_name: 147 # PR#30506 (Remove NonNullable transform) increases wallclock 148 min_ancestor_mz_version_per_commit[ 149 "6981cb35f6a64748293867beb67e74b804f9e723" 150 ] = MzVersion.parse_mz("v0.126.0") 151 152 if scenario_class_name == "KafkaUpsertUnique": 153 # PR#29718 (storage: continual feedback upsert operator) increases CPU and memory 154 min_ancestor_mz_version_per_commit[ 155 "b16b6a2c71f6e52adcbe37988cb262c15074a63f" 156 ] = MzVersion.parse_mz("v0.125.0") 157 158 if scenario_class_name in ( 159 "SmallClusters", 160 "AccumulateReductions", 161 "CreateIndex", 162 "ManySmallUpdates", 163 "FastPathOrderByLimit", 164 "FastPathFilterIndex", 165 "ParallelIngestion", 166 "SubscribeParallelTableWithIndex", 167 "DeltaJoinMaintained", 168 "Update", 169 "Retraction", 170 ): 171 # PR#28307 (Render regions for object build and let bindings) increases messages 172 min_ancestor_mz_version_per_commit[ 173 "ffcafa5b5c3e83845a868cf6103048c045b4f155" 174 ] = MzVersion.parse_mz("v0.113.0") 175 176 if "OptbenchTPCH" in scenario_class_name: 177 # PR#28664 (Introduce MirScalarExpr::reduce_safely) increases wallclock 178 min_ancestor_mz_version_per_commit[ 179 "0a570022e1b78a205d5d9d3ebcb640b714e738c2" 180 ] = MzVersion.parse_mz("v0.111.0") 181 182 if scenario_class_name in {"OptbenchTPCHQ02", "OptbenchTPCHQ18", "OptbenchTPCHQ21"}: 183 # PR#28566 (Incorporate non-null information, and prevent its deletion) increased wallclock 184 min_ancestor_mz_version_per_commit[ 185 "45d78090f8fea353dbdff9f1b2de463d475fabc3" 186 ] = MzVersion.parse_mz("v0.111.0") 187 188 if scenario_class_name == "ManyKafkaSourcesOnSameCluster": 189 # PR#28359 (Reapply "storage: wire up new reclock implementation") increased wallclock 190 min_ancestor_mz_version_per_commit[ 191 "1937ca8b444a919e3077843980c97d61fc072252" 192 ] = MzVersion.parse_mz("v0.110.0") 193 194 if scenario_class_name == "ManyKafkaSourcesOnSameCluster": 195 # PR#28228 (storage/kafka: round-robin partition/worker assignment) increased wallclock 196 min_ancestor_mz_version_per_commit[ 197 "256e1f839ba5243293e738bcd78d0f36c1be8f3e" 198 ] = MzVersion.parse_mz("v0.109.0") 199 200 if scenario_class_name == "MinMax": 201 # PR#27988 (adapter: always declare MV imports non-monotonic) increased wallclock and memory 202 min_ancestor_mz_version_per_commit[ 203 "c18aa43828a7d2e9527151a0251c1f75a06d1469" 204 ] = MzVersion.parse_mz("v0.108.0") 205 206 if scenario_class_name == "AccumulateReductions": 207 # PR#26807 (compute: hydration status based on output frontiers) increased messages 208 min_ancestor_mz_version_per_commit[ 209 "be0e50041169a5cac80c033b083c920b067d049f" 210 ] = MzVersion.parse_mz("v0.106.0") 211 212 if scenario_class_name == "SwapSchema": 213 # PR#27607 (catalog: Listen for updates in transactions) increased wallclock 214 min_ancestor_mz_version_per_commit[ 215 "eef900de75d25fe854524dff9feeed8057e4bf79" 216 ] = MzVersion.parse_mz("v0.105.0") 217 218 if scenario_class_name == "MySqlInitialLoad": 219 # PR#27058 (storage: wire up new reclock implementation) increased memory usage 220 min_ancestor_mz_version_per_commit[ 221 "10abb1cca257ffc3d605c99ed961e037bbf3fa51" 222 ] = MzVersion.parse_mz("v0.103.0") 223 224 if "OptbenchTPCH" in scenario_class_name: 225 # PR#26652 (explain: fix tracing fast path regression) significantly increased wallclock for OptbenchTPCH 226 min_ancestor_mz_version_per_commit[ 227 "96c22562745f59010860bd825de5b4007a172c70" 228 ] = MzVersion.parse_mz("v0.97.0") 229 # PR#24155 (equivalence propagation) significantly increased wallclock for OptbenchTPCH 230 min_ancestor_mz_version_per_commit[ 231 "3cfaa8207faa7df087942cd44311a3e7b4534c25" 232 ] = MzVersion.parse_mz("v0.92.0") 233 234 if scenario_class_name == "FastPathFilterNoIndex": 235 # PR#26084 (Optimize OffsetList) increased wallclock 236 min_ancestor_mz_version_per_commit[ 237 "2abcd90ac3201b0235ea41c5db81bdd931a0fda0" 238 ] = MzVersion.parse_mz("v0.96.0") 239 240 if scenario_class_name == "ParallelDataflows": 241 # PR#26020 (Stage flatmap execution to consolidate as it goes) significantly increased wallclock 242 min_ancestor_mz_version_per_commit[ 243 "da35946d636607a11fa27d5a8ea6e9939bf9525e" 244 ] = MzVersion.parse_mz("v0.93.0") 245 246 # add legacy entries 247 min_ancestor_mz_version_per_commit.update( 248 { 249 # insert newer commits at the top 250 # PR#25502 (JoinFusion across MFPs) increased number of messages 251 "62ea182963be5b956e13115b8ad39f7835fc4351": MzVersion.parse_mz("v0.91.0"), 252 # PR#24906 (Compute operator hydration status logging) increased number of messages against v0.88.1 253 "067ae870eef724f7eb5851b5745b9ff52b881481": MzVersion.parse_mz("v0.89.0"), 254 # 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) 255 "b648576b52b8ba9bb3a4732f7022ab5c06ebed32": MzVersion.parse_mz("v0.87.0"), 256 # PR#23659 (txn-wal: enable in CI with "eager uppers") introduces regressions against v0.79.0 257 "c4f520a57a3046e5074939d2ea345d1c72be7079": MzVersion.parse_mz("v0.80.0"), 258 # PR#23421 (coord: smorgasbord of improvements for the crdb-backed timestamp oracle) introduces regressions against 0.78.13 259 "5179ebd39aea4867622357a832aaddcde951b411": MzVersion.parse_mz("v0.79.0"), 260 # insert newer commits at the top 261 } 262 ) 263 264 return min_ancestor_mz_version_per_commit 265 266 267_MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_SCALABILITY_REGRESSIONS: dict[ 268 str, MzVersion 269] = { 270 # insert newer commits at the top 271 # PR#37923 (adapter: sequence read-then-write from the session task with OCC) reduces write throughput 272 "4f0805a4d8d8e398f2fdfe10d5bdbe70b16924a4": MzVersion.parse_mz("v26.39.0"), 273 # PR#31309 ([adapter] don't block on builtin table write in Session creation) increases latency for inserts 274 "e8c42c65afb7acd55eb7e530a92c89a9165f2e33": MzVersion.parse_mz("v0.133.0"), 275 # PR#30238 (adapter: Remove the global write lock) introduces regressions against v0.123.0 276 "98678454a334a470ceea46b126586c7e60a0d8a5": MzVersion.parse_mz("v0.124.0"), 277 # PR#28307 (Render regions for object build and let bindings) introduces regressions against v0.112.0 278 "ffcafa5b5c3e83845a868cf6103048c045b4f155": MzVersion.parse_mz("v0.113.0"), 279 # PR#23659 (txn-wal: enable in CI with "eager uppers") introduces regressions against v0.79.0 280 "c4f520a57a3046e5074939d2ea345d1c72be7079": MzVersion.parse_mz("v0.80.0"), 281 # PR#23421 (coord: smorgasbord of improvements for the crdb-backed timestamp oracle) introduces regressions against 0.78.13 282 "5179ebd39aea4867622357a832aaddcde951b411": MzVersion.parse_mz("v0.79.0"), 283 # insert newer commits at the top 284} 285""" 286Git revisions that are based on commits listed as keys require at least the version specified in the value. 287Note that specified versions do not necessarily need to be already published. 288Commits must be ordered descending by their date. 289""" 290 291_MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_CORRECTNESS_REGRESSIONS: dict[ 292 str, MzVersion 293] = { 294 # insert newer commits at the top 295 # PR#29179: Add client_address to session 296 "deb8beb77ddb69895aad899cf2eab90a0a78585d": MzVersion.parse_mz("v0.118.0"), 297 # PR#24497 (Make sure variance never returns a negative number) changes DFR or CTF handling compared to v0.84.0 298 "82a5130a8466525c5b3bdb3eff845c7c34585774": MzVersion.parse_mz("v0.85.0"), 299} 300""" 301See: #_MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_PERFORMANCE_REGRESSIONS 302""" 303 304ANCESTOR_OVERRIDES_FOR_SCALABILITY_REGRESSIONS = ( 305 _MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_SCALABILITY_REGRESSIONS 306) 307ANCESTOR_OVERRIDES_FOR_CORRECTNESS_REGRESSIONS = ( 308 _MIN_ANCESTOR_MZ_VERSION_PER_COMMIT_TO_ACCOUNT_FOR_CORRECTNESS_REGRESSIONS 309)
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 ( 33 "MySqlInitialLoad", 34 "MySqlInitialLoadMultiWorkerSampled", 35 "MySqlInitialLoadMultiWorkerSingleTable", 36 ): 37 # PR#38094 (storage: Fast approximate snapshot partitioning) increased 38 # snapshot wallclock: integer primary keys are no longer partitioned, 39 # so MySqlInitialLoad reads serially, and approximate key probing is 40 # slower than the exact OFFSET sampler on small datasets (~30% on 41 # MySqlInitialLoadMultiWorkerSampled). 42 min_ancestor_mz_version_per_commit[ 43 "de8eac0d1683ffd788dfba6edaa88aef7f0f1740" 44 ] = MzVersion.parse_mz("v26.39.0") 45 46 if scenario_class_name == "FastPathFilterNoIndex": 47 # PR#38151 (Sql-150: Temporary objects to the catalog) increased wallclock by ~10% 48 min_ancestor_mz_version_per_commit[ 49 "f3b4f3f1becf6f56690360874e8aec111c38630d" 50 ] = MzVersion.parse_mz("v26.39.0") 51 52 if scenario_class_name in ("ManySmallUpdates", "Update"): 53 # PR#37923 (adapter: sequence read-then-write from the session task with OCC) increases wallclock for writes, and clusterd memory for ManySmallUpdates 54 min_ancestor_mz_version_per_commit[ 55 "4f0805a4d8d8e398f2fdfe10d5bdbe70b16924a4" 56 ] = MzVersion.parse_mz("v26.39.0") 57 58 if scenario_class_name == "ParallelDataflows": 59 # PR#32095 (Dictionary compressed arrangements) increased wallclock by ~10% 60 min_ancestor_mz_version_per_commit[ 61 "90644c483749ce746da002f69dbd8bd2835ef9d0" 62 ] = MzVersion.parse_mz("v26.29.0") 63 64 if scenario_class_name == "Retraction": 65 # PR#36386 (timely-util: switch Column::Align to Vec<u64>) increases clusterd memory 66 min_ancestor_mz_version_per_commit[ 67 "2571dcdc4b9a41359b5ee70054bb06423aab7c27" 68 ] = MzVersion.parse_mz("v26.24.0") 69 70 if scenario_class_name == "CrossJoin": 71 # PR#35328 (compute: move MV sink persist I/O off Timely thread) increases clusterd memory 72 min_ancestor_mz_version_per_commit[ 73 "4d8deb2de7b6a0fb8d7c9e5b0a682416bef1e5c2" 74 ] = MzVersion.parse_mz("v26.23.0") 75 76 if scenario_class_name in ("OrderBy", "FastPathFilterNoIndex"): 77 # PR#34930 (Bump differential, timely and related) increases latency 78 min_ancestor_mz_version_per_commit[ 79 "c20c82119261bab23c865bdfd1841348aa0acca3" 80 ] = MzVersion.parse_mz("v26.12.0") 81 82 if scenario_class_name == "SwapSchema": 83 # PR#29673 (adapter: derive implications from catalog changes) increases latency 84 min_ancestor_mz_version_per_commit[ 85 "9a4ee6174553d4f14402e90927a05aa8cba37112" 86 ] = MzVersion.parse_mz("v26.2.0") 87 88 if scenario_class_name in ("DifferentialJoin", "Retraction", "FinishOrderByLimit"): 89 # PR#33979 (Enable active dataflow cancellation) increases latency 90 min_ancestor_mz_version_per_commit[ 91 "e1944c939203eb29b84a18ce5153e2d99d157c1d" 92 ] = MzVersion.parse_mz("v0.164.0") 93 94 if scenario_class_name == "CreateIndex": 95 # PR#33938 (Update columnar, timely, differential) increases latency 96 min_ancestor_mz_version_per_commit[ 97 "c28d0061a6c9e63ee50a5f555c5d90373d006686" 98 ] = MzVersion.parse_mz("v0.164.0") 99 100 if scenario_class_name in ("CrossJoin", "AccumulateReductions"): 101 # PR#31501 (Remove ChunkedStack and related) increases latency for inserts 102 min_ancestor_mz_version_per_commit[ 103 "e91f9d5e47f5dddf1d5d1a3afa3c27907bdbb0a7" 104 ] = MzVersion.parse_mz("v0.134.0") 105 106 if scenario_class_name == "ManySmallInserts": 107 # PR#31309 ([adapter] don't block on builtin table write in Session creation) increases latency for inserts 108 min_ancestor_mz_version_per_commit[ 109 "e8c42c65afb7acd55eb7e530a92c89a9165f2e33" 110 ] = MzVersion.parse_mz("v0.133.0") 111 112 if scenario_class_name == "SwapSchema": 113 # PR#30883 (Columnar in logging dataflows) increases Mz memory usage 114 min_ancestor_mz_version_per_commit[ 115 "a077232ffcb76ef7498da7637fbc9e80aa88765c" 116 ] = MzVersion.parse_mz("v0.131.0") 117 118 if scenario_class_name == "FastPathOrderByLimit": 119 # PR#30872 (rust: Upgrade to 1.83.0) increases wallclock 120 min_ancestor_mz_version_per_commit[ 121 "74ebdd68dd2e9ec860837d52866ab9db61a0a49e" 122 ] = MzVersion.parse_mz("v0.129.0") 123 124 if scenario_class_name == "OptbenchTPCHQ01": 125 # PR#30806 ([optimizer] report per-transform metrics) increases wallclock 126 min_ancestor_mz_version_per_commit[ 127 "a5355b2e89fedef9f7a04a96b737f7434a8e3f62" 128 ] = MzVersion.parse_mz("v0.128.0") 129 130 if scenario_class_name in ("KafkaUpsert", "KafkaUpsertUnique", "ParallelIngestion"): 131 # PR#30617 (storage/kafka: use separate consumer for metadata probing) 132 # adds 1s of delay to Kafka source startup 133 min_ancestor_mz_version_per_commit[ 134 "9f7b634e6824f73d0effcdfa86c2b8b1642a4784" 135 ] = MzVersion.parse_mz("v0.127.0") 136 if scenario_class_name == "InsertMultiRow": 137 # PR#30622 (Refactor how we run FoldConstants) increases wallclock 138 min_ancestor_mz_version_per_commit[ 139 "a558d6bdc4b29abf79457eaba52914a0d6c805b7" 140 ] = MzVersion.parse_mz("v0.127.0") 141 if "OptbenchTPCH" in scenario_class_name: 142 # PR#30602 (Replace ColumnKnowledge with EquivalencePropagation) increases wallclock 143 min_ancestor_mz_version_per_commit[ 144 "1bd45336f8335b3487153beb7ce57f6391a7cf9c" 145 ] = MzVersion.parse_mz("v0.126.0") 146 147 if "OptbenchTPCH" in scenario_class_name: 148 # PR#30506 (Remove NonNullable transform) increases wallclock 149 min_ancestor_mz_version_per_commit[ 150 "6981cb35f6a64748293867beb67e74b804f9e723" 151 ] = MzVersion.parse_mz("v0.126.0") 152 153 if scenario_class_name == "KafkaUpsertUnique": 154 # PR#29718 (storage: continual feedback upsert operator) increases CPU and memory 155 min_ancestor_mz_version_per_commit[ 156 "b16b6a2c71f6e52adcbe37988cb262c15074a63f" 157 ] = MzVersion.parse_mz("v0.125.0") 158 159 if scenario_class_name in ( 160 "SmallClusters", 161 "AccumulateReductions", 162 "CreateIndex", 163 "ManySmallUpdates", 164 "FastPathOrderByLimit", 165 "FastPathFilterIndex", 166 "ParallelIngestion", 167 "SubscribeParallelTableWithIndex", 168 "DeltaJoinMaintained", 169 "Update", 170 "Retraction", 171 ): 172 # PR#28307 (Render regions for object build and let bindings) increases messages 173 min_ancestor_mz_version_per_commit[ 174 "ffcafa5b5c3e83845a868cf6103048c045b4f155" 175 ] = MzVersion.parse_mz("v0.113.0") 176 177 if "OptbenchTPCH" in scenario_class_name: 178 # PR#28664 (Introduce MirScalarExpr::reduce_safely) increases wallclock 179 min_ancestor_mz_version_per_commit[ 180 "0a570022e1b78a205d5d9d3ebcb640b714e738c2" 181 ] = MzVersion.parse_mz("v0.111.0") 182 183 if scenario_class_name in {"OptbenchTPCHQ02", "OptbenchTPCHQ18", "OptbenchTPCHQ21"}: 184 # PR#28566 (Incorporate non-null information, and prevent its deletion) increased wallclock 185 min_ancestor_mz_version_per_commit[ 186 "45d78090f8fea353dbdff9f1b2de463d475fabc3" 187 ] = MzVersion.parse_mz("v0.111.0") 188 189 if scenario_class_name == "ManyKafkaSourcesOnSameCluster": 190 # PR#28359 (Reapply "storage: wire up new reclock implementation") increased wallclock 191 min_ancestor_mz_version_per_commit[ 192 "1937ca8b444a919e3077843980c97d61fc072252" 193 ] = MzVersion.parse_mz("v0.110.0") 194 195 if scenario_class_name == "ManyKafkaSourcesOnSameCluster": 196 # PR#28228 (storage/kafka: round-robin partition/worker assignment) increased wallclock 197 min_ancestor_mz_version_per_commit[ 198 "256e1f839ba5243293e738bcd78d0f36c1be8f3e" 199 ] = MzVersion.parse_mz("v0.109.0") 200 201 if scenario_class_name == "MinMax": 202 # PR#27988 (adapter: always declare MV imports non-monotonic) increased wallclock and memory 203 min_ancestor_mz_version_per_commit[ 204 "c18aa43828a7d2e9527151a0251c1f75a06d1469" 205 ] = MzVersion.parse_mz("v0.108.0") 206 207 if scenario_class_name == "AccumulateReductions": 208 # PR#26807 (compute: hydration status based on output frontiers) increased messages 209 min_ancestor_mz_version_per_commit[ 210 "be0e50041169a5cac80c033b083c920b067d049f" 211 ] = MzVersion.parse_mz("v0.106.0") 212 213 if scenario_class_name == "SwapSchema": 214 # PR#27607 (catalog: Listen for updates in transactions) increased wallclock 215 min_ancestor_mz_version_per_commit[ 216 "eef900de75d25fe854524dff9feeed8057e4bf79" 217 ] = MzVersion.parse_mz("v0.105.0") 218 219 if scenario_class_name == "MySqlInitialLoad": 220 # PR#27058 (storage: wire up new reclock implementation) increased memory usage 221 min_ancestor_mz_version_per_commit[ 222 "10abb1cca257ffc3d605c99ed961e037bbf3fa51" 223 ] = MzVersion.parse_mz("v0.103.0") 224 225 if "OptbenchTPCH" in scenario_class_name: 226 # PR#26652 (explain: fix tracing fast path regression) significantly increased wallclock for OptbenchTPCH 227 min_ancestor_mz_version_per_commit[ 228 "96c22562745f59010860bd825de5b4007a172c70" 229 ] = MzVersion.parse_mz("v0.97.0") 230 # PR#24155 (equivalence propagation) significantly increased wallclock for OptbenchTPCH 231 min_ancestor_mz_version_per_commit[ 232 "3cfaa8207faa7df087942cd44311a3e7b4534c25" 233 ] = MzVersion.parse_mz("v0.92.0") 234 235 if scenario_class_name == "FastPathFilterNoIndex": 236 # PR#26084 (Optimize OffsetList) increased wallclock 237 min_ancestor_mz_version_per_commit[ 238 "2abcd90ac3201b0235ea41c5db81bdd931a0fda0" 239 ] = MzVersion.parse_mz("v0.96.0") 240 241 if scenario_class_name == "ParallelDataflows": 242 # PR#26020 (Stage flatmap execution to consolidate as it goes) significantly increased wallclock 243 min_ancestor_mz_version_per_commit[ 244 "da35946d636607a11fa27d5a8ea6e9939bf9525e" 245 ] = MzVersion.parse_mz("v0.93.0") 246 247 # add legacy entries 248 min_ancestor_mz_version_per_commit.update( 249 { 250 # insert newer commits at the top 251 # PR#25502 (JoinFusion across MFPs) increased number of messages 252 "62ea182963be5b956e13115b8ad39f7835fc4351": MzVersion.parse_mz("v0.91.0"), 253 # PR#24906 (Compute operator hydration status logging) increased number of messages against v0.88.1 254 "067ae870eef724f7eb5851b5745b9ff52b881481": MzVersion.parse_mz("v0.89.0"), 255 # 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) 256 "b648576b52b8ba9bb3a4732f7022ab5c06ebed32": MzVersion.parse_mz("v0.87.0"), 257 # PR#23659 (txn-wal: enable in CI with "eager uppers") introduces regressions against v0.79.0 258 "c4f520a57a3046e5074939d2ea345d1c72be7079": MzVersion.parse_mz("v0.80.0"), 259 # PR#23421 (coord: smorgasbord of improvements for the crdb-backed timestamp oracle) introduces regressions against 0.78.13 260 "5179ebd39aea4867622357a832aaddcde951b411": MzVersion.parse_mz("v0.79.0"), 261 # insert newer commits at the top 262 } 263 ) 264 265 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 =
{'4f0805a4d8d8e398f2fdfe10d5bdbe70b16924a4': MzVersion(major=26, minor=39, patch=0, prerelease=None, build=None), '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)}