Skip to content

Commit e495122

Browse files
authored
Develop utility getters for ODBC APIs
* Develop getter for tests Need to verify the development with community * Add SQLGetInfo getters Types added: - SQLUSMALLINT - SQLUINTEGER - SQLULEN - SQLWCHAR Prototype `TestSQLGetInfoNullCollation` test * Add comments * Swap EQ statements to have `value` as second input * Add getters for SQLColAttribute - string getter - number getter Plus renaming tests SQLColAttribute prototype `TestSQLColAttributeBasetable_name` * Use PascalCase for function names * Fix rest of PascalCase functions
1 parent ba8029b commit e495122

File tree

4 files changed

+994
-522
lines changed

4 files changed

+994
-522
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
@@ -399,6 +399,14 @@ void ODBCStatement::GetStmtAttr(SQLINTEGER statement_attribute, SQLPOINTER outpu
399399
return;
400400
case SQL_ATTR_PARAM_BIND_TYPE:
401401
current_apd_->GetHeaderField(SQL_DESC_BIND_TYPE, output, buffer_size, str_len_ptr);
402+
if (output) {
403+
// Convert SQLINTEGER output to SQLULEN, since SQL_DESC_BIND_TYPE is SQLINTEGER
404+
// and SQL_ATTR_PARAM_BIND_TYPE is SQLULEN
405+
SQLINTEGER* output_int_ptr = reinterpret_cast<SQLINTEGER*>(output);
406+
SQLINTEGER output_int = *output_int_ptr;
407+
SQLULEN* typed_output = reinterpret_cast<SQLULEN*>(output);
408+
*typed_output = static_cast<SQLULEN>(output_int);
409+
}
402410
return;
403411
case SQL_ATTR_PARAM_OPERATION_PTR:
404412
current_apd_->GetHeaderField(SQL_DESC_ARRAY_STATUS_PTR, output, buffer_size,
@@ -422,6 +430,14 @@ void ODBCStatement::GetStmtAttr(SQLINTEGER statement_attribute, SQLPOINTER outpu
422430
return;
423431
case SQL_ATTR_ROW_BIND_TYPE:
424432
current_ard_->GetHeaderField(SQL_DESC_BIND_TYPE, output, buffer_size, str_len_ptr);
433+
if (output) {
434+
// Convert SQLINTEGER output to SQLULEN, since SQL_DESC_BIND_TYPE is SQLINTEGER
435+
// and SQL_ATTR_ROW_BIND_TYPE is SQLULEN
436+
SQLINTEGER* output_int_ptr = reinterpret_cast<SQLINTEGER*>(output);
437+
SQLINTEGER output_int = *output_int_ptr;
438+
SQLULEN* typed_output = reinterpret_cast<SQLULEN*>(output);
439+
*typed_output = static_cast<SQLULEN>(output_int);
440+
}
425441
return;
426442
case SQL_ATTR_ROW_OPERATION_PTR:
427443
current_ard_->GetHeaderField(SQL_DESC_ARRAY_STATUS_PTR, output, buffer_size,

0 commit comments

Comments
 (0)