def get_action_sequence_and_all_actions(self, allow_aliases: bool = False ) -> Tuple[List[str], List[str]]: grammar_with_context = deepcopy(self.base_grammar_dictionary) if not allow_aliases: update_grammar_to_be_table_names_free(grammar_with_context) schema = self.db_context.schema update_grammar_with_tables(grammar_with_context, schema) grammar = Grammar(format_grammar_string(grammar_with_context)) valid_actions = initialize_valid_actions(grammar) all_actions = set() for action_list in valid_actions.values(): all_actions.update(action_list) sorted_actions = sorted(all_actions) self.valid_actions = valid_actions self.valid_actions_flat = sorted_actions action_sequence = None if self.query is not None: sql_visitor = SqlVisitor(grammar) query = " ".join(self.query).lower().replace("``", "'").replace( "''", "'") try: action_sequence = sql_visitor.parse(query) if query else [] except ParseError as e: pass return action_sequence, sorted_actions
def get_all_actions(self, schema, flip_joins: bool, allow_aliases: bool) -> Tuple[List[str], List[str]]: grammar_with_context = deepcopy(self.base_grammar_dictionary) if not allow_aliases: update_grammar_to_be_table_names_free(grammar_with_context) if flip_joins: update_grammar_flip_joins(grammar_with_context) update_grammar_with_tables(grammar_with_context, schema, self.db_id) grammar = Grammar(format_grammar_string(grammar_with_context)) valid_actions = initialize_valid_actions(grammar) all_actions = set() for action_list in valid_actions.values(): all_actions.update(action_list) sorted_actions = sorted(all_actions) self.valid_actions = valid_actions self.valid_actions_flat = sorted_actions return sorted_actions