[C++][FlightSQL][ODBC][SQLForeignKeys] Implement SQLForeignKeys catalog function
- Dominant language
- C++
- Stars
- 17.1k
- Forks
- 4.3k
- Avg merge
- 3d 13h
- Merged PRs (30d)
- 88
Description
### Describe the enhancement requested
`SQLForeignKeys` is currently an unimplemented placeholder in the Arrow Flight SQL ODBC driver. In `cpp/src/arrow/flight/sql/odbc/entry_points.cc`, the entry point logs its arguments and then throws:
```
arrow::flight::sql::odbc::DriverException("SQLForeignKeysW is not implemented", "IM001")
```
The placeholder was added in #47725 with the intent that follow-up PRs would implement each API. This issue tracks implementing `SQLForeignKeys`.
The underlying capability already exists on the Flight SQL C++ client (`cpp/src/arrow/flight/sql/client.h`). Per the ODBC spec, `SQLForeignKeys` maps to different RPCs depending on which table arguments are provided: `GetExportedKeys()` (PK table only), `GetImportedKeys()` (FK table only), and `GetCrossReference()` (both).
Ref (SQLForeignKeys spec): https://learn.microsoft.com/en-us/sql/odbc/reference/syntax/sqlforeignkeys-function
Parent issue: https://github.com/apache/arrow/issues/30622
### Component(s)
C++
Contributor guide
Assessment
This issue has not been assessed yet.