Skip to content

Commit aebac29

Browse files
committed
Develop getter for tests
1 parent 2c2c74d commit aebac29

File tree

2 files changed

+193
-105
lines changed

2 files changed

+193
-105
lines changed

cpp/src/arrow/flight/sql/odbc/odbc_impl/odbc_statement.cc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,14 @@ void ODBCStatement::GetStmtAttr(SQLINTEGER statement_attribute, SQLPOINTER outpu
375375
return;
376376
case SQL_ATTR_PARAM_BIND_TYPE:
377377
current_apd_->GetHeaderField(SQL_DESC_BIND_TYPE, output, buffer_size, str_len_ptr);
378+
if (output) {
379+
// Convert SQLINTEGER output to SQLULEN, since SQL_DESC_BIND_TYPE is SQLINTEGER
380+
// and SQL_ATTR_PARAM_BIND_TYPE is SQLULEN
381+
SQLINTEGER* output_int_ptr = reinterpret_cast<SQLINTEGER*>(output);
382+
SQLINTEGER output_int = *output_int_ptr;
383+
SQLULEN* typed_output = reinterpret_cast<SQLULEN*>(output);
384+
*typed_output = static_cast<SQLULEN>(output_int);
385+
}
378386
return;
379387
case SQL_ATTR_PARAM_OPERATION_PTR:
380388
current_apd_->GetHeaderField(SQL_DESC_ARRAY_STATUS_PTR, output, buffer_size,
@@ -398,6 +406,14 @@ void ODBCStatement::GetStmtAttr(SQLINTEGER statement_attribute, SQLPOINTER outpu
398406
return;
399407
case SQL_ATTR_ROW_BIND_TYPE:
400408
current_ard_->GetHeaderField(SQL_DESC_BIND_TYPE, output, buffer_size, str_len_ptr);
409+
if (output) {
410+
// Convert SQLINTEGER output to SQLULEN, since SQL_DESC_BIND_TYPE is SQLINTEGER
411+
// and SQL_ATTR_ROW_BIND_TYPE is SQLULEN
412+
SQLINTEGER* output_int_ptr = reinterpret_cast<SQLINTEGER*>(output);
413+
SQLINTEGER output_int = *output_int_ptr;
414+
SQLULEN* typed_output = reinterpret_cast<SQLULEN*>(output);
415+
*typed_output = static_cast<SQLULEN>(output_int);
416+
}
401417
return;
402418
case SQL_ATTR_ROW_OPERATION_PTR:
403419
current_ard_->GetHeaderField(SQL_DESC_ARRAY_STATUS_PTR, output, buffer_size,

0 commit comments

Comments
 (0)