Merge pull request #27792 from taosdata/feat/TS-4257

feat:Optimising the duration and keep
This commit is contained in:
Pan Wei 2024-09-12 09:24:53 +08:00 committed by GitHub
commit 5953e94e5c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 64 additions and 77 deletions

View File

@ -29,5 +29,6 @@ int32_t qExecExplainBegin(SQueryPlan *pDag, SExplainCtx **pCtx, int64_t startTs)
int32_t qExecExplainEnd(SExplainCtx *pCtx, SRetrieveTableRsp **pRsp);
int32_t qExplainUpdateExecInfo(SExplainCtx *pCtx, SExplainRsp *pRspMsg, int32_t groupId, SRetrieveTableRsp **pRsp);
void qExplainFreeCtx(SExplainCtx *pCtx);
int32_t formatDurationOrKeep(char* buffer, int32_t timeInMinutes);
#endif

View File

@ -34,6 +34,7 @@
#include "systable.h"
#include "thttp.h"
#include "tjson.h"
#include "command.h"
#define DB_VER_NUMBER 1
#define DB_RESERVE_SIZE 27
@ -2321,18 +2322,25 @@ static void mndDumpDbInfoData(SMnode *pMnode, SSDataBlock *pBlock, SDbObj *pDb,
(void)colDataSetVal(pColInfo, rows, (const char *)strictVstr, false);
char durationVstr[128] = {0};
int32_t len = sprintf(&durationVstr[VARSTR_HEADER_SIZE], "%dm", pDb->cfg.daysPerFile);
int32_t len = formatDurationOrKeep(&durationVstr[VARSTR_HEADER_SIZE], pDb->cfg.daysPerFile);
varDataSetLen(durationVstr, len);
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
(void)colDataSetVal(pColInfo, rows, (const char *)durationVstr, false);
char keepVstr[128] = {0};
char keepVstr[512] = {0};
char keep0Str[128] = {0};
char keep1Str[128] = {0};
char keep2Str[128] = {0};
int32_t lenKeep0 = formatDurationOrKeep(keep0Str, pDb->cfg.daysToKeep0);
int32_t lenKeep1 = formatDurationOrKeep(keep1Str, pDb->cfg.daysToKeep1);
int32_t lenKeep2 = formatDurationOrKeep(keep2Str, pDb->cfg.daysToKeep2);
if (pDb->cfg.daysToKeep0 > pDb->cfg.daysToKeep1 || pDb->cfg.daysToKeep0 > pDb->cfg.daysToKeep2) {
len = sprintf(&keepVstr[VARSTR_HEADER_SIZE], "%dm,%dm,%dm", pDb->cfg.daysToKeep1, pDb->cfg.daysToKeep2,
pDb->cfg.daysToKeep0);
len = sprintf(&keepVstr[VARSTR_HEADER_SIZE], "%s,%s,%s", keep1Str, keep2Str, keep0Str);
} else {
len = sprintf(&keepVstr[VARSTR_HEADER_SIZE], "%dm,%dm,%dm", pDb->cfg.daysToKeep0, pDb->cfg.daysToKeep1,
pDb->cfg.daysToKeep2);
len = sprintf(&keepVstr[VARSTR_HEADER_SIZE], "%s,%s,%s", keep0Str, keep1Str, keep2Str);
}
varDataSetLen(keepVstr, len);
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);

View File

@ -344,27 +344,18 @@ static const char* encryptAlgorithmStr(int8_t encryptAlgorithm) {
return TSDB_CACHE_MODEL_NONE_STR;
}
static int32_t formatDurationOrKeep(char** buffer, int32_t timeInMinutes) {
int len = 0;
int32_t formatDurationOrKeep(char* buffer, int32_t timeInMinutes) {
int32_t len = 0;
if (timeInMinutes % 1440 == 0) {
int days = timeInMinutes / 1440;
len = snprintf(NULL, 0, "%dd", days);
*buffer = (char*)taosMemoryCalloc(len + 1, sizeof(char));
if(*buffer == NULL) return terrno;
sprintf(*buffer, "%dd", days);
int32_t days = timeInMinutes / 1440;
len = sprintf(buffer, "%dd", days);
} else if (timeInMinutes % 60 == 0) {
int hours = timeInMinutes / 60;
len = snprintf(NULL, 0, "%dh", hours);
*buffer = (char*)taosMemoryCalloc(len + 1, sizeof(char));
if(*buffer == NULL) return terrno;
sprintf(*buffer, "%dh", hours);
int32_t hours = timeInMinutes / 60;
len = sprintf(buffer, "%dh", hours);
} else {
len = snprintf(NULL, 0, "%dm", timeInMinutes);
*buffer = (char*)taosMemoryCalloc(len + 1, sizeof(char));
if(*buffer == NULL) return terrno;
sprintf(*buffer, "%dm", timeInMinutes);
len = sprintf(buffer, "%dm", timeInMinutes);
}
return TSDB_CODE_SUCCESS;
return len;
}
static int32_t setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbName, char* dbFName, SDbCfgInfo* pCfg) {
@ -404,25 +395,16 @@ static int32_t setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbName,
} else if (pCfg->hashPrefix < 0) {
hashPrefix = pCfg->hashPrefix + dbFNameLen + 1;
}
char* durationStr = NULL;
char* keep0Str = NULL;
char* keep1Str = NULL;
char* keep2Str = NULL;
int32_t codeDuration = formatDurationOrKeep(&durationStr, pCfg->daysPerFile);
int32_t codeKeep0 = formatDurationOrKeep(&keep0Str, pCfg->daysToKeep0);
int32_t codeKeep1 = formatDurationOrKeep(&keep1Str, pCfg->daysToKeep1);
int32_t codeKeep2 = formatDurationOrKeep(&keep2Str, pCfg->daysToKeep2);
if(codeDuration != TSDB_CODE_SUCCESS || codeKeep0 != TSDB_CODE_SUCCESS || codeKeep1 != TSDB_CODE_SUCCESS || codeKeep2 != TSDB_CODE_SUCCESS) {
int32_t firstErrorCode = codeDuration != TSDB_CODE_SUCCESS ? codeDuration :
codeKeep0 != TSDB_CODE_SUCCESS ? codeKeep0 :
codeKeep1 != TSDB_CODE_SUCCESS ? codeKeep1 : codeKeep2;
taosMemoryFree(pRetentions);
taosMemoryFree(durationStr);
taosMemoryFree(keep0Str);
taosMemoryFree(keep1Str);
taosMemoryFree(keep2Str);
return firstErrorCode;
}
char durationStr[128] = {0};
char keep0Str[128] = {0};
char keep1Str[128] = {0};
char keep2Str[128] = {0};
int32_t lenDuration = formatDurationOrKeep(durationStr, pCfg->daysPerFile);
int32_t lenKeep0 = formatDurationOrKeep(keep0Str, pCfg->daysToKeep0);
int32_t lenKeep1 = formatDurationOrKeep(keep1Str, pCfg->daysToKeep1);
int32_t lenKeep2 = formatDurationOrKeep(keep2Str, pCfg->daysToKeep2);
if (IS_SYS_DBNAME(dbName)) {
len += sprintf(buf2 + VARSTR_HEADER_SIZE, "CREATE DATABASE `%s`", dbName);
} else {
@ -449,10 +431,6 @@ static int32_t setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbName,
}
taosMemoryFree(pRetentions);
taosMemoryFree(durationStr);
taosMemoryFree(keep0Str);
taosMemoryFree(keep1Str);
taosMemoryFree(keep2Str);
(varDataLen(buf2)) = len;

View File

@ -72,10 +72,10 @@ endi
if $data5_db != on then # strict
return -1
endi
if $data6_db != 345600m then # duration
if $data6_db != 240d then # duration
return -1
endi
if $data7_db != 1440000m,1440000m,1440000m then # keep
if $data7_db != 1000d,1000d,1000d then # keep
return -1
endi
if $data8_db != 256 then # buffer
@ -220,7 +220,7 @@ print ============== modify keep
sql alter database db keep 2400
sql select * from information_schema.ins_databases
print keep $data7_db
if $data7_db != 3456000m,3456000m,3456000m then
if $data7_db != 2400d,2400d,2400d then
return -1
endi

View File

@ -34,10 +34,10 @@ endi
if $data24 != 1 then
return -1
endi
if $data26 != 2880m then
if $data26 != 2d then
return -1
endi
if $data27 != 14400m,14400m,14400m then
if $data27 != 10d,10d,10d then
return -1
endi
#if $data28 != 32 then
@ -78,7 +78,7 @@ endi
if $data24 != 1 then
return -1
endi
if $data26 != 21600m then
if $data26 != 15d then
return -1
endi

View File

@ -92,10 +92,10 @@ endi
if $data5_db != on then # strict
return -1
endi
if $data6_db != 14400m then # duration
if $data6_db != 10d then # duration
return -1
endi
if $data7_db != 5256000m,5256000m,5256000m then # keep
if $data7_db != 3650d,3650d,3650d then # keep
return -1
endi
if $data8_db != 256 then # buffer

View File

@ -45,7 +45,7 @@ print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07
if $data22 != 2 then
return -1
endi
if $data27 != 86400m,86400m,86400m then
if $data27 != 60d,60d,60d then
return -1
endi
@ -86,7 +86,7 @@ sql select * from information_schema.ins_databases
if $data22 != 2 then
return -1
endi
if $data27 != 43200m,43200m,43200m then
if $data27 != 30d,30d,30d then
return -1
endi

View File

@ -40,7 +40,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 30240m,30240m,30240m then
if $data27 != 21d,21d,21d then
return -1
endi
sql alter database $db keep 11,12
@ -48,7 +48,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 15840m,17280m,17280m then
if $data27 != 11d,12d,12d then
return -1
endi
sql alter database $db keep 20,20,20
@ -56,7 +56,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 28800m,28800m,28800m then
if $data27 != 20d,20d,20d then
return -1
endi
sql alter database $db keep 10,10,10
@ -64,7 +64,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 14400m,14400m,14400m then
if $data27 != 10d,10d,10d then
return -1
endi
sql alter database $db keep 10,10,11
@ -72,7 +72,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 14400m,14400m,15840m then
if $data27 != 10d,10d,11d then
return -1
endi
sql alter database $db keep 11,12,13
@ -80,7 +80,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 15840m,17280m,18720m then
if $data27 != 11d,12d,13d then
return -1
endi
sql alter database $db keep 365000,365000,365000
@ -88,7 +88,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 525600000m,525600000m,525600000m then
if $data27 != 365000d,365000d,365000d then
return -1
endi

View File

@ -23,7 +23,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 28800m,28800m,28800m then
if $data27 != 20d,20d,20d then
return -1
endi
@ -49,7 +49,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 28800m,28800m,28800m then
if $data27 != 20d,20d,20d then
return -1
endi
sql alter database $db keep 10
@ -57,7 +57,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 14400m,14400m,14400m then
if $data27 != 10d,10d,10d then
return -1
endi
sql alter database $db keep 11
@ -65,7 +65,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 15840m,15840m,15840m then
if $data27 != 11d,11d,11d then
return -1
endi
sql alter database $db keep 13
@ -73,7 +73,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 18720m,18720m,18720m then
if $data27 != 13d,13d,13d then
return -1
endi
sql alter database $db keep 365000
@ -81,7 +81,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 525600000m,525600000m,525600000m then
if $data27 != 365000d,365000d,365000d then
return -1
endi

View File

@ -118,10 +118,10 @@ endi
if $data24 != $replica then
return -1
endi
if $data26 != 14400m then
if $data26 != 10d then
return -1
endi
if $data27 != 525600m,525600m,525600m then
if $data27 != 365d,365d,365d then
return -1
endi
@ -155,7 +155,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 56160m,56160m,56160m then
if $data27 != 39d,39d,39d then
return -1
endi
sql drop database dbk0
@ -164,7 +164,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 56160m,57600m,57600m then
if $data27 != 39d,40d,40d then
return -1
endi
sql drop database dbka
@ -174,7 +174,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 15840m,15840m,15840m then
if $data27 != 11d,11d,11d then
return -1
endi
sql drop database dbk1
@ -183,7 +183,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 15840m,17280m,18720m then
if $data27 != 11d,12d,13d then
return -1
endi
sql drop database dbk2
@ -192,7 +192,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 15840m,15840m,18720m then
if $data27 != 11d,11d,13d then
return -1
endi
sql drop database dbk3
@ -201,7 +201,7 @@ sql select * from information_schema.ins_databases
if $rows != 3 then
return -1
endi
if $data27 != 15840m,18720m,18720m then
if $data27 != 11d,13d,13d then
return -1
endi
sql drop database dbk4