@@ -87,152 +87,144 @@ void ODBCConnection::Connect(std::string dsn,
8787 attribute_tracking_statement_ = std::make_shared<ODBCStatement>(*this , spi_statement);
8888}
8989
90- void ODBCConnection::GetInfo (SQLUSMALLINT info_type, SQLPOINTER value,
91- SQLSMALLINT buffer_length, SQLSMALLINT* output_length,
92- bool is_unicode) {
90+ SQLRETURN ODBCConnection::GetInfo (SQLUSMALLINT info_type, SQLPOINTER value,
91+ SQLSMALLINT buffer_length, SQLSMALLINT* output_length,
92+ bool is_unicode) {
9393 switch (info_type) {
9494 case SQL_ACTIVE_ENVIRONMENTS:
9595 GetAttribute (static_cast <SQLUSMALLINT>(0 ), value, buffer_length, output_length);
96- break ;
96+ return SQL_SUCCESS ;
9797#ifdef SQL_ASYNC_DBC_FUNCTIONS
9898 case SQL_ASYNC_DBC_FUNCTIONS:
9999 GetAttribute (static_cast <SQLUINTEGER>(SQL_ASYNC_DBC_NOT_CAPABLE), value,
100100 buffer_length, output_length);
101- break ;
101+ return SQL_SUCCESS ;
102102#endif
103103 case SQL_ASYNC_MODE:
104104 GetAttribute (static_cast <SQLUINTEGER>(SQL_AM_NONE), value, buffer_length,
105105 output_length);
106- break ;
106+ return SQL_SUCCESS ;
107107#ifdef SQL_ASYNC_NOTIFICATION
108108 case SQL_ASYNC_NOTIFICATION:
109109 GetAttribute (static_cast <SQLUINTEGER>(SQL_ASYNC_NOTIFICATION_NOT_CAPABLE), value,
110110 buffer_length, output_length);
111- break ;
111+ return SQL_SUCCESS ;
112112#endif
113113 case SQL_BATCH_ROW_COUNT:
114114 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
115- break ;
115+ return SQL_SUCCESS ;
116116 case SQL_BATCH_SUPPORT:
117117 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
118- break ;
118+ return SQL_SUCCESS ;
119119 case SQL_DATA_SOURCE_NAME:
120- GetStringAttribute (is_unicode, dsn_, true , value, buffer_length, output_length,
121- GetDiagnostics ());
122- break ;
120+ return GetStringAttribute (is_unicode, dsn_, true , value, buffer_length,
121+ output_length, GetDiagnostics ());
123122 case SQL_DRIVER_ODBC_VER:
124- GetStringAttribute (is_unicode, " 03.80" , true , value, buffer_length, output_length,
125- GetDiagnostics ());
126- break ;
123+ return GetStringAttribute (is_unicode, " 03.80" , true , value, buffer_length,
124+ output_length, GetDiagnostics ());
127125 case SQL_DYNAMIC_CURSOR_ATTRIBUTES1:
128126 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
129- break ;
127+ return SQL_SUCCESS ;
130128 case SQL_DYNAMIC_CURSOR_ATTRIBUTES2:
131129 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
132- break ;
130+ return SQL_SUCCESS ;
133131 case SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1:
134132 GetAttribute (static_cast <SQLUINTEGER>(SQL_CA1_NEXT), value, buffer_length,
135133 output_length);
136- break ;
134+ return SQL_SUCCESS ;
137135 case SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2:
138136 GetAttribute (static_cast <SQLUINTEGER>(SQL_CA2_READ_ONLY_CONCURRENCY), value,
139137 buffer_length, output_length);
140- break ;
138+ return SQL_SUCCESS ;
141139 case SQL_FILE_USAGE:
142140 GetAttribute (static_cast <SQLUSMALLINT>(SQL_FILE_NOT_SUPPORTED), value,
143141 buffer_length, output_length);
144- break ;
142+ return SQL_SUCCESS ;
145143 case SQL_KEYSET_CURSOR_ATTRIBUTES1:
146144 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
147- break ;
145+ return SQL_SUCCESS ;
148146 case SQL_KEYSET_CURSOR_ATTRIBUTES2:
149147 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
150- break ;
148+ return SQL_SUCCESS ;
151149 case SQL_MAX_ASYNC_CONCURRENT_STATEMENTS:
152150 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
153- break ;
151+ return SQL_SUCCESS ;
154152 case SQL_ODBC_INTERFACE_CONFORMANCE:
155153 GetAttribute (static_cast <SQLUINTEGER>(SQL_OIC_CORE), value, buffer_length,
156154 output_length);
157- break ;
155+ return SQL_SUCCESS ;
158156 // case SQL_ODBC_STANDARD_CLI_CONFORMANCE: - mentioned in SQLGetInfo spec with no
159157 // description and there is no constant for this.
160158 case SQL_PARAM_ARRAY_ROW_COUNTS:
161159 GetAttribute (static_cast <SQLUINTEGER>(SQL_PARC_NO_BATCH), value, buffer_length,
162160 output_length);
163- break ;
161+ return SQL_SUCCESS ;
164162 case SQL_PARAM_ARRAY_SELECTS:
165163 GetAttribute (static_cast <SQLUINTEGER>(SQL_PAS_NO_SELECT), value, buffer_length,
166164 output_length);
167- break ;
165+ return SQL_SUCCESS ;
168166 case SQL_ROW_UPDATES:
169- GetStringAttribute (is_unicode, " N" , true , value, buffer_length, output_length,
170- GetDiagnostics ());
171- break ;
167+ return GetStringAttribute (is_unicode, " N" , true , value, buffer_length,
168+ output_length, GetDiagnostics ());
172169 case SQL_SCROLL_OPTIONS:
173170 GetAttribute (static_cast <SQLUINTEGER>(SQL_SO_FORWARD_ONLY), value, buffer_length,
174171 output_length);
175- break ;
172+ return SQL_SUCCESS ;
176173 case SQL_STATIC_CURSOR_ATTRIBUTES1:
177174 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
178- break ;
175+ return SQL_SUCCESS ;
179176 case SQL_STATIC_CURSOR_ATTRIBUTES2:
180177 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
181- break ;
178+ return SQL_SUCCESS ;
182179 case SQL_BOOKMARK_PERSISTENCE:
183180 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
184- break ;
181+ return SQL_SUCCESS ;
185182 case SQL_DESCRIBE_PARAMETER:
186- GetStringAttribute (is_unicode, " N" , true , value, buffer_length, output_length,
187- GetDiagnostics ());
188- break ;
183+ return GetStringAttribute (is_unicode, " N" , true , value, buffer_length,
184+ output_length, GetDiagnostics ());
189185 case SQL_MULT_RESULT_SETS:
190- GetStringAttribute (is_unicode, " N" , true , value, buffer_length, output_length,
191- GetDiagnostics ());
192- break ;
186+ return GetStringAttribute (is_unicode, " N" , true , value, buffer_length,
187+ output_length, GetDiagnostics ());
193188 case SQL_MULTIPLE_ACTIVE_TXN:
194- GetStringAttribute (is_unicode, " N" , true , value, buffer_length, output_length,
195- GetDiagnostics ());
196- break ;
189+ return GetStringAttribute (is_unicode, " N" , true , value, buffer_length,
190+ output_length, GetDiagnostics ());
197191 case SQL_NEED_LONG_DATA_LEN:
198- GetStringAttribute (is_unicode, " N" , true , value, buffer_length, output_length,
199- GetDiagnostics ());
200- break ;
192+ return GetStringAttribute (is_unicode, " N" , true , value, buffer_length,
193+ output_length, GetDiagnostics ());
201194 case SQL_TXN_CAPABLE:
202195 GetAttribute (static_cast <SQLUSMALLINT>(SQL_TC_NONE), value, buffer_length,
203196 output_length);
204- break ;
197+ return SQL_SUCCESS ;
205198 case SQL_TXN_ISOLATION_OPTION:
206199 GetAttribute (static_cast <SQLUINTEGER>(0 ), value, buffer_length, output_length);
207- break ;
200+ return SQL_SUCCESS ;
208201 case SQL_TABLE_TERM:
209- GetStringAttribute (is_unicode, " table" , true , value, buffer_length, output_length,
210- GetDiagnostics ());
211- break ;
202+ return GetStringAttribute (is_unicode, " table" , true , value, buffer_length,
203+ output_length, GetDiagnostics ());
212204 // Deprecated ODBC 2.x fields required for backwards compatibility.
213205 case SQL_ODBC_API_CONFORMANCE:
214206 GetAttribute (static_cast <SQLUSMALLINT>(SQL_OAC_LEVEL1), value, buffer_length,
215207 output_length);
216- break ;
208+ return SQL_SUCCESS ;
217209 case SQL_FETCH_DIRECTION:
218210 GetAttribute (static_cast <SQLINTEGER>(SQL_FETCH_NEXT), value, buffer_length,
219211 output_length);
220- break ;
212+ return SQL_SUCCESS ;
221213 case SQL_LOCK_TYPES:
222214 GetAttribute (static_cast <SQLINTEGER>(0 ), value, buffer_length, output_length);
223- break ;
215+ return SQL_SUCCESS ;
224216 case SQL_POS_OPERATIONS:
225217 GetAttribute (static_cast <SQLINTEGER>(0 ), value, buffer_length, output_length);
226- break ;
218+ return SQL_SUCCESS ;
227219 case SQL_POSITIONED_STATEMENTS:
228220 GetAttribute (static_cast <SQLINTEGER>(0 ), value, buffer_length, output_length);
229- break ;
221+ return SQL_SUCCESS ;
230222 case SQL_SCROLL_CONCURRENCY:
231223 GetAttribute (static_cast <SQLINTEGER>(0 ), value, buffer_length, output_length);
232- break ;
224+ return SQL_SUCCESS ;
233225 case SQL_STATIC_SENSITIVITY:
234226 GetAttribute (static_cast <SQLINTEGER>(0 ), value, buffer_length, output_length);
235- break ;
227+ return SQL_SUCCESS ;
236228
237229 // Driver-level string properties.
238230 case SQL_USER_NAME:
@@ -267,9 +259,8 @@ void ODBCConnection::GetInfo(SQLUSMALLINT info_type, SQLPOINTER value,
267259 case SQL_XOPEN_CLI_YEAR: {
268260 const auto & info = spi_connection_->GetInfo (info_type);
269261 const std::string& info_value = boost::get<std::string>(info);
270- GetStringAttribute (is_unicode, info_value, true , value, buffer_length,
271- output_length, GetDiagnostics ());
272- break ;
262+ return GetStringAttribute (is_unicode, info_value, true , value, buffer_length,
263+ output_length, GetDiagnostics ());
273264 }
274265
275266 // Driver-level 32-bit integer properties.
@@ -359,7 +350,7 @@ void ODBCConnection::GetInfo(SQLUSMALLINT info_type, SQLPOINTER value,
359350 const auto & info = spi_connection_->GetInfo (info_type);
360351 uint32_t info_value = boost::get<uint32_t >(info);
361352 GetAttribute (info_value, value, buffer_length, output_length);
362- break ;
353+ return SQL_SUCCESS ;
363354 }
364355
365356 // Driver-level 16-bit integer properties.
@@ -394,7 +385,7 @@ void ODBCConnection::GetInfo(SQLUSMALLINT info_type, SQLPOINTER value,
394385 const auto & info = spi_connection_->GetInfo (info_type);
395386 uint16_t info_value = boost::get<uint16_t >(info);
396387 GetAttribute (info_value, value, buffer_length, output_length);
397- break ;
388+ return SQL_SUCCESS ;
398389 }
399390
400391 // Special case - SQL_DATABASE_NAME is an alias for SQL_ATTR_CURRENT_CATALOG.
@@ -404,13 +395,15 @@ void ODBCConnection::GetInfo(SQLUSMALLINT info_type, SQLPOINTER value,
404395 throw DriverException (" Optional feature not supported." , " HYC00" );
405396 }
406397 const std::string& info_value = boost::get<std::string>(*attr);
407- GetStringAttribute (is_unicode, info_value, true , value, buffer_length,
408- output_length, GetDiagnostics ());
409- break ;
398+ return GetStringAttribute (is_unicode, info_value, true , value, buffer_length,
399+ output_length, GetDiagnostics ());
410400 }
411401 default :
412- throw DriverException (" Unknown SQLGetInfo type: " + std::to_string (info_type));
402+ throw DriverException (" Unknown SQLGetInfo type: " + std::to_string (info_type),
403+ " HY096" );
413404 }
405+
406+ return SQL_ERROR;
414407}
415408
416409void ODBCConnection::SetConnectAttr (SQLINTEGER attribute, SQLPOINTER value,
0 commit comments