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