Merge pull request #26187 from taosdata/enh/TS-5043-3.0
enh: support display unlimited for expiration time
This commit is contained in:
commit
0522247b68
|
@ -29,6 +29,8 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define GRANT_HEART_BEAT_MIN 2
|
#define GRANT_HEART_BEAT_MIN 2
|
||||||
|
#define GRANT_EXPIRE_VALUE (31556995201)
|
||||||
|
#define GRANT_EXPIRE_UNLIMITED(v) ((v) == GRANT_EXPIRE_VALUE)
|
||||||
#define GRANT_ACTIVE_CODE "activeCode"
|
#define GRANT_ACTIVE_CODE "activeCode"
|
||||||
#define GRANT_FLAG_ALL (0x01)
|
#define GRANT_FLAG_ALL (0x01)
|
||||||
#define GRANT_FLAG_AUDIT (0x02)
|
#define GRANT_FLAG_AUDIT (0x02)
|
||||||
|
|
|
@ -85,7 +85,7 @@ static const SSysDbTableSchema clusterSchema[] = {
|
||||||
{.name = "uptime", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true},
|
{.name = "uptime", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true},
|
||||||
{.name = "create_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP, .sysInfo = true},
|
{.name = "create_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP, .sysInfo = true},
|
||||||
{.name = "version", .bytes = 10 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
{.name = "version", .bytes = 10 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
{.name = "expire_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP, .sysInfo = true},
|
{.name = "expire_time", .bytes = 19 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SSysDbTableSchema userDBSchema[] = {
|
static const SSysDbTableSchema userDBSchema[] = {
|
||||||
|
|
|
@ -23,6 +23,14 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define COL_DATA_SET_VAL_RET(pData, isNull, pObj) \
|
||||||
|
do { \
|
||||||
|
if ((code = colDataSetVal(pColInfo, numOfRows, (pData), (isNull))) != 0) { \
|
||||||
|
if (pObj) sdbRelease(pSdb, (pObj)); \
|
||||||
|
return code; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
int32_t mndInitShow(SMnode *pMnode);
|
int32_t mndInitShow(SMnode *pMnode);
|
||||||
void mndCleanupShow(SMnode *pMnode);
|
void mndCleanupShow(SMnode *pMnode);
|
||||||
void mndAddShowRetrieveHandle(SMnode *pMnode, EShowType showType, ShowRetrieveFp fp);
|
void mndAddShowRetrieveHandle(SMnode *pMnode, EShowType showType, ShowRetrieveFp fp);
|
||||||
|
|
|
@ -280,6 +280,7 @@ static int32_t mndCreateDefaultCluster(SMnode *pMnode) {
|
||||||
static int32_t mndRetrieveClusters(SRpcMsg *pMsg, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) {
|
static int32_t mndRetrieveClusters(SRpcMsg *pMsg, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) {
|
||||||
SMnode *pMnode = pMsg->info.node;
|
SMnode *pMnode = pMsg->info.node;
|
||||||
SSdb *pSdb = pMnode->pSdb;
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
|
int32_t code = 0;
|
||||||
int32_t numOfRows = 0;
|
int32_t numOfRows = 0;
|
||||||
int32_t cols = 0;
|
int32_t cols = 0;
|
||||||
SClusterObj *pCluster = NULL;
|
SClusterObj *pCluster = NULL;
|
||||||
|
@ -290,31 +291,44 @@ static int32_t mndRetrieveClusters(SRpcMsg *pMsg, SShowObj *pShow, SSDataBlock *
|
||||||
|
|
||||||
cols = 0;
|
cols = 0;
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataSetVal(pColInfo, numOfRows, (const char *)&pCluster->id, false);
|
COL_DATA_SET_VAL_RET((const char *)&pCluster->id, false, pCluster);
|
||||||
|
|
||||||
char buf[tListLen(pCluster->name) + VARSTR_HEADER_SIZE] = {0};
|
char buf[tListLen(pCluster->name) + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(buf, pCluster->name, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(buf, pCluster->name, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataSetVal(pColInfo, numOfRows, buf, false);
|
COL_DATA_SET_VAL_RET(buf, false, pCluster);
|
||||||
|
|
||||||
int32_t upTime = mndGetClusterUpTimeImp(pCluster);
|
int32_t upTime = mndGetClusterUpTimeImp(pCluster);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataSetVal(pColInfo, numOfRows, (const char *)&upTime, false);
|
COL_DATA_SET_VAL_RET((const char *)&upTime, false, pCluster);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataSetVal(pColInfo, numOfRows, (const char *)&pCluster->createdTime, false);
|
COL_DATA_SET_VAL_RET((const char *)&pCluster->createdTime, false, pCluster);
|
||||||
|
|
||||||
char ver[12] = {0};
|
char ver[12] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(ver, tsVersionName, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(ver, tsVersionName, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataSetVal(pColInfo, numOfRows, (const char *)ver, false);
|
COL_DATA_SET_VAL_RET((const char *)ver, false, pCluster);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
char expireTime[25] = {0};
|
||||||
if (tsExpireTime <= 0) {
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
|
if (GRANT_EXPIRE_UNLIMITED(tsExpireTime / 1000)) {
|
||||||
|
STR_WITH_MAXSIZE_TO_VARSTR(expireTime, "unlimited", pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
COL_DATA_SET_VAL_RET(expireTime, false, pCluster);
|
||||||
|
} else if (tsExpireTime <= 0) {
|
||||||
colDataSetNULL(pColInfo, numOfRows);
|
colDataSetNULL(pColInfo, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
colDataSetVal(pColInfo, numOfRows, (const char *)&tsExpireTime, false);
|
char ts[20] = {0};
|
||||||
|
time_t expireSec = tsExpireTime / 1000;
|
||||||
|
struct tm ptm;
|
||||||
|
if (taosLocalTime(&expireSec, &ptm, ts) != NULL) {
|
||||||
|
strftime(ts, 20, "%Y-%m-%d %H:%M:%S", &ptm);
|
||||||
|
} else {
|
||||||
|
ts[0] = 0;
|
||||||
|
}
|
||||||
|
STR_WITH_MAXSIZE_TO_VARSTR(expireTime, ts, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
COL_DATA_SET_VAL_RET(expireTime, false, pCluster);
|
||||||
}
|
}
|
||||||
|
|
||||||
sdbRelease(pSdb, pCluster);
|
sdbRelease(pSdb, pCluster);
|
||||||
|
|
Loading…
Reference in New Issue