Skip to content

Commit

Permalink
fix: Fix decimal dyn float supertype (pola-rs#17464)
Browse files Browse the repository at this point in the history
  • Loading branch information
ritchie46 authored Jul 6, 2024
1 parent 2c1836b commit a9fb237
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
8 changes: 4 additions & 4 deletions crates/polars-core/src/utils/supertype.rs
Original file line number Diff line number Diff line change
Expand Up @@ -276,11 +276,11 @@ pub fn get_supertype_with_options(
},
(dt, Unknown(kind)) => {
match kind {
// numeric vs float|str -> always float|str
UnknownKind::Float | UnknownKind::Int(_) if dt.is_float() | dt.is_string() => Some(dt.clone()),
// numeric vs float|str -> always float|str|decimal
UnknownKind::Float | UnknownKind::Int(_) if dt.is_float() | dt.is_string() | dt.is_decimal() => Some(dt.clone()),
UnknownKind::Float if dt.is_integer() => Some(Unknown(UnknownKind::Float)),
// Materialize float
UnknownKind::Float if dt.is_float() => Some(dt.clone()),
// Materialize float to float or decimal
UnknownKind::Float if dt.is_float() | dt.is_decimal() => Some(dt.clone()),
// Materialize str
UnknownKind::Str if dt.is_string() | dt.is_enum() => Some(dt.clone()),
// Materialize str
Expand Down
6 changes: 6 additions & 0 deletions py-polars/tests/unit/datatypes/test_decimal.py
Original file line number Diff line number Diff line change
Expand Up @@ -479,3 +479,9 @@ def test_decimal_raise_oob_precision() -> None:
# max precision is 38.
with pytest.raises(pl.exceptions.InvalidOperationError):
df.select(b=pl.col("a").cast(pl.Decimal(76, 38)))


def test_decimal_dynamic_float_st() -> None:
assert pl.LazyFrame({"a": [D("2.0"), D("0.5")]}).filter(
pl.col("a").is_between(0.45, 0.9)
).collect().to_dict(as_series=False) == {"a": [D("0.5")]}

0 comments on commit a9fb237

Please sign in to comment.