Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using two major versions #294

Closed
frbvianna opened this issue Feb 21, 2025 · 6 comments
Closed

Using two major versions #294

frbvianna opened this issue Feb 21, 2025 · 6 comments

Comments

@frbvianna
Copy link

frbvianna commented Feb 21, 2025

Describe the usage question you have. Please include as many useful details as possible.

Hi,

I have a use case where I might need to consume e.g. Arrow v16 data from API 'X' but then return it in Arrow v18 to make it compatible with API 'Y'.

Although a very simplified example, the following is not feasible in Go:

import (
	arrowv16 "github.com/apache/arrow/go/v16/arrow"
	arrowv18 "github.com/apache/arrow-go/v18/arrow"
)

func main() {
	var recv16 arrowv16.Record
	var recv18 arrowv18.Record

	recv18 = recv16
	// compile error
}

Is there a recommended way to handle this sort of scenario?

Component(s)

Release

@zeroshade
Copy link
Member

The data itself should be completely compatible, this is a dependency issue honestly. Which library are you attempting to utilize which is currently using Arrow v16? Can you get them to update to Arrow v18?

@frbvianna
Copy link
Author

The data itself should be completely compatible, this is a dependency issue honestly. Which library are you attempting to utilize which is currently using Arrow v16? Can you get them to update to Arrow v18?

...I just realized that the latest go/adbc/driver/snowflake version is using Arrow v18. Not sure why I thought it was using v16, sorry. It would be the API 'X' in my example.
Still curious as to how this would have to be handled, but I guess I don't personally have this issue after all.

@zeroshade
Copy link
Member

Currently the gosnowflake driver being used under the hood by ADBC for snowflake is still using v16 (currently working on upgrading that to v18!). The way it is being used is that we get the raw io.Reader from gosnowflake and construct the ipc reader in the ADBC implementation to construct v18 records rather than having to jump through hoops, since as I mentioned the raw data is perfectly compatible.

@zeroshade
Copy link
Member

I'm gonna close this for now, but feel free to reopen if this becomes relevant again

@frbvianna
Copy link
Author

Currently the gosnowflake driver being used under the hood by ADBC for snowflake is still using v16 (currently working on upgrading that to v18!). The way it is being used is that we get the raw io.Reader from gosnowflake and construct the ipc reader in the ADBC implementation to construct v18 records rather than having to jump through hoops, since as I mentioned the raw data is perfectly compatible.

Ahh, that's probably where the v16 came from, then. Thanks for pointing that out.
Do major updates for arrow-go in the arrow-adbc/go/adbc module accompany the release somehow, or should we expect that there might be some delay?

@zeroshade
Copy link
Member

The libraries are technically managed separately, a major update for arrow-go will not immediately result in an accompanying ADBC release, there would likely be some delay (on the order of days) as I would likely update it shortly after the release.

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

No branches or pull requests

2 participants