Skip to content

Commit 082eb6e

Browse files
committed
Extract SQLColumns implementation
Co-Authored-By: alinalibq <[email protected]>
1 parent e90bacd commit 082eb6e

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
@@ -1137,8 +1137,24 @@ SQLRETURN SQLColumns(SQLHSTMT stmt, SQLWCHAR* catalog_name,
11371137
<< ", table_name_length: " << table_name_length
11381138
<< ", column_name: " << static_cast<const void*>(column_name)
11391139
<< ", column_name_length: " << column_name_length;
1140-
// GH-47720 TODO: Implement SQLColumns
1141-
return SQL_INVALID_HANDLE;
1140+
1141+
using ODBC::ODBCStatement;
1142+
using ODBC::SqlWcharToString;
1143+
1144+
return ODBCStatement::ExecuteWithDiagnostics(stmt, SQL_ERROR, [=]() {
1145+
ODBCStatement* statement = reinterpret_cast<ODBCStatement*>(stmt);
1146+
1147+
std::string catalog = SqlWcharToString(catalog_name, catalog_name_length);
1148+
std::string schema = SqlWcharToString(schema_name, schema_name_length);
1149+
std::string table = SqlWcharToString(table_name, table_name_length);
1150+
std::string column = SqlWcharToString(column_name, column_name_length);
1151+
1152+
statement->GetColumns(catalog_name ? &catalog : nullptr,
1153+
schema_name ? &schema : nullptr, table_name ? &table : nullptr,
1154+
column_name ? &column : nullptr);
1155+
1156+
return SQL_SUCCESS;
1157+
});
11421158
}
11431159

11441160
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)