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

Function SQLSetEnvAttr

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

Source from the content-addressed store, hash-verified

735}
736
737SQLRETURN SQLSetEnvAttr(SQLHENV env, SQLINTEGER attr, SQLPOINTER value_ptr,
738 SQLINTEGER str_len) {
739 ARROW_LOG(DEBUG) << "SQLSetEnvAttr called with env: " << env << ", attr: " << attr
740 << ", value_ptr: " << value_ptr << ", str_len: " << str_len;
741
742 using ODBC::ODBCEnvironment;
743
744 ODBCEnvironment* environment = reinterpret_cast<ODBCEnvironment*>(env);
745
746 return ODBCEnvironment::ExecuteWithDiagnostics(environment, SQL_ERROR, [=]() {
747 if (!value_ptr) {
748 throw DriverException("Invalid null pointer for attribute.", "HY024");
749 }
750
751 switch (attr) {
752 case SQL_ATTR_ODBC_VERSION: {
753 SQLINTEGER version =
754 static_cast<SQLINTEGER>(reinterpret_cast<intptr_t>(value_ptr));
755 if (version == SQL_OV_ODBC2 || version == SQL_OV_ODBC3) {
756 environment->SetODBCVersion(version);
757
758 return SQL_SUCCESS;
759 } else {
760 throw DriverException("Invalid value for attribute", "HY024");
761 }
762 }
763
764 case SQL_ATTR_OUTPUT_NTS: {
765 // output nts can not be set to SQL_FALSE, is always SQL_TRUE
766 SQLINTEGER value = static_cast<SQLINTEGER>(reinterpret_cast<intptr_t>(value_ptr));
767 if (value == SQL_TRUE) {
768 return SQL_SUCCESS;
769 } else {
770 throw DriverException("Invalid value for attribute", "HY024");
771 }
772 }
773
774 case SQL_ATTR_CONNECTION_POOLING: {
775 throw DriverException("Optional feature not supported.", "HYC00");
776 }
777
778 default: {
779 throw DriverException("Invalid attribute", "HY092");
780 }
781 }
782 });
783}
784
785SQLRETURN SQLGetConnectAttr(SQLHDBC conn, SQLINTEGER attribute, SQLPOINTER value_ptr,
786 SQLINTEGER buffer_length, SQLINTEGER* string_length_ptr) {

Callers 3

AllocEnvConnHandlesMethod · 0.50
TYPED_TESTFunction · 0.50
TESTFunction · 0.50

Calls 2

DriverExceptionClass · 0.85
SetODBCVersionMethod · 0.80

Tested by 3

AllocEnvConnHandlesMethod · 0.40
TYPED_TESTFunction · 0.40
TESTFunction · 0.40