class_docstr: Maintain context information for the optimizer
  
  Arguments:
      _task_queue(OptimizerTaskStack):
          stack to keep track outstanding tasks
class_docstr_tok: ["Maintain","context","information","for","the","optimizer","Arguments",":","_task_queue","(","OptimizerTaskStack",")",":","stack","to","keep","track","outstanding","tasks"]
docstr: Convert operator to group_expression and add to the group
docstr_tok: ["Convert","operator","to","group_expression","and","add","to","the","group"]
code: def add_opr_to_group(
      self, opr: Operator, group_id: int = UNDEFINED_GROUP_ID
  ):
      """
      Convert operator to group_expression and add to the group
      """
      grp_expr = self._xform_opr_to_group_expr(opr)
      grp_expr = self.memo.add_group_expr(grp_expr, group_id)
      return grp_expr
  
file_path: evadb/evadb/optimizer/optimizer_context.py
imports: import copy
  from evadb.constants import UNDEFINED_GROUP_ID
  from evadb.database import EvaDBDatabase
  from evadb.optimizer.cost_model import CostModel
  from evadb.optimizer.group_expression import GroupExpression
  from evadb.optimizer.memo import Memo
  from evadb.optimizer.operators import Dummy, Operator
  from evadb.optimizer.optimizer_task_stack import OptimizerTaskStack
  from evadb.optimizer.rules.rules_manager import RulesManager
label_desc: Use image node_id 9 for calling the OptimizerContext obj's underlying member method code with example usage: obj.add_opr_to_group(opr, group_id) and returns: grp_expr