// not deep copy cell content to decoded_cell
int ObParamDecoder::decode_cond_cell(const ObCondInfo & org_cond, const ObSchemaManagerV2 & schema,
    ObCellInfo & decoded_cell)
{
  int ret = OB_SUCCESS;
  const ObCellInfo & org_cell = org_cond.get_cell();
  if (org_cell.table_name_.length() <= 0) // || (org_cell.row_key_.length() <= 0))
  {
    ret = OB_INPUT_PARAM_ERROR;
    TBSYS_LOG(WARN, "check cell table name or column name failed:table[%.*s], column[%.*s]",
        org_cell.table_name_.length(), org_cell.table_name_.ptr(),
        org_cell.column_name_.length(), org_cell.column_name_.ptr());
  }
  else if (false == org_cond.is_exist_type())
  {
    ret = decode_cell(false, org_cell, schema, decoded_cell);
    if (ret != OB_SUCCESS)
    {
      TBSYS_LOG(WARN, "decode cond cell failed:ret[%d]", ret);
    }
  }
  else
  {
    ret = decode_cell(true, org_cell, schema, decoded_cell);
    if (ret != OB_SUCCESS)
    {
      TBSYS_LOG(WARN, "decode exist cond cell failed:ret[%d]", ret);
    }
  }
  // TODO check op type suitable
  return ret;
}
int ObMutatorParamDecoder::add_condition(const ObCondInfo & decoded_cell,
    ObUpdateCondition & decoded_cond, ObGetParam & get_param)
{
  int ret = decoded_cond.add_cond(decoded_cell);
  if (OB_SUCCESS == ret)
  {
    // add id type cell to get_param
    ret = add_cell(decoded_cell.get_cell(), get_param);
    if (ret != OB_SUCCESS)
    {
      TBSYS_LOG(WARN, "check add condition cell failed:ret[%d]", ret);
    }
  }
  else
  {
    TBSYS_LOG(WARN, "add decoede condition cell to new mutator failed:ret[%d]", ret);
  }
  return ret;
}