-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
TileDB: migrate away from deprecated APIs #9725
Conversation
@teo-tsirpanis Thanks. I was just starting working on other TileDB updates coordinated by @perrygeo. |
You may also want to include the following changes:
|
@teo-tsirpanis so, the idea is to remove those deprecated TileDB deprecated API in a future TileDB version ? When that will be ? Because GDAL 3.9 is soon to be released (it has been branched off a few hours ago from master) and will have a lifetime of about 6 months. So if a TileDB version without the deprecated API is going to land soon, it means that we will have to backport those changes to 3.9 too and raise the minimum to TileDB 2.15 |
@teo-tsirpanis I've added in your branch a commit fixing a runtime crash in the tests, and another one to implement #9725 (comment) |
Thanks! |
I've added a few follow-up cleanup commits due to TileDB >= 2.15 being required |
@rouault we just recently added this infrastructure in the build system to disable deprecated APIs, as a transitional step to actually removing them. The tentative hope was to:
Given GDAL's usage and lifecycle, we can be flexible about point (2) and delay removal until end-of-year if it is not possible to backport this within the 3.9 lifecycle (I can understand that such a change will make conda and other packaging much more difficult). (cc @KiterLuc) |
@ihnorton I don't really anticipate packaging issues by requiring TileDB >= 2.15, as most people that will package GDAL 3.9 will probably use up to date TileDB too. Conda-forge already ships TileDB 2.22 . Alpine Linux is a 2.17.4 (https://pkgs.alpinelinux.org/packages?name=tiledb&branch=edge&repo=&arch=&maintainer=). |
ok, merging this, and backporting it to 3.9 in time for 3.9.0 |
What does this PR do?
This PR updates the TileDB backend to stop using deprecated TileDB APIs. The changes are straightforward and can be divided into three categories:
query.set_buffer(name, offsets, data)
→query.set_data_buffer(name, data); query.set_offsets_buffer(name, offsets)
offsets
anddata
are usuallystd::vector
s, but in some cases were pairs of pointers and lengthstiledb::Array(ctx, path, mode, timestamp)
→tiledb::Array(ctx, path, mode, tiledb::TemporalPolicy(tiledb::TimeTravel, timestamp))
query.set_subarray(subarray)
→tiledb::Subarray subarray_obj(ctx, array); subarray_obj.set_subarray(subarray); query.set_subarray(subarray_obj);
Validated by successfully building the GDAL library with a special build of TileDB that excludes all deprecated APIs (TileDB-Inc/TileDB#4887).
What are related issues/pull requests?
Tasklist
clang-format
on all files I changed