| 202 | } // namespace |
| 203 | |
| 204 | GetInfoCache::GetInfoCache(FlightClientOptions& client_options, |
| 205 | FlightCallOptions& call_options, |
| 206 | std::unique_ptr<FlightSqlClient>& client, |
| 207 | const std::string& driver_version) |
| 208 | : client_options_(client_options), |
| 209 | call_options_(call_options), |
| 210 | sql_client_(client), |
| 211 | has_server_info_(false) { |
| 212 | info_[SQL_DRIVER_NAME] = "Arrow Flight ODBC Driver"; |
| 213 | info_[SQL_DRIVER_VER] = util::ConvertToDBMSVer(driver_version); |
| 214 | |
| 215 | info_[SQL_GETDATA_EXTENSIONS] = |
| 216 | static_cast<uint32_t>(SQL_GD_ANY_COLUMN | SQL_GD_ANY_ORDER); |
| 217 | info_[SQL_CURSOR_SENSITIVITY] = static_cast<uint32_t>(SQL_UNSPECIFIED); |
| 218 | |
| 219 | // Properties which don't currently have SqlGetInfo fields but probably |
| 220 | // should. |
| 221 | info_[SQL_ACCESSIBLE_PROCEDURES] = "N"; |
| 222 | info_[SQL_COLLATION_SEQ] = ""; |
| 223 | info_[SQL_ALTER_DOMAIN] = static_cast<uint32_t>(0); |
| 224 | info_[SQL_ALTER_TABLE] = static_cast<uint32_t>(0); |
| 225 | info_[SQL_COLUMN_ALIAS] = "Y"; |
| 226 | info_[SQL_DATETIME_LITERALS] = static_cast<uint32_t>( |
| 227 | SQL_DL_SQL92_DATE | SQL_DL_SQL92_TIME | SQL_DL_SQL92_TIMESTAMP); |
| 228 | info_[SQL_CREATE_ASSERTION] = static_cast<uint32_t>(0); |
| 229 | info_[SQL_CREATE_CHARACTER_SET] = static_cast<uint32_t>(0); |
| 230 | info_[SQL_CREATE_COLLATION] = static_cast<uint32_t>(0); |
| 231 | info_[SQL_CREATE_DOMAIN] = static_cast<uint32_t>(0); |
| 232 | info_[SQL_INDEX_KEYWORDS] = static_cast<uint32_t>(SQL_IK_NONE); |
| 233 | info_[SQL_TIMEDATE_ADD_INTERVALS] = static_cast<uint32_t>( |
| 234 | SQL_FN_TSI_FRAC_SECOND | SQL_FN_TSI_SECOND | SQL_FN_TSI_MINUTE | SQL_FN_TSI_HOUR | |
| 235 | SQL_FN_TSI_DAY | SQL_FN_TSI_WEEK | SQL_FN_TSI_MONTH | SQL_FN_TSI_QUARTER | |
| 236 | SQL_FN_TSI_YEAR); |
| 237 | info_[SQL_TIMEDATE_DIFF_INTERVALS] = static_cast<uint32_t>( |
| 238 | SQL_FN_TSI_FRAC_SECOND | SQL_FN_TSI_SECOND | SQL_FN_TSI_MINUTE | SQL_FN_TSI_HOUR | |
| 239 | SQL_FN_TSI_DAY | SQL_FN_TSI_WEEK | SQL_FN_TSI_MONTH | SQL_FN_TSI_QUARTER | |
| 240 | SQL_FN_TSI_YEAR); |
| 241 | info_[SQL_CURSOR_COMMIT_BEHAVIOR] = static_cast<uint16_t>(SQL_CB_CLOSE); |
| 242 | info_[SQL_CURSOR_ROLLBACK_BEHAVIOR] = static_cast<uint16_t>(SQL_CB_CLOSE); |
| 243 | info_[SQL_CREATE_TRANSLATION] = static_cast<uint32_t>(0); |
| 244 | info_[SQL_DDL_INDEX] = static_cast<uint32_t>(0); |
| 245 | info_[SQL_DROP_ASSERTION] = static_cast<uint32_t>(0); |
| 246 | info_[SQL_DROP_CHARACTER_SET] = static_cast<uint32_t>(0); |
| 247 | info_[SQL_DROP_COLLATION] = static_cast<uint32_t>(0); |
| 248 | info_[SQL_DROP_DOMAIN] = static_cast<uint32_t>(0); |
| 249 | info_[SQL_DROP_SCHEMA] = static_cast<uint32_t>(0); |
| 250 | info_[SQL_DROP_TABLE] = static_cast<uint32_t>(0); |
| 251 | info_[SQL_DROP_TRANSLATION] = static_cast<uint32_t>(0); |
| 252 | info_[SQL_DROP_VIEW] = static_cast<uint32_t>(0); |
| 253 | info_[SQL_MAX_IDENTIFIER_LEN] = static_cast<uint16_t>(65535); // arbitrary |
| 254 | |
| 255 | // Assume all aggregate functions reported in ODBC are supported. |
| 256 | info_[SQL_AGGREGATE_FUNCTIONS] = |
| 257 | static_cast<uint32_t>(SQL_AF_ALL | SQL_AF_AVG | SQL_AF_COUNT | SQL_AF_DISTINCT | |
| 258 | SQL_AF_MAX | SQL_AF_MIN | SQL_AF_SUM); |
| 259 | |
| 260 | // Assume catalogs are not supported by default. ODBC checks if SQL_CATALOG_NAME is |
| 261 | // "Y" or "N" to determine if catalogs are supported. |
nothing calls this directly
no test coverage detected