Beispiel #1
0
 int obj_cast(const ObObj &orig_cell, const ObObj &expected_type,
         ObObj &casted_cell, const ObObj *&res_cell)
 {
     int ret = OB_SUCCESS;
     if (orig_cell.get_type() != expected_type.get_type())
     {
         // type cast
         ObObjCastParams params;
         ObExprObj from;
         ObExprObj to;
         from.assign(orig_cell);
         to.assign(casted_cell);
         if (OB_SUCCESS != (ret = OB_OBJ_CAST[orig_cell.get_type()][expected_type.get_type()](params, from, to)))
         {
             jlog(WARNING, "failed to type cast obj, err=%d", ret);
         }
         else if (OB_SUCCESS != (ret = to.to(casted_cell)))
         {
             jlog(WARNING, "failed to convert expr_obj to obj, err=%d", ret);
         }
         else
         {
             res_cell = &casted_cell;
         }
     }
     else
     {
         res_cell = &orig_cell;
     }
     return ret;
 }
Beispiel #2
0
        int obj_cast(ObObj &cell, const ObObjType expected_type, char* buf, int64_t buf_size, int64_t &used_buf_len)
        {
            int ret = OB_SUCCESS;
            used_buf_len = 0;
            if (cell.get_type() != expected_type)
            {
                ObObjCastParams params;
                ObExprObj from;
                ObExprObj to;

                from.assign(cell);
                if (ObVarcharType == expected_type)
                {
                    string buffer;
                    buffer.assign(buf, static_cast<int32_t> (buf_size));
                    ObObj varchar_cell;
                    varchar_cell.set_varchar(buffer);
                    to.assign(varchar_cell);
                }

                if (OB_SUCCESS != (ret = OB_OBJ_CAST[cell.get_type()][expected_type](params, from, to)))
                {
                    jlog(WARNING, "failed to type cast obj, err=%d", ret);
                }
                else if (OB_SUCCESS != (ret = to.to(cell)))
                {
                    jlog(WARNING, "failed to convert expr_obj to obj, err=%d", ret);
                }
                else
                {
                    if (ObVarcharType == expected_type)
                    {
                        string varchar;
                        cell.get_varchar(varchar);
                        used_buf_len = varchar.length(); // used buffer length for casting to varchar type
                    }
                }
            }
            return ret;
        }
Beispiel #3
0
ObExprObj ObExprObjTest::bool_obj(MyBool t1)
{
  ObExprObj ret;
  ObObj obj;
  switch(t1)
  {
    case MY_TRUE:
      obj.set_bool(true);
      break;
    case MY_FALSE:
      obj.set_bool(false);
      break;
    default:
      obj.set_null();
      break;
  }
  ret.assign(obj);
  return ret;
}