209 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/**
 | 
						|
 * Copyright (c) 2021 OceanBase
 | 
						|
 * OceanBase CE is licensed under Mulan PubL v2.
 | 
						|
 * You can use this software according to the terms and conditions of the Mulan PubL v2.
 | 
						|
 * You may obtain a copy of Mulan PubL v2 at:
 | 
						|
 *          http://license.coscl.org.cn/MulanPubL-2.0
 | 
						|
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 | 
						|
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 | 
						|
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 | 
						|
 * See the Mulan PubL v2 for more details.
 | 
						|
 */
 | 
						|
 | 
						|
#include "ob_func_utils.h"
 | 
						|
 | 
						|
const char* get_submit_log_type(const int64_t submit_log_type)
 | 
						|
{
 | 
						|
  const char* char_ret = NULL;
 | 
						|
  switch (submit_log_type) {
 | 
						|
    case OB_LOG_SP_TRANS_REDO:
 | 
						|
      char_ret = "OB_LOG_SP_TRANS_REDO";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_REDO:
 | 
						|
      char_ret = "OB_LOG_TRANS_REDO";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_PREPARE:
 | 
						|
      char_ret = "OB_LOG_TRANS_PREPARE";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_RECORD:
 | 
						|
      char_ret = "OB_LOG_TRANS_RECORD";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_REDO_WITH_PREPARE:
 | 
						|
      char_ret = "OB_LOG_TRANS_REDO_WITH_PREPARE";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_PREPARE_WITH_COMMIT:
 | 
						|
      char_ret = "OB_LOG_TRANS_PREPARE_WITH_COMMIT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_REDO_WITH_PREPARE_WITH_COMMIT:
 | 
						|
      char_ret = "OB_LOG_TRANS_REDO_WITH_PREPARE_WITH_COMMIT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_SP_TRANS_COMMIT:
 | 
						|
      char_ret = "OB_LOG_SP_TRANS_COMMIT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_SP_ELR_TRANS_COMMIT:
 | 
						|
      char_ret = "OB_LOG_SP_ELR_TRANS_COMMIT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_COMMIT:
 | 
						|
      char_ret = "OB_LOG_TRANS_COMMIT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_SP_TRANS_ABORT:
 | 
						|
      char_ret = "OB_LOG_SP_TRANS_ABORT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_ABORT:
 | 
						|
      char_ret = "OB_LOG_TRANS_ABORT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_CLEAR:
 | 
						|
      char_ret = "OB_LOG_TRANS_CLEAR";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_REDO_WITH_PREPARE_WITH_COMMIT_WITH_CLEAR:
 | 
						|
      char_ret = "OB_LOG_TRANS_REDO_WITH_PREPARE_WITH_COMMIT_WITH_CLEAR";
 | 
						|
      break;
 | 
						|
    case OB_LOG_MUTATOR:
 | 
						|
      char_ret = "OB_LOG_MUTATOR";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_STATE:
 | 
						|
      char_ret = "OB_LOG_TRANS_STATE";
 | 
						|
      break;
 | 
						|
    case OB_LOG_MUTATOR_WITH_STATE:
 | 
						|
      char_ret = "OB_LOG_MUTATOR_WITH_STATE";
 | 
						|
      break;
 | 
						|
    case OB_LOG_MUTATOR_ABORT:
 | 
						|
      char_ret = "OB_LOG_MUTATOR_ABORT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_SPLIT_SOURCE_PARTITION:
 | 
						|
      char_ret = "OB_LOG_SPLIT_SOURCE_PARTITION";
 | 
						|
      break;
 | 
						|
    case OB_LOG_SPLIT_DEST_PARTITION:
 | 
						|
      char_ret = "OB_LOG_SPLIT_DEST_PARTITION";
 | 
						|
      break;
 | 
						|
    case OB_LOG_TRANS_CHECKPOINT:
 | 
						|
      char_ret = "OB_LOG_TRANS_CHECKPOINT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_MAJOR_FREEZE:
 | 
						|
      char_ret = "OB_LOG_MAJOR_FREEZE";
 | 
						|
      break;
 | 
						|
    case OB_LOG_ADD_PARTITION_TO_PG:
 | 
						|
      char_ret = "OB_LOG_ADD_PARTITION_TO_PG";
 | 
						|
      break;
 | 
						|
    case OB_LOG_REMOVE_PARTITION_FROM_PG:
 | 
						|
      char_ret = "OB_LOG_REMOVE_PARTITION_FROM_PG";
 | 
						|
      break;
 | 
						|
    case OB_PARTITION_SCHEMA_VERSION_CHANGE_LOG:
 | 
						|
      char_ret = "OB_PARTITION_SCHEMA_VERSION_CHANGE_LOG";
 | 
						|
      break;
 | 
						|
    default:
 | 
						|
      char_ret = "OB_LOG_UNKNOWN";
 | 
						|
      break;
 | 
						|
  }
 | 
						|
  return char_ret;
 | 
						|
}
 | 
						|
 | 
						|
int file_name_parser(const char* path, uint64_t& file_id)
 | 
						|
{
 | 
						|
  int ret = oceanbase::OB_SUCCESS;
 | 
						|
 | 
						|
  struct stat _stat;
 | 
						|
  if (OB_ISNULL(path)) {
 | 
						|
    ret = oceanbase::common::OB_INVALID_ARGUMENT;
 | 
						|
  } else if (!is_ofs_file(path) && 0 != stat(path, &_stat)) {
 | 
						|
    ret = OB_IO_ERROR;
 | 
						|
    _LOGTOOL_LOG(ERROR, "fstate:%s", strerror(errno));
 | 
						|
  } else {
 | 
						|
    file_id = 0;
 | 
						|
    int i = 0;
 | 
						|
    int path_len = static_cast<int>(strlen(path));
 | 
						|
    for (--path_len; path_len >= 0 && path[path_len] >= '0' && path[path_len] <= '9'; --path_len) {
 | 
						|
      file_id += (path[path_len] - '0') * static_cast<int>(pow(10, i++));
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return ret;
 | 
						|
}
 | 
						|
 | 
						|
const char* get_log_type(const enum ObLogType log_type)
 | 
						|
{
 | 
						|
  const char* char_ret = NULL;
 | 
						|
  switch (log_type) {
 | 
						|
    case OB_LOG_SUBMIT:
 | 
						|
      char_ret = "OB_LOG_SUBMIT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_MEMBERSHIP:
 | 
						|
      char_ret = "OB_LOG_MEMBERSHIP";
 | 
						|
      break;
 | 
						|
    case OB_LOG_PREPARED:
 | 
						|
      char_ret = "OB_LOG_PREPARED";
 | 
						|
      break;
 | 
						|
    case oceanbase::clog::OB_LOG_NOP:
 | 
						|
      char_ret = "OB_LOG_NOP";
 | 
						|
      break;
 | 
						|
    case OB_LOG_START_MEMBERSHIP:
 | 
						|
      char_ret = "OB_LOG_START_MEMBERSHIP";
 | 
						|
      break;
 | 
						|
    case OB_LOG_NOT_EXIST:
 | 
						|
      char_ret = "OB_LOG_NOT_EXIST";
 | 
						|
      break;
 | 
						|
    case OB_LOG_AGGRE:
 | 
						|
      char_ret = "OB_LOG_AGGRE";
 | 
						|
      break;
 | 
						|
    case OB_LOG_ARCHIVE_CHECKPOINT:
 | 
						|
      char_ret = "OB_LOG_ARCHIVE_CHECKPOINT";
 | 
						|
      break;
 | 
						|
    case OB_LOG_ARCHIVE_KICKOFF:
 | 
						|
      char_ret = "OB_LOG_ARCHIVE_KICKOFF";
 | 
						|
      break;
 | 
						|
    default:
 | 
						|
      char_ret = "OB_LOG_UNKNOWN";
 | 
						|
      break;
 | 
						|
  }
 | 
						|
  return char_ret;
 | 
						|
}
 | 
						|
 | 
						|
const char* get_freeze_type(ObFreezeType freeze_type)
 | 
						|
{
 | 
						|
  const char* char_ret = NULL;
 | 
						|
  switch (freeze_type) {
 | 
						|
    case INVALID_FREEZE:
 | 
						|
      char_ret = "INVALID_FREEZE";
 | 
						|
      break;
 | 
						|
    case MAJOR_FREEZE:
 | 
						|
      char_ret = "MAJOR_FREEZE";
 | 
						|
      break;
 | 
						|
    case MINOR_FREEZE:
 | 
						|
      char_ret = "MINOR_FREEZE";
 | 
						|
      break;
 | 
						|
  }
 | 
						|
  return char_ret;
 | 
						|
}
 | 
						|
 | 
						|
const char* get_row_dml_type_str(const ObRowDml& dml_type)
 | 
						|
{
 | 
						|
  const char* dml_str = "UNKNOWN";
 | 
						|
  switch (dml_type) {
 | 
						|
    case T_DML_INSERT:
 | 
						|
      dml_str = "INSERT";
 | 
						|
      break;
 | 
						|
    case T_DML_UPDATE:
 | 
						|
      dml_str = "UPDATE";
 | 
						|
      break;
 | 
						|
    case T_DML_DELETE:
 | 
						|
      dml_str = "DELETE";
 | 
						|
      break;
 | 
						|
    case T_DML_REPLACE:
 | 
						|
      dml_str = "REPLACE";
 | 
						|
      break;
 | 
						|
    case T_DML_LOCK:
 | 
						|
      dml_str = "LOCK";
 | 
						|
      break;
 | 
						|
    default:
 | 
						|
      dml_str = "UNKNOWN";
 | 
						|
      CLOG_LOG(ERROR, "unknown dml_type", K(dml_type));
 | 
						|
      break;
 | 
						|
  }
 | 
						|
  return dml_str;
 | 
						|
}
 | 
						|
 | 
						|
bool is_ofs_file(const char* path)
 | 
						|
{
 | 
						|
  UNUSED(path);
 | 
						|
  return false;
 | 
						|
}
 |