@@ -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
942958SQLRETURN SQLColAttribute (SQLHSTMT stmt, SQLUSMALLINT record_number,
0 commit comments