Why selecting from Postgres has a different behavior than from Snowflake and other DBs?

So, I noticed that if I connect to my snowflake DB via Livebook and do a query, it will return a Explorer.DataFrame struct.

If I do the exact same thing, but I connect to my Postgres DB, I will get a Postgrex.Result struct instead of a Explorer.DataFrame.

Why is that? Shouldn’t Livebook automatically convert it to a Explorer.DataFrame so we have a similar interface to work with the data independently of the database being used?

Ideally we would unify around Explorer.DataFrame but it has limitations:

  1. The support for Postgres in ADBC is limited (which is what we use to fill in the data frame)
  2. ADBC cannot support reach data types in Postgres, such as Geo, IPs, etc

So I think that, even once Postgres support in ADBC improves, we will still have a mechanism to do both.