format: Strongly-typed error details
- Dominant language
- C#
- Stars
- 627
- Forks
- 217
- Avg merge
- 17h
- Merged PRs (30d)
- 57
Description
### What feature or improvement would you like to see?
The existing design for error details has a drawback which makes it hard to use generically without knowledge of the driver: the values it returns are untyped binary blobs. To overcome this, I propose deprecating it and replacing it with a new API:
```
AdbcStatusCode AdbcErrorGetDetails(const struct AdbcError* error,
struct ArrowSchema* schema, struct ArrowArray* data);
```
This would return all the key-value pairs of the error details at once, with `schema` describing the keys and `data` containing a single row with the values. The driver manager could in principle backfill implementations of `AdbcErrorGetDetailCount` and `AdbcErrorGetDetail` where the detail might consist of the scalar values in `schema`.
Contributor guide
Research direction
Start by reading the existing AdbcErrorGetDetailCount and AdbcErrorGetDetail APIs and the proposed AdbcErrorGetDetails signature in this issue. Review how ArrowSchema and ArrowArray represent the key-value details, then examine the driver-manager backfill described in the proposal. Done means the replacement API and its deprecation or compatibility behavior are agreed and implementable across the affected interfaces.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- api
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100