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

[Format][C] Introducing new API functions in a backwards compatible way #317

Closed
lidavidm opened this issue Jan 6, 2023 · 0 comments · Fixed by #692 or #971
Closed

[Format][C] Introducing new API functions in a backwards compatible way #317

lidavidm opened this issue Jan 6, 2023 · 0 comments · Fixed by #692 or #971
Assignees

Comments

@lidavidm
Copy link
Member

lidavidm commented Jan 6, 2023

This issue proposes a way to manage API additions for C. (Go and Java are easier.)

  • New structs and constants are OK without breaking compatibility.
  • Existing structs, function prototypes, and constant values cannot be changed or renamed.
  • New functions are OK but require adding a new driver struct.

That is, adding new functions will require us to do this:

struct AdbcDriver { /* ... */ };
/* ADBC API version 1.1.0 */
struct AdbcDriver110 {
  struct AdbcDriver base;

  /* New function prototypes go here */
};

When a driver is initialized, it is given a version ID and a pointer to one of these tables. A driver implementing 1.0.0 will not recognize the new version ID and will return an error. A driver implementing 1.1.0 should ideally be able to recognize both the version ID for 1.0.0 and 1.1.0.

The driver manager can manage this: it will try 1.1.0, failing that, it will try 1.0.0 and polyfill the new functions. The driver manager would always expose a 1.1.0 API.

We should aim to 'batch up' additions of new functions to avoid implementation complexity. Hence why I've created the milestone on GitHub. Also, we should figure out how to handle this with respect to voting (since this is a 'format') and merging. Possibly, new API specifications should get merged into a branch, which can be merged/cherry-picked into the main branch after the vote. This lets us prototype the new implementations alongside the new specification as well.

@lidavidm lidavidm added this to the ADBC API Specification 1.1.0 milestone Jan 6, 2023
@lidavidm lidavidm self-assigned this May 12, 2023
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 12, 2023
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 12, 2023
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 12, 2023
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 18, 2023
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 18, 2023
Fixes apache#317.

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 19, 2023
Fixes apache#317.

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 19, 2023
Fixes apache#317.

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 22, 2023
Fixes apache#317.

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 22, 2023
Fixes apache#317.

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 22, 2023
Fixes apache#317.

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 22, 2023
Fixes apache#317.

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 22, 2023
Fixes apache#317.

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue May 22, 2023
Fixes apache#317.

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
lidavidm added a commit that referenced this issue Jun 6, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit to lidavidm/arrow-adbc that referenced this issue Jun 19, 2023
Fixes apache#317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Jun 23, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Jun 27, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Jul 11, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Jul 20, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Jul 21, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Aug 3, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Aug 10, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Aug 10, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Aug 28, 2023
Fixes #317.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
lidavidm added a commit that referenced this issue Aug 28, 2023
Fixes #55.
Fixes #317.
Fixes #318.
Fixes #319.
Fixes #442.
Fixes #458.
Fixes #459.
Fixes #541.
Fixes #620.
Fixes #685.
Fixes #736.
Fixes #755.
Fixes #939.
Fixes #940.
Fixes #942.
Fixes #962.

---------

Co-authored-by: Matt Topol <zotthewizard@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Co-authored-by: Will Jones <willjones127@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant