apache / apache/arrow

[C++][FlightSQL][ODBC][SQLForeignKeys] Implement SQLForeignKeys catalog function

Open
#50,806 1 comment 0 reactions 1 assignee Claimed by @apurvapm View on GitHub
Component: C++ Type: enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.