Skip to content

Commit 27ae3d8

Browse files
version consistency: provide evaluation strategy to ignore filter (#29443)
1 parent 170644f commit 27ae3d8

File tree

3 files changed

+35
-6
lines changed

3 files changed

+35
-6
lines changed

misc/python/materialize/output_consistency/execution/evaluation_strategy.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,3 +395,17 @@ def is_other_db_evaluation_strategy(evaluation_key: EvaluationStrategyKey) -> bo
395395
EvaluationStrategyKey.MZ_DATAFLOW_RENDERING_OTHER_DB,
396396
EvaluationStrategyKey.MZ_CONSTANT_FOLDING_OTHER_DB,
397397
}
398+
399+
400+
def is_data_flow_rendering(evaluation_key: EvaluationStrategyKey) -> bool:
401+
return evaluation_key in {
402+
EvaluationStrategyKey.MZ_DATAFLOW_RENDERING,
403+
EvaluationStrategyKey.MZ_DATAFLOW_RENDERING_OTHER_DB,
404+
}
405+
406+
407+
def is_constant_folding(evaluation_key: EvaluationStrategyKey) -> bool:
408+
return evaluation_key in {
409+
EvaluationStrategyKey.MZ_CONSTANT_FOLDING,
410+
EvaluationStrategyKey.MZ_CONSTANT_FOLDING_OTHER_DB,
411+
}

misc/python/materialize/version_consistency/ignore_filter/version_consistency_ignore_filter.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,26 +53,31 @@
5353

5454

5555
class VersionConsistencyIgnoreFilter(GenericInconsistencyIgnoreFilter):
56-
def __init__(self, mz1_version: MzVersion, mz2_version: MzVersion):
56+
def __init__(self, mz1_version: MzVersion, mz2_version: MzVersion, uses_dfr: bool):
5757
lower_version, higher_version = (
5858
(mz1_version, mz2_version)
5959
if mz1_version < mz2_version
6060
else (mz2_version, mz1_version)
6161
)
6262
super().__init__(
63-
VersionPreExecutionInconsistencyIgnoreFilter(lower_version, higher_version),
63+
VersionPreExecutionInconsistencyIgnoreFilter(
64+
lower_version, higher_version, uses_dfr
65+
),
6466
VersionPostExecutionInconsistencyIgnoreFilter(
65-
lower_version, higher_version
67+
lower_version, higher_version, uses_dfr
6668
),
6769
)
6870

6971

7072
class VersionPreExecutionInconsistencyIgnoreFilter(
7173
PreExecutionInconsistencyIgnoreFilterBase
7274
):
73-
def __init__(self, lower_version: MzVersion, higher_version: MzVersion):
75+
def __init__(
76+
self, lower_version: MzVersion, higher_version: MzVersion, uses_dfr: bool
77+
):
7478
self.lower_version = lower_version
7579
self.higher_version = higher_version
80+
self.uses_dfr = uses_dfr
7681

7782
def shall_ignore_expression(
7883
self, expression: Expression, row_selection: DataRowSelection
@@ -184,9 +189,12 @@ def shall_ignore_expression(
184189
class VersionPostExecutionInconsistencyIgnoreFilter(
185190
PostExecutionInconsistencyIgnoreFilterBase
186191
):
187-
def __init__(self, lower_version: MzVersion, higher_version: MzVersion):
192+
def __init__(
193+
self, lower_version: MzVersion, higher_version: MzVersion, uses_dfr: bool
194+
):
188195
self.lower_version = lower_version
189196
self.higher_version = higher_version
197+
self.uses_dfr = uses_dfr
190198

191199
def _shall_ignore_success_mismatch(
192200
self,

misc/python/materialize/version_consistency/version_consistency_test.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,14 @@ def create_inconsistency_ignore_filter(self) -> GenericInconsistencyIgnoreFilter
127127
assert self.mz1_version is not None
128128
assert self.mz2_version is not None
129129

130-
return VersionConsistencyIgnoreFilter(self.mz1_version, self.mz2_version)
130+
assert (
131+
self.evaluation_strategy_name is not None
132+
), "Evaluation strategy name is not initialized"
133+
134+
uses_dfr = self.evaluation_strategy_name == EVALUATION_STRATEGY_NAME_DFR
135+
return VersionConsistencyIgnoreFilter(
136+
self.mz1_version, self.mz2_version, uses_dfr
137+
)
131138

132139
def create_evaluation_strategies(
133140
self, sql_executors: SqlExecutors

0 commit comments

Comments
 (0)