def METHOD_NAME(self, selectable, alias_info, query) -> None:
    select_info_target = next(
        query.crawl_sources(alias_info.from_expression_element, True)
    )
    if isinstance(select_info_target, str):
        # It's an alias to an external table whose
        # number of columns could vary without our
        # knowledge. Thus, warn.
        self.logger.debug(
            f"Query target {select_info_target} is external. Generating warning."
        )
        raise RuleFailure(selectable.selectable)
    else:
        # Handle nested SELECT.
        self._analyze_result_columns(select_info_target)