Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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