You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
expect_column_pair_values_a_to_be_greater_than_b returns opposite verdicts on pandas vs sql engines for null pairs (default ignore_row_if path) #12264
expect_column_pair_values_a_to_be_greater_than_b gives opposite verdicts on pandas vs sql execution engines for the same data when nulls are involved: single-null pairs are counted as unexpected values on pandas and silently dropped on sqlite (and presumably other sqlalchemy engines, since it falls out of sql null comparison semantics).
the same divergence without mostly: partial_unexpected_list is [(1.0, 2.0), (nan, 4.0), (7.0, nan)] on pandas vs [(1.0, 2.0)] on sqlite.
with mostly=0.5 the two engines return opposite success values for identical inputs, so a checkpoint that passes in one environment fails in the other purely from null handling.
ignore_row_if defaults to both_values_are_missing in the docs, so pandas appears to follow the documented default while the sql implementation behaves as if it were either_value_is_missing. related closed issues (#9748) cover explicit ignore_row_if values misbehaving on pandas, not the default-path cross-engine split.
expected behavior
the default null policy should be the same across execution engines: either count single-null pairs as unexpected everywhere (pandas behavior, matches the documented default) or drop them everywhere. happy to look at the sqlalchemy map provider if maintainers confirm which semantics are intended.
Activity
joshua-stauffer commentedon Sep 29, 2026
thanks for the bug report @ptimizeroracle! this was previously reported in #12252, so I'm closing it as duplicate