MCPcopy Create free account
hub / github.com/apache/arrow / GetStmtAttr

Method GetStmtAttr

cpp/src/arrow/flight/sql/odbc/odbc_impl/odbc_statement.cc:381–551  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

379}
380
381void ODBCStatement::GetStmtAttr(SQLINTEGER statement_attribute, SQLPOINTER output,
382 SQLINTEGER buffer_size, SQLINTEGER* str_len_ptr,
383 bool is_unicode) {
384 std::optional<Statement::Attribute> spi_attribute;
385 switch (statement_attribute) {
386 // Descriptor accessor attributes
387 case SQL_ATTR_APP_PARAM_DESC:
388 DescriptorToHandle(output, current_apd_, str_len_ptr);
389 return;
390 case SQL_ATTR_APP_ROW_DESC:
391 DescriptorToHandle(output, current_ard_, str_len_ptr);
392 return;
393 case SQL_ATTR_IMP_PARAM_DESC:
394 DescriptorToHandle(output, ipd_.get(), str_len_ptr);
395 return;
396 case SQL_ATTR_IMP_ROW_DESC:
397 DescriptorToHandle(output, ird_.get(), str_len_ptr);
398 return;
399
400 // Attributes that are descriptor fields
401 case SQL_ATTR_PARAM_BIND_OFFSET_PTR:
402 current_apd_->GetHeaderField(SQL_DESC_BIND_OFFSET_PTR, output, buffer_size,
403 str_len_ptr);
404 return;
405 case SQL_ATTR_PARAM_BIND_TYPE:
406 current_apd_->GetHeaderField(SQL_DESC_BIND_TYPE, output, buffer_size, str_len_ptr);
407 if (output) {
408 // Convert SQLINTEGER output to SQLULEN, since SQL_DESC_BIND_TYPE is SQLINTEGER
409 // and SQL_ATTR_PARAM_BIND_TYPE is SQLULEN
410 SQLINTEGER* output_int_ptr = reinterpret_cast<SQLINTEGER*>(output);
411 SQLINTEGER output_int = *output_int_ptr;
412 SQLULEN* typed_output = reinterpret_cast<SQLULEN*>(output);
413 *typed_output = static_cast<SQLULEN>(output_int);
414 }
415 return;
416 case SQL_ATTR_PARAM_OPERATION_PTR:
417 current_apd_->GetHeaderField(SQL_DESC_ARRAY_STATUS_PTR, output, buffer_size,
418 str_len_ptr);
419 return;
420 case SQL_ATTR_PARAM_STATUS_PTR:
421 ipd_->GetHeaderField(SQL_DESC_ARRAY_STATUS_PTR, output, buffer_size, str_len_ptr);
422 return;
423 case SQL_ATTR_PARAMS_PROCESSED_PTR:
424 ipd_->GetHeaderField(SQL_DESC_ROWS_PROCESSED_PTR, output, buffer_size, str_len_ptr);
425 return;
426 case SQL_ATTR_PARAMSET_SIZE:
427 current_apd_->GetHeaderField(SQL_DESC_ARRAY_SIZE, output, buffer_size, str_len_ptr);
428 return;
429 case SQL_ATTR_ROW_ARRAY_SIZE:
430 current_ard_->GetHeaderField(SQL_DESC_ARRAY_SIZE, output, buffer_size, str_len_ptr);
431 return;
432 case SQL_ATTR_ROW_BIND_OFFSET_PTR:
433 current_ard_->GetHeaderField(SQL_DESC_BIND_OFFSET_PTR, output, buffer_size,
434 str_len_ptr);
435 return;
436 case SQL_ATTR_ROW_BIND_TYPE:
437 current_ard_->GetHeaderField(SQL_DESC_BIND_TYPE, output, buffer_size, str_len_ptr);
438 if (output) {

Callers 1

SQLGetStmtAttrFunction · 0.80

Calls 7

DescriptorToHandleFunction · 0.85
GetAttributeFunction · 0.85
DriverExceptionClass · 0.85
to_stringFunction · 0.85
GetHeaderFieldMethod · 0.80
getMethod · 0.45
GetAttributeMethod · 0.45

Tested by

no test coverage detected