Esempio n. 1
0
void ObObj::print_value(FILE* fd)
{
  switch (get_type())
  {
    case ObNullType:
      fprintf(fd, "nil");
      break;
    case ObIntType:
      fprintf(fd, "%ld", value_.int_val);
      break;
    case ObVarcharType:
      fprintf(fd, "%.*s", val_len_, value_.varchar_val);
      break;
    case ObFloatType:
      fprintf(fd, "%2f", value_.float_val);
      break;
    case ObDoubleType:
      fprintf(fd, "%2lf", value_.double_val);
      break;
    case ObDateTimeType:
      fprintf(fd, "%s", time2str(value_.time_val));
      break;
    case ObPreciseDateTimeType:
      fprintf(fd, "%s", time2str(value_.precisetime_val));
      break;
    case ObModifyTimeType:
      fprintf(fd, "%s", time2str(value_.modifytime_val));
      break;
    case ObCreateTimeType:
      fprintf(fd, "%s", time2str(value_.createtime_val));
      break;
    case ObSeqType:
      fprintf(fd, "seq");
      break;
    case ObExtendType:
      fprintf(fd, "%lde", value_.ext_val);
      break;
    case ObBoolType:
      fprintf(fd, "%c", value_.bool_val ? 'Y': 'N');
      break;
    case ObDecimalType:
      {
        char num_buf[ObNumber::MAX_PRINTABLE_SIZE];
        ObNumber num;
        get_decimal(num);
        num.to_string(num_buf, ObNumber::MAX_PRINTABLE_SIZE);
        fprintf(fd, "%s", num_buf);
        break;
      }
    default:
      break;
  }
}
Esempio n. 2
0
int64_t ObObj::to_string(char* buffer, const int64_t length) const
{
  static const char* obj_type_name[] =
  {
    "null",
    "int",
    "float",
    "double",
    "datetime",
    "precisedatetime",
    "varchar",
    "seq",
    "createtime",
    "modifytime",
    "extend",
    "bool",
    "decimal"
  };

  int64_t int_val = 0;
  float float_val = 0.0;
  double double_val = 0.0;
  bool is_add = false;
  ObString str_val;
  int32_t type = meta_.type_;
  int64_t pos = 0;

  if (type > ObMinType && type < ObMaxType)
  {
    databuff_printf(buffer, length, pos, "%s:", obj_type_name[meta_.type_]);
  }
  else
  {
    databuff_printf(buffer, length, pos, "%s", "unknown");
  }

  {
    switch(meta_.type_)
    {
      case ObNullType:
        break;
      case ObIntType:
        get_int(int_val,is_add);
        databuff_printf(buffer, length, pos,  "%s%ld",  is_add ? "+" : "", int_val);
        break;
      case ObVarcharType:
        get_varchar(str_val);
        databuff_printf(buffer, length, pos, "%.*s", str_val.length(), str_val.ptr());
        break;
      case ObFloatType:
        get_float(float_val,is_add);
        databuff_printf(buffer, length, pos, "%s%f",  is_add ? "+" : "", float_val);
        break;
      case ObDoubleType:
        get_double(double_val,is_add);
        databuff_printf(buffer, length, pos, "%s%.12lf",  is_add ? "+" : "", double_val);
        break;
      case ObDateTimeType:
        get_datetime(int_val,is_add);
        databuff_printf(buffer, length, pos, "%s%ld",  is_add ? "+" : "", int_val);
        break;
      case ObPreciseDateTimeType:
        get_precise_datetime(int_val,is_add);
        databuff_printf(buffer, length, pos, "%s%ld",  is_add ? "+" : "", int_val);
        break;
      case ObSeqType:
        //TODO
        break;
      case ObCreateTimeType:
        get_createtime(int_val);
        databuff_printf(buffer, length, pos, "%ld", int_val);
        break;
      case ObModifyTimeType:
        get_modifytime(int_val);
        databuff_printf(buffer, length, pos, "%ld", int_val);
        break;
      case ObExtendType:
        get_ext(int_val);
        if (MIN_OBJECT_VALUE == int_val)
        {
          databuff_printf(buffer, length, pos, "min");
        }
        else if (MAX_OBJECT_VALUE == int_val)
        {
          databuff_printf(buffer, length, pos, "max");
        }
        else
        {
          databuff_printf(buffer, length, pos, "%ld", int_val);
        }
        break;
      case ObBoolType:
        databuff_printf(buffer, length, pos, "%c", value_.bool_val ? 'Y': 'N');
        break;
      case ObDecimalType:
      {
        char num_buf[ObNumber::MAX_PRINTABLE_SIZE];
        ObNumber num;
        get_decimal(num);
        num.to_string(num_buf, ObNumber::MAX_PRINTABLE_SIZE);
        databuff_printf(buffer, length, pos, "%s", num_buf);
        break;
      }
      default:
        break;
    }
  }
  return pos;
}
Esempio n. 3
0
void ObObj::dump(const int32_t log_level /*=TBSYS_LOG_LEVEL_DEBUG*/) const
{
  int64_t int_val = 0;
  bool bool_val = false;
  bool is_add = false;
  float float_val = 0.0f;
  double double_val = 0.0f;
  ObString str_val;
  ObNumber num;
  char num_buf[ObNumber::MAX_PRINTABLE_SIZE];
  switch (get_type())
  {
    case ObNullType:
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level), "[%ld] type:ObNull",pthread_self());
      break;
    case ObIntType:
      get_int(int_val,is_add);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObInt, val:%ld,is_add:%s",pthread_self(),int_val,is_add ? "true" : "false");
      break;
    case ObVarcharType:
      get_varchar(str_val);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObVarChar,len :%d,val:",pthread_self(),str_val.length());
      common::hex_dump(str_val.ptr(),str_val.length(),true,log_level);
      break;
    case ObFloatType:
      get_float(float_val,is_add);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObFloat, val:%f,is_add:%s",pthread_self(),float_val,is_add ? "true" : "false");
      break;
    case ObDoubleType:
      get_double(double_val,is_add);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObDouble, val:%f,is_add:%s",pthread_self(),double_val,is_add ? "true" : "false");
      break;
    case ObDateTimeType:
      get_datetime(int_val,is_add);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObDateTime(seconds), val:%ld,is_add:%s",pthread_self(),int_val,is_add ? "true" : "false");
      break;
    case ObPreciseDateTimeType:
      get_precise_datetime(int_val,is_add);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObPreciseDateTime(microseconds), val:%ld,is_add:%s",pthread_self(),int_val,is_add ? "true" : "false");
      break;
    case ObSeqType:
      //TODO
      break;
    case ObCreateTimeType:
      get_createtime(int_val);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObCreateTime, val:%ld",pthread_self(),int_val);
      break;
    case ObModifyTimeType:
      get_modifytime(int_val);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObModifyTime, val:%ld",pthread_self(),int_val);
      break;
    case ObBoolType:
      get_bool(bool_val);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObBool, val:%s",pthread_self(),bool_val?"true":"false");
      break;
    case ObExtendType:
      get_ext(int_val);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObExt, val:%ld",pthread_self(),int_val);
      break;
    case ObDecimalType:
      get_decimal(num, is_add);
      num.to_string(num_buf, ObNumber::MAX_PRINTABLE_SIZE);
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level),
          "[%ld] type:ObDecimalType, val:%s, is_add:%s",
          pthread_self(), num_buf, is_add ? "true" : "false");
      break;
    default:
      TBSYS_LOGGER.logMessage(TBSYS_LOG_NUM_LEVEL(log_level)," [%ld] unexpected type (%d)",pthread_self(),get_type());
      break;
  }
}