Skip to content

feat: allow compatibility with more arrow and adbc versions - #68

Closed
carlvoller wants to merge 1 commit into
ClickHouse:mainfrom
carlvoller:main
Closed

feat: allow compatibility with more arrow and adbc versions#68
carlvoller wants to merge 1 commit into
ClickHouse:mainfrom
carlvoller:main

Conversation

@carlvoller

Copy link
Copy Markdown

Summary

Wanted to try adbc_clickhouse in two of my existing projects, and just my luck my projects are using Arrow v57 and v59, not v58 which was explicitly constrained in adbc_clickhouse's Cargo.toml. Looking through the repo, doesn't seem like anything strictly relies on Arrow v58 and adbc_core v0.23. Would be nice if the range of supported arrow versions be widened.

I believe this might require a change in https://github.com/ClickHouse/clickhouse-rs/tree/main/ext-arrow which also strictly uses Arrow v58. If you're open to this change, I'm happy to open a PR in clickhouse-rs too.

Checklist

Delete items not relevant to your PR:

  • A human-readable description of the changes was provided so that we can include it in CHANGELOG later

@CLAassistant

CLAassistant commented Aug 1, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@abonander

Copy link
Copy Markdown
Collaborator

Unfortunately, Cargo is not designed to work like this. Those versions are not guaranteed to unify. With a random cargo update, you could end up with adbc_clickhouse linking the latest versions of those crates and your project still linking the old ones and then you'd just have a mess of confusing compiler errors.

I wrote a little blurb explaining this for the clickhouse-ext-arrow crate: https://github.com/ClickHouse/clickhouse-rs/tree/main/ext-arrow#what-about-a-version-range

This is also mentioned briefly in the Cargo book (see the example just before the linked section): https://doc.rust-lang.org/cargo/reference/resolver.html#version-incompatibility-hazards

Part of the idea of adding the concept of public and private dependencies to Cargo was to make the resolver take this into account and avoid choosing incompatible versions, but this ends up being a very hard (like, NP-hard I think) problem to solve in the general case: rust-lang/rust#44663 (comment)

Now that adbc_core 0.24.0 is out linking arrow 59.0.0 though, we could just release adbc_clickhouse 0.2.0 targeting that.

@carlvoller

Copy link
Copy Markdown
Author

Hi @abonander,

Yea sorry I didn't come across the blurb you wrote in clickhouse-ext-arrow. I just saw that in https://github.com/apache/arrow-adbc/blob/main/rust/Cargo.toml the adbc_core crate specifies a range of ">=58, <60" for all of its arrow dependencies and assumed it would be okay to do it here too. Didn't realise just how much of a mess this package dependency resolution thing can become once we start allowing this.

It would be really helpful if you guys are open to releasing an adbc_clickhouse 0.2.0 that supports arrow 59.0.0. But I understand if thats not a priority right now. I've spent the past week trying to align my projects to use arrow 58.0.0 consistently everywhere anyway just so I can use adbc_clickhouse.

Regardless, thank you so much for taking your time to consider this. I really appreciate it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants