| 249 | } |
| 250 | |
| 251 | void ODBCDescriptor::GetHeaderField(SQLSMALLINT field_identifier, SQLPOINTER value, |
| 252 | SQLINTEGER buffer_length, |
| 253 | SQLINTEGER* output_length) const { |
| 254 | switch (field_identifier) { |
| 255 | case SQL_DESC_ALLOC_TYPE: { |
| 256 | SQLSMALLINT result; |
| 257 | if (owning_connection_) { |
| 258 | result = SQL_DESC_ALLOC_USER; |
| 259 | } else { |
| 260 | result = SQL_DESC_ALLOC_AUTO; |
| 261 | } |
| 262 | GetAttribute(result, value, buffer_length, output_length); |
| 263 | break; |
| 264 | } |
| 265 | case SQL_DESC_ARRAY_SIZE: |
| 266 | GetAttribute(array_size_, value, buffer_length, output_length); |
| 267 | break; |
| 268 | case SQL_DESC_ARRAY_STATUS_PTR: |
| 269 | GetAttribute(array_status_ptr_, value, buffer_length, output_length); |
| 270 | break; |
| 271 | case SQL_DESC_BIND_OFFSET_PTR: |
| 272 | GetAttribute(bind_offset_ptr_, value, buffer_length, output_length); |
| 273 | break; |
| 274 | case SQL_DESC_BIND_TYPE: |
| 275 | GetAttribute(bind_type_, value, buffer_length, output_length); |
| 276 | break; |
| 277 | case SQL_DESC_ROWS_PROCESSED_PTR: |
| 278 | GetAttribute(rows_processed_ptr_, value, buffer_length, output_length); |
| 279 | break; |
| 280 | case SQL_DESC_COUNT: { |
| 281 | // highest_one_based_bound_record_ equals number of records + 1 |
| 282 | GetAttribute(static_cast<SQLSMALLINT>(highest_one_based_bound_record_ - 1), value, |
| 283 | buffer_length, output_length); |
| 284 | break; |
| 285 | } |
| 286 | default: |
| 287 | throw DriverException("Invalid descriptor field", "HY091"); |
| 288 | } |
| 289 | } |
| 290 | |
| 291 | void ODBCDescriptor::GetField(SQLSMALLINT record_number, SQLSMALLINT field_identifier, |
| 292 | SQLPOINTER value, SQLINTEGER buffer_length, |
no test coverage detected