in aws_advanced_python_wrapper/database_dialect.py [0:0]
def query_for_dialect(self, url: str, host_info: Optional[HostInfo], conn: Connection,
driver_dialect: DriverDialect) -> DatabaseDialect:
if not self._can_update:
self._log_current_dialect()
return self._dialect
dialect_candidates = self._dialect.dialect_update_candidates if self._dialect is not None else None
if dialect_candidates is not None:
for dialect_code in dialect_candidates:
dialect_candidate = DatabaseDialectManager._known_dialects_by_code.get(dialect_code)
if dialect_candidate is None:
raise AwsWrapperError(Messages.get_formatted("DatabaseDialectManager.UnknownDialectCode", dialect_code))
timeout_sec = WrapperProperties.AUXILIARY_QUERY_TIMEOUT_SEC.get(self._props)
try:
cursor_execute_func_with_timeout = preserve_transaction_status_with_timeout(
DatabaseDialectManager._executor,
timeout_sec,
driver_dialect,
conn)(dialect_candidate.is_dialect)
is_dialect = cursor_execute_func_with_timeout(conn, driver_dialect)
except TimeoutError as e:
raise QueryTimeoutError("DatabaseDialectManager.QueryForDialectTimeout") from e
if not is_dialect:
continue
self._can_update = False
self._dialect_code = dialect_code
self._dialect = dialect_candidate
DatabaseDialectManager._known_endpoint_dialects.put(url, dialect_code,
DatabaseDialectManager._ENDPOINT_CACHE_EXPIRATION_NS)
if host_info is not None:
DatabaseDialectManager._known_endpoint_dialects.put(
host_info.url, dialect_code, DatabaseDialectManager._ENDPOINT_CACHE_EXPIRATION_NS)
self._log_current_dialect()
return self._dialect
if self._dialect_code is None or self._dialect_code == DialectCode.UNKNOWN:
raise AwsWrapperError(Messages.get("DatabaseDialectManager.UnknownDialect"))
self._can_update = False
DatabaseDialectManager._known_endpoint_dialects.put(url, self._dialect_code,
DatabaseDialectManager._ENDPOINT_CACHE_EXPIRATION_NS)
if host_info is not None:
DatabaseDialectManager._known_endpoint_dialects.put(
host_info.url, self._dialect_code, DatabaseDialectManager._ENDPOINT_CACHE_EXPIRATION_NS)
self._log_current_dialect()
return self._dialect