ibis: bug: inconsistencies in results when exporting `to_pandas` and `to_pyarrow` when there are nulls in a not-nullable column

What happened?

Hello,

I am experiencing some strange behavior when performing a join between two tables:

Depending on the method (right or inner, vs outer or left), I am getting an empty output when calling to_pyarrow on the result of the latter two methods, whereas I am getting the expected result when calling to_pandas. On the other hand, the first two methods give the same result in arrow or pandas.

One of the tables I’m joining is a slightly complex expression with self joins and aggregations.

import ibis.deferred as ibd

conn.table("TABLE_2", schema="SCHEMA")
    .join(
        table_1_filtered, # result of various self-joins
        [
            ibd["date"] == table_1_filtered["date"],
            ibd["client"] == table_1_filtered["client"]
        ],
        how="outer"
    )

I get the same issue when calling .outer_join or left_join

What version of ibis are you using?

Latest 8.x.x branch

What backend(s) are you using, if any?

mssql

Relevant log output

I can provide additional info on tables if needed, though will need to anonymize the info to post it, so lmk if you think it would be relevant.

Code of Conduct

  • I agree to follow this project’s Code of Conduct

About this issue

  • Original URL
  • State: closed
  • Created 8 months ago
  • Comments: 21 (21 by maintainers)

Most upvoted comments

You can join our Zulip for asking questions/whatever else! https://ibis-project.zulipchat.com/

This looks like it was part of my accidental clobbering of a few commits from master while updating 8.x.x 😬.

I’ve since disabled force pushes to master to prevent this in the future.

I’ll PR this again, and I will merge it and update 8.x.x right after.

Verified that the same join which wasn’t working on my initial report is working fine now!

Hey @inigohidalgo! I just merged in #7554 which fixes the pyarrow exports – I know this won’t immediately impact you working off of the 8.x.x branch, but we’ll rebase it in once we’ve cut the next 7.x release (which really will be very soon)