Skip to content

Commit da88016

Browse files
committed
Extract SQLColumns implementation
Co-Authored-By: alinalibq <[email protected]>
1 parent 42f27ab commit da88016

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
@@ -935,8 +935,24 @@ SQLRETURN SQLColumns(SQLHSTMT stmt, SQLWCHAR* catalog_name,
935935
<< ", table_name_length: " << table_name_length
936936
<< ", column_name: " << static_cast<const void*>(column_name)
937937
<< ", column_name_length: " << column_name_length;
938-
// GH-47720 TODO: Implement SQLColumns
939-
return SQL_INVALID_HANDLE;
938+
939+
using ODBC::ODBCStatement;
940+
using ODBC::SqlWcharToString;
941+
942+
return ODBCStatement::ExecuteWithDiagnostics(stmt, SQL_ERROR, [=]() {
943+
ODBCStatement* statement = reinterpret_cast<ODBCStatement*>(stmt);
944+
945+
std::string catalog = SqlWcharToString(catalog_name, catalog_name_length);
946+
std::string schema = SqlWcharToString(schema_name, schema_name_length);
947+
std::string table = SqlWcharToString(table_name, table_name_length);
948+
std::string column = SqlWcharToString(column_name, column_name_length);
949+
950+
statement->GetColumns(catalog_name ? &catalog : nullptr,
951+
schema_name ? &schema : nullptr, table_name ? &table : nullptr,
952+
column_name ? &column : nullptr);
953+
954+
return SQL_SUCCESS;
955+
});
940956
}
941957

942958
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_test.cc
3839
# Enable Protobuf cleanup after test execution
3940
# GH-46889: move protobuf_test_util to a more common location

0 commit comments

Comments
 (0)