Merge pull request #26122 from taosdata/enh/TD-30490-3.0
enh: support get macro string of taos errors
This commit is contained in:
commit
0b5309c3e7
|
@ -24,6 +24,14 @@ extern "C" {
|
|||
|
||||
// clang-format off
|
||||
|
||||
typedef struct {
|
||||
int32_t val;
|
||||
const char* str;
|
||||
const char* macro;
|
||||
} STaosError;
|
||||
|
||||
extern STaosError errors[];
|
||||
|
||||
#define TAOS_DEF_ERROR_CODE(mod, code) ((int32_t)((0x80000000 | ((mod)<<16) | (code))))
|
||||
|
||||
#define TAOS_SYSTEM_ERROR(code) (0x80ff0000 | (code))
|
||||
|
@ -38,6 +46,7 @@ const char* terrstr();
|
|||
char* taosGetErrMsgReturn();
|
||||
char* taosGetErrMsg();
|
||||
int32_t* taosGetErrno();
|
||||
int32_t taosGetErrSize();
|
||||
#define terrno (*taosGetErrno())
|
||||
#define terrMsg (taosGetErrMsg())
|
||||
|
||||
|
@ -316,7 +325,7 @@ int32_t* taosGetErrno();
|
|||
#define TSDB_CODE_MND_DB_OPTION_UNCHANGED TAOS_DEF_ERROR_CODE(0, 0x038A) //
|
||||
#define TSDB_CODE_MND_DB_INDEX_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x038B)
|
||||
#define TSDB_CODE_MND_DB_RETENTION_PERIOD_ZERO TAOS_DEF_ERROR_CODE(0, 0x038C)
|
||||
#define TSDB_CODE_MND_INCONSIST_ENCRYPT_KEY TAOS_DEF_ERROR_CODE(0, 0x038D)
|
||||
// #define TSDB_CODE_MND_INCONSIST_ENCRYPT_KEY TAOS_DEF_ERROR_CODE(0, 0x038D) // unused
|
||||
#define TSDB_CODE_MND_INVALID_ENCRYPT_KEY TAOS_DEF_ERROR_CODE(0, 0x038E)
|
||||
// #define TSDB_CODE_MND_INVALID_DB_OPTION_DAYS TAOS_DEF_ERROR_CODE(0, 0x0390) // 2.x
|
||||
// #define TSDB_CODE_MND_INVALID_DB_OPTION_KEEP TAOS_DEF_ERROR_CODE(0, 0x0391) // 2.x
|
||||
|
|
|
@ -21,11 +21,6 @@
|
|||
|
||||
#define TAOS_ERROR_C
|
||||
|
||||
typedef struct {
|
||||
int32_t val;
|
||||
const char* str;
|
||||
} STaosError;
|
||||
|
||||
static threadlocal int32_t tsErrno;
|
||||
static threadlocal char tsErrMsgDetail[ERR_MSG_LEN] = {0};
|
||||
static threadlocal char tsErrMsgReturn[ERR_MSG_LEN] = {0};
|
||||
|
@ -35,7 +30,7 @@ char* taosGetErrMsg() { return tsErrMsgDetail; }
|
|||
char* taosGetErrMsgReturn() { return tsErrMsgReturn; }
|
||||
|
||||
#ifdef TAOS_ERROR_C
|
||||
#define TAOS_DEFINE_ERROR(name, msg) {.val = (name), .str = (msg)},
|
||||
#define TAOS_DEFINE_ERROR(name, msg) {.val = (name), .str = (msg), .macro = #name},
|
||||
#else
|
||||
#define TAOS_DEFINE_ERROR(name, mod, code, msg) static const int32_t name = TAOS_DEF_ERROR_CODE(mod, code);
|
||||
#endif
|
||||
|
@ -46,7 +41,7 @@ char* taosGetErrMsgReturn() { return tsErrMsgReturn; }
|
|||
|
||||
#ifdef TAOS_ERROR_C
|
||||
STaosError errors[] = {
|
||||
{.val = 0, .str = "success"},
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_SUCCESS, "success")
|
||||
#endif
|
||||
|
||||
// rpc
|
||||
|
@ -250,15 +245,14 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_DB, "Invalid database name
|
|||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TOO_MANY_DATABASES, "Too many databases for account")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_IN_DROPPING, "Database in dropping status")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_NOT_EXIST, "Database not exist")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_RETENTION_PERIOD_ZERO, "WAL retention period is zero")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_DB_ACCT, "Invalid database account")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_OPTION_UNCHANGED, "Database options not changed")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_INDEX_NOT_EXIST, "Index not exist")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_SYS_TABLENAME, "Invalid system table name")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_IN_CREATING, "Database in creating status")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE, "Encryption is not allowed to be changed after database is created")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INCONSIST_ENCRYPT_KEY, "Inconsistent encryption key")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_RETENTION_PERIOD_ZERO, "WAL retention period is zero")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_ENCRYPT_KEY, "The cluster has not been set properly for database encryption")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_IN_CREATING, "Database in creating status")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_SYS_TABLENAME, "Invalid system table name")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE, "Encryption is not allowed to be changed after database is created")
|
||||
|
||||
// mnode-node
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_MNODE_ALREADY_EXIST, "Mnode already exists")
|
||||
|
@ -837,3 +831,5 @@ const char* tstrerror(int32_t err) {
|
|||
}
|
||||
|
||||
const char* terrstr() { return tstrerror(terrno); }
|
||||
|
||||
int32_t taosGetErrSize() { return sizeof(errors)/sizeof(errors[0]); }
|
||||
|
|
|
@ -123,4 +123,12 @@ add_test(
|
|||
#add_test(
|
||||
# NAME decompressTest
|
||||
# COMMAND decompressTest
|
||||
#)
|
||||
#)
|
||||
|
||||
# terrorTest
|
||||
add_executable(terrorTest "terrorTest.cpp")
|
||||
target_link_libraries(terrorTest os util common gtest_main)
|
||||
add_test(
|
||||
NAME terrorTest
|
||||
COMMAND terrorTest
|
||||
)
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include <cassert>
|
||||
|
||||
#include <iostream>
|
||||
#include "taoserror.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
TEST(TAOS_ERROR_TEST, terror_test) {
|
||||
int32_t errSize = taosGetErrSize();
|
||||
for (int32_t i = 0; i < errSize; ++i) {
|
||||
STaosError *pInfo = &errors[i];
|
||||
std::cout << i + 1 << " " << pInfo->macro << " " << pInfo->val << std::endl;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue