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

Function SQLGetDiagRec

cpp/src/arrow/flight/sql/odbc/odbc_api.cc:580–677  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

578}
579
580SQLRETURN SQLGetDiagRec(SQLSMALLINT handle_type, SQLHANDLE handle, SQLSMALLINT rec_number,
581 SQLWCHAR* sql_state, SQLINTEGER* native_error_ptr,
582 SQLWCHAR* message_text, SQLSMALLINT buffer_length,
583 SQLSMALLINT* text_length_ptr) {
584 ARROW_LOG(DEBUG) << "SQLGetDiagRecW called with handle_type: " << handle_type
585 << ", handle: " << handle << ", rec_number: " << rec_number
586 << ", sql_state: " << static_cast<const void*>(sql_state)
587 << ", native_error_ptr: " << static_cast<const void*>(native_error_ptr)
588 << ", message_text: " << static_cast<const void*>(message_text)
589 << ", buffer_length: " << buffer_length
590 << ", text_length_ptr: " << static_cast<const void*>(text_length_ptr);
591 using arrow::flight::sql::odbc::Diagnostics;
592 using ODBC::GetStringAttribute;
593 using ODBC::ODBCConnection;
594 using ODBC::ODBCDescriptor;
595 using ODBC::ODBCEnvironment;
596 using ODBC::ODBCStatement;
597
598 if (!handle) {
599 return SQL_INVALID_HANDLE;
600 }
601
602 // Record number must be greater or equal to 1
603 if (rec_number < 1 || buffer_length < 0) {
604 return SQL_ERROR;
605 }
606
607 // Set character type to be Unicode by default
608 const bool is_unicode = true;
609 Diagnostics* diagnostics = nullptr;
610
611 switch (handle_type) {
612 case SQL_HANDLE_ENV: {
613 auto* environment = ODBCEnvironment::Of(handle);
614 diagnostics = &environment->GetDiagnostics();
615 break;
616 }
617
618 case SQL_HANDLE_DBC: {
619 auto* connection = ODBCConnection::Of(handle);
620 diagnostics = &connection->GetDiagnostics();
621 break;
622 }
623
624 case SQL_HANDLE_DESC: {
625 auto* descriptor = ODBCDescriptor::Of(handle);
626 diagnostics = &descriptor->GetDiagnostics();
627 break;
628 }
629
630 case SQL_HANDLE_STMT: {
631 auto* statement = ODBCStatement::Of(handle);
632 diagnostics = &statement->GetDiagnostics();
633 break;
634 }
635
636 default:
637 return SQL_INVALID_HANDLE;

Callers 4

SQLErrorFunction · 0.70
VerifyOdbcErrorStateFunction · 0.50
GetOdbcErrorMessageFunction · 0.50
TYPED_TESTFunction · 0.50

Calls 5

GetStringAttributeFunction · 0.85
HasRecordMethod · 0.80
GetSQLStateMethod · 0.80
GetMessageTextMethod · 0.80
GetNativeErrorMethod · 0.45

Tested by 3

VerifyOdbcErrorStateFunction · 0.40
GetOdbcErrorMessageFunction · 0.40
TYPED_TESTFunction · 0.40