Skip to content

Commit 9507ee2

Browse files
committed
Extract SQLColumns implementation
Co-Authored-By: alinalibq <[email protected]>
1 parent 19650fe commit 9507ee2

File tree

3 files changed

+981
-2
lines changed

3 files changed

+981
-2
lines changed

cpp/src/arrow/flight/sql/odbc/odbc_api.cc

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,8 +1194,24 @@ SQLRETURN SQLColumns(SQLHSTMT stmt, SQLWCHAR* catalog_name,
11941194
<< ", table_name_length: " << table_name_length
11951195
<< ", column_name: " << static_cast<const void*>(column_name)
11961196
<< ", column_name_length: " << column_name_length;
1197-
// GH-47720 TODO: Implement SQLColumns
1198-
return SQL_INVALID_HANDLE;
1197+
1198+
using ODBC::ODBCStatement;
1199+
using ODBC::SqlWcharToString;
1200+
1201+
return ODBCStatement::ExecuteWithDiagnostics(stmt, SQL_ERROR, [=]() {
1202+
ODBCStatement* statement = reinterpret_cast<ODBCStatement*>(stmt);
1203+
1204+
std::string catalog = SqlWcharToString(catalog_name, catalog_name_length);
1205+
std::string schema = SqlWcharToString(schema_name, schema_name_length);
1206+
std::string table = SqlWcharToString(table_name, table_name_length);
1207+
std::string column = SqlWcharToString(column_name, column_name_length);
1208+
1209+
statement->GetColumns(catalog_name ? &catalog : nullptr,
1210+
schema_name ? &schema : nullptr, table_name ? &table : nullptr,
1211+
column_name ? &column : nullptr);
1212+
1213+
return SQL_SUCCESS;
1214+
});
11991215
}
12001216

12011217
SQLRETURN SQLColAttribute(SQLHSTMT stmt, SQLUSMALLINT record_number,

cpp/src/arrow/flight/sql/odbc/tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ add_arrow_test(flight_sql_odbc_test
3434
SOURCES
3535
odbc_test_suite.cc
3636
odbc_test_suite.h
37+
columns_test.cc
3738
connection_attr_test.cc
3839
connection_test.cc
3940
statement_attr_test.cc

0 commit comments

Comments
 (0)