fix:[TD-30180]error in judging if groupId already added to the end of table name
This commit is contained in:
parent
1eb6975db7
commit
f21eeae56c
|
@ -274,7 +274,7 @@ char* dumpBlockData(SSDataBlock* pDataBlock, const char* flag, char** dumpBuf, c
|
||||||
int32_t buildSubmitReqFromDataBlock(SSubmitReq2** pReq, const SSDataBlock* pDataBlocks, const STSchema* pTSchema, int64_t uid, int32_t vgId,
|
int32_t buildSubmitReqFromDataBlock(SSubmitReq2** pReq, const SSDataBlock* pDataBlocks, const STSchema* pTSchema, int64_t uid, int32_t vgId,
|
||||||
tb_uid_t suid);
|
tb_uid_t suid);
|
||||||
|
|
||||||
bool alreadyAddGroupId(char* ctbName);
|
bool alreadyAddGroupId(char* ctbName, int64_t groupId);
|
||||||
bool isAutoTableName(char* ctbName);
|
bool isAutoTableName(char* ctbName);
|
||||||
void buildCtbNameAddGroupId(const char* stbName, char* ctbName, uint64_t groupId);
|
void buildCtbNameAddGroupId(const char* stbName, char* ctbName, uint64_t groupId);
|
||||||
char* buildCtbNameByGroupId(const char* stbName, uint64_t groupId);
|
char* buildCtbNameByGroupId(const char* stbName, uint64_t groupId);
|
||||||
|
|
|
@ -2435,18 +2435,13 @@ void buildCtbNameAddGroupId(const char* stbName, char* ctbName, uint64_t groupId
|
||||||
// the total length is fixed to be 34 bytes.
|
// the total length is fixed to be 34 bytes.
|
||||||
bool isAutoTableName(char* ctbName) { return (strlen(ctbName) == 34 && ctbName[0] == 't' && ctbName[1] == '_'); }
|
bool isAutoTableName(char* ctbName) { return (strlen(ctbName) == 34 && ctbName[0] == 't' && ctbName[1] == '_'); }
|
||||||
|
|
||||||
bool alreadyAddGroupId(char* ctbName) {
|
bool alreadyAddGroupId(char* ctbName, int64_t groupId) {
|
||||||
size_t len = strlen(ctbName);
|
char tmp[64] = {0};
|
||||||
if (len == 0) return false;
|
snprintf(tmp, sizeof(tmp), "%" PRIu64, groupId);
|
||||||
size_t _location = len - 1;
|
size_t len1 = strlen(ctbName);
|
||||||
while (_location > 0) {
|
size_t len2 = strlen(tmp);
|
||||||
if (ctbName[_location] < '0' || ctbName[_location] > '9') {
|
if (len1 < len2) return false;
|
||||||
break;
|
return memcmp(ctbName + len1 - len2, tmp, len2) == 0;
|
||||||
}
|
|
||||||
_location--;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ctbName[_location] == '_' && len - 1 - _location >= 15; // 15 means the min length of groupid
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char* buildCtbNameByGroupId(const char* stbFullName, uint64_t groupId) {
|
char* buildCtbNameByGroupId(const char* stbFullName, uint64_t groupId) {
|
||||||
|
|
|
@ -692,4 +692,38 @@ TEST(timeTest, epSet) {
|
||||||
ASSERT_EQ(ep.numOfEps, 1);
|
ASSERT_EQ(ep.numOfEps, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Define test cases
|
||||||
|
TEST(AlreadyAddGroupIdTest, GroupIdAdded) {
|
||||||
|
// Test case 1: Group ID has been added
|
||||||
|
char ctbName[64] = "abc123";
|
||||||
|
int64_t groupId = 123;
|
||||||
|
bool result = alreadyAddGroupId(ctbName, groupId);
|
||||||
|
EXPECT_TRUE(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(AlreadyAddGroupIdTest, GroupIdNotAdded) {
|
||||||
|
// Test case 2: Group ID has not been added
|
||||||
|
char ctbName[64] = "abc456";
|
||||||
|
int64_t groupId = 123;
|
||||||
|
bool result = alreadyAddGroupId(ctbName, groupId);
|
||||||
|
EXPECT_FALSE(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(AlreadyAddGroupIdTest, GroupIdAddedAtTheEnd) {
|
||||||
|
// Test case 3: Group ID has been added at the end
|
||||||
|
char ctbName[64] = "xyz1";
|
||||||
|
int64_t groupId = 1;
|
||||||
|
bool result = alreadyAddGroupId(ctbName, groupId);
|
||||||
|
EXPECT_TRUE(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(AlreadyAddGroupIdTest, GroupIdAddedWithDifferentLength) {
|
||||||
|
// Test case 4: Group ID has been added with different length
|
||||||
|
char ctbName[64] = "def";
|
||||||
|
int64_t groupId = 123456;
|
||||||
|
bool result = alreadyAddGroupId(ctbName, groupId);
|
||||||
|
EXPECT_FALSE(result);
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
|
|
@ -71,7 +71,7 @@ int32_t tqBuildDeleteReq(STQ* pTq, const char* stbFullName, const SSDataBlock* p
|
||||||
if (varTbName != NULL && varTbName != (void*)-1) {
|
if (varTbName != NULL && varTbName != (void*)-1) {
|
||||||
name = taosMemoryCalloc(1, TSDB_TABLE_NAME_LEN);
|
name = taosMemoryCalloc(1, TSDB_TABLE_NAME_LEN);
|
||||||
memcpy(name, varDataVal(varTbName), varDataLen(varTbName));
|
memcpy(name, varDataVal(varTbName), varDataLen(varTbName));
|
||||||
if (newSubTableRule && !isAutoTableName(name) && !alreadyAddGroupId(name) && groupId != 0 && stbFullName) {
|
if (newSubTableRule && !isAutoTableName(name) && !alreadyAddGroupId(name, groupId) && groupId != 0 && stbFullName) {
|
||||||
buildCtbNameAddGroupId(stbFullName, name, groupId);
|
buildCtbNameAddGroupId(stbFullName, name, groupId);
|
||||||
}
|
}
|
||||||
} else if (stbFullName) {
|
} else if (stbFullName) {
|
||||||
|
@ -182,7 +182,7 @@ void setCreateTableMsgTableName(SVCreateTbReq* pCreateTableReq, SSDataBlock* pDa
|
||||||
int64_t gid, bool newSubTableRule) {
|
int64_t gid, bool newSubTableRule) {
|
||||||
if (pDataBlock->info.parTbName[0]) {
|
if (pDataBlock->info.parTbName[0]) {
|
||||||
if (newSubTableRule && !isAutoTableName(pDataBlock->info.parTbName) &&
|
if (newSubTableRule && !isAutoTableName(pDataBlock->info.parTbName) &&
|
||||||
!alreadyAddGroupId(pDataBlock->info.parTbName) && gid != 0 && stbFullName) {
|
!alreadyAddGroupId(pDataBlock->info.parTbName, gid) && gid != 0 && stbFullName) {
|
||||||
pCreateTableReq->name = taosMemoryCalloc(1, TSDB_TABLE_NAME_LEN);
|
pCreateTableReq->name = taosMemoryCalloc(1, TSDB_TABLE_NAME_LEN);
|
||||||
strcpy(pCreateTableReq->name, pDataBlock->info.parTbName);
|
strcpy(pCreateTableReq->name, pDataBlock->info.parTbName);
|
||||||
buildCtbNameAddGroupId(stbFullName, pCreateTableReq->name, gid);
|
buildCtbNameAddGroupId(stbFullName, pCreateTableReq->name, gid);
|
||||||
|
@ -713,7 +713,7 @@ int32_t setDstTableDataUid(SVnode* pVnode, SStreamTask* pTask, SSDataBlock* pDat
|
||||||
buildCtbNameByGroupIdImpl(stbFullName, groupId, dstTableName);
|
buildCtbNameByGroupIdImpl(stbFullName, groupId, dstTableName);
|
||||||
} else {
|
} else {
|
||||||
if (pTask->subtableWithoutMd5 != 1 && !isAutoTableName(dstTableName) &&
|
if (pTask->subtableWithoutMd5 != 1 && !isAutoTableName(dstTableName) &&
|
||||||
!alreadyAddGroupId(dstTableName) && groupId != 0) {
|
!alreadyAddGroupId(dstTableName, groupId) && groupId != 0) {
|
||||||
tqDebug("s-task:%s append groupId:%" PRId64 " for generated dstTable:%s", id, groupId, dstTableName);
|
tqDebug("s-task:%s append groupId:%" PRId64 " for generated dstTable:%s", id, groupId, dstTableName);
|
||||||
if(pTask->ver == SSTREAM_TASK_SUBTABLE_CHANGED_VER){
|
if(pTask->ver == SSTREAM_TASK_SUBTABLE_CHANGED_VER){
|
||||||
buildCtbNameAddGroupId(NULL, dstTableName, groupId);
|
buildCtbNameAddGroupId(NULL, dstTableName, groupId);
|
||||||
|
|
|
@ -494,7 +494,7 @@ int32_t streamSearchAndAddBlock(SStreamTask* pTask, SStreamDispatchReq* pReqs, S
|
||||||
if (pDataBlock->info.parTbName[0]) {
|
if (pDataBlock->info.parTbName[0]) {
|
||||||
if(pTask->subtableWithoutMd5 != 1 &&
|
if(pTask->subtableWithoutMd5 != 1 &&
|
||||||
!isAutoTableName(pDataBlock->info.parTbName) &&
|
!isAutoTableName(pDataBlock->info.parTbName) &&
|
||||||
!alreadyAddGroupId(pDataBlock->info.parTbName) &&
|
!alreadyAddGroupId(pDataBlock->info.parTbName, groupId) &&
|
||||||
groupId != 0){
|
groupId != 0){
|
||||||
if(pTask->ver == SSTREAM_TASK_SUBTABLE_CHANGED_VER){
|
if(pTask->ver == SSTREAM_TASK_SUBTABLE_CHANGED_VER){
|
||||||
buildCtbNameAddGroupId(NULL, pDataBlock->info.parTbName, groupId);
|
buildCtbNameAddGroupId(NULL, pDataBlock->info.parTbName, groupId);
|
||||||
|
|
Loading…
Reference in New Issue