commit
679553f7ae
|
@ -577,11 +577,16 @@ char *metaTbCursorNext(SMTbCursor *pTbCur) {
|
||||||
STbCfg tbCfg;
|
STbCfg tbCfg;
|
||||||
void * pBuf;
|
void * pBuf;
|
||||||
|
|
||||||
if (pTbCur->pCur->get(pTbCur->pCur, &key, &value, DB_NEXT) == 0) {
|
for (;;) {
|
||||||
pBuf = value.data;
|
if (pTbCur->pCur->get(pTbCur->pCur, &key, &value, DB_NEXT) == 0) {
|
||||||
metaDecodeTbInfo(pBuf, &tbCfg);
|
pBuf = value.data;
|
||||||
return tbCfg.name;
|
metaDecodeTbInfo(pBuf, &tbCfg);
|
||||||
} else {
|
if (tbCfg.type == META_SUPER_TABLE) {
|
||||||
return NULL;
|
continue;
|
||||||
|
}
|
||||||
|
return tbCfg.name;
|
||||||
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -88,13 +88,9 @@ void tEndEncode(SCoder* pCoder) {
|
||||||
pCoder->size = pNode->size;
|
pCoder->size = pNode->size;
|
||||||
pCoder->pos = pNode->pos;
|
pCoder->pos = pNode->pos;
|
||||||
|
|
||||||
if (TD_RT_ENDIAN() == pCoder->endian) {
|
tEncodeI32(pCoder, len);
|
||||||
tPut(int32_t, pCoder->data + pCoder->pos, len);
|
|
||||||
} else {
|
|
||||||
tRPut32(pCoder->data + pCoder->pos, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
TD_CODER_MOVE_POS(pCoder, len + sizeof(int32_t));
|
TD_CODER_MOVE_POS(pCoder, len);
|
||||||
|
|
||||||
free(pNode);
|
free(pNode);
|
||||||
}
|
}
|
||||||
|
@ -127,15 +123,14 @@ void tEndDecode(SCoder* pCoder) {
|
||||||
struct SCoderNode* pNode;
|
struct SCoderNode* pNode;
|
||||||
|
|
||||||
ASSERT(pCoder->type == TD_DECODER);
|
ASSERT(pCoder->type == TD_DECODER);
|
||||||
ASSERT(tDecodeIsEnd(pCoder));
|
|
||||||
|
|
||||||
pNode = TD_SLIST_HEAD(&(pCoder->stack));
|
pNode = TD_SLIST_HEAD(&(pCoder->stack));
|
||||||
ASSERT(pNode);
|
ASSERT(pNode);
|
||||||
TD_SLIST_POP(&(pCoder->stack));
|
TD_SLIST_POP(&(pCoder->stack));
|
||||||
|
|
||||||
pCoder->data = pNode->data;
|
pCoder->data = pNode->data;
|
||||||
|
pCoder->pos = pCoder->size + pNode->pos;
|
||||||
pCoder->size = pNode->size;
|
pCoder->size = pNode->size;
|
||||||
pCoder->pos = pCoder->pos + pNode->pos;
|
|
||||||
|
|
||||||
free(pNode);
|
free(pNode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -360,8 +360,8 @@ TEST(td_encode_test, compound_struct_encode_test) {
|
||||||
SStructA_v2 sa2 = {.A_a = 10, .A_b = 65478, .A_c = "Hello", .A_d = 67, .A_e = 13};
|
SStructA_v2 sa2 = {.A_a = 10, .A_b = 65478, .A_c = "Hello", .A_d = 67, .A_e = 13};
|
||||||
SFinalReq_v1 req1 = {.pA = &sa1, .v_a = 15, .v_b = 35};
|
SFinalReq_v1 req1 = {.pA = &sa1, .v_a = 15, .v_b = 35};
|
||||||
SFinalReq_v2 req2 = {.pA = &sa2, .v_a = 15, .v_b = 32, .v_c = 37};
|
SFinalReq_v2 req2 = {.pA = &sa2, .v_a = 15, .v_b = 32, .v_c = 37};
|
||||||
SFinalReq_v1 dreq1;
|
SFinalReq_v1 dreq11, dreq21;
|
||||||
SFinalReq_v2 dreq21, dreq22;
|
SFinalReq_v2 dreq12, dreq22;
|
||||||
|
|
||||||
// Get size
|
// Get size
|
||||||
tCoderInit(&encoder, TD_LITTLE_ENDIAN, nullptr, 0, TD_ENCODER);
|
tCoderInit(&encoder, TD_LITTLE_ENDIAN, nullptr, 0, TD_ENCODER);
|
||||||
|
@ -386,27 +386,30 @@ TEST(td_encode_test, compound_struct_encode_test) {
|
||||||
tCoderClear(&encoder);
|
tCoderClear(&encoder);
|
||||||
|
|
||||||
// Decode
|
// Decode
|
||||||
|
// buf1 -> req1
|
||||||
tCoderInit(&decoder, TD_LITTLE_ENDIAN, buf1, buf1size, TD_DECODER);
|
tCoderInit(&decoder, TD_LITTLE_ENDIAN, buf1, buf1size, TD_DECODER);
|
||||||
GTEST_ASSERT_EQ(tSFinalReq_v1_decode(&decoder, &dreq1), 0);
|
GTEST_ASSERT_EQ(tSFinalReq_v1_decode(&decoder, &dreq11), 0);
|
||||||
GTEST_ASSERT_EQ(dreq1.pA->A_a, req1.pA->A_a);
|
GTEST_ASSERT_EQ(dreq11.pA->A_a, req1.pA->A_a);
|
||||||
GTEST_ASSERT_EQ(dreq1.pA->A_b, req1.pA->A_b);
|
GTEST_ASSERT_EQ(dreq11.pA->A_b, req1.pA->A_b);
|
||||||
GTEST_ASSERT_EQ(strcmp(dreq1.pA->A_c, req1.pA->A_c), 0);
|
GTEST_ASSERT_EQ(strcmp(dreq11.pA->A_c, req1.pA->A_c), 0);
|
||||||
GTEST_ASSERT_EQ(dreq1.v_a, req1.v_a);
|
GTEST_ASSERT_EQ(dreq11.v_a, req1.v_a);
|
||||||
GTEST_ASSERT_EQ(dreq1.v_b, req1.v_b);
|
GTEST_ASSERT_EQ(dreq11.v_b, req1.v_b);
|
||||||
tCoderClear(&decoder);
|
tCoderClear(&decoder);
|
||||||
|
|
||||||
|
// buf1 -> req2 (backward compatibility)
|
||||||
tCoderInit(&decoder, TD_LITTLE_ENDIAN, buf1, buf1size, TD_DECODER);
|
tCoderInit(&decoder, TD_LITTLE_ENDIAN, buf1, buf1size, TD_DECODER);
|
||||||
GTEST_ASSERT_EQ(tSFinalReq_v2_decode(&decoder, &dreq21), 0);
|
GTEST_ASSERT_EQ(tSFinalReq_v2_decode(&decoder, &dreq12), 0);
|
||||||
GTEST_ASSERT_EQ(dreq21.pA->A_a, req1.pA->A_a);
|
GTEST_ASSERT_EQ(dreq12.pA->A_a, req1.pA->A_a);
|
||||||
GTEST_ASSERT_EQ(dreq21.pA->A_b, req1.pA->A_b);
|
GTEST_ASSERT_EQ(dreq12.pA->A_b, req1.pA->A_b);
|
||||||
GTEST_ASSERT_EQ(strcmp(dreq21.pA->A_c, req1.pA->A_c), 0);
|
GTEST_ASSERT_EQ(strcmp(dreq12.pA->A_c, req1.pA->A_c), 0);
|
||||||
GTEST_ASSERT_EQ(dreq21.pA->A_d, 0);
|
GTEST_ASSERT_EQ(dreq12.pA->A_d, 0);
|
||||||
GTEST_ASSERT_EQ(dreq21.pA->A_e, 0);
|
GTEST_ASSERT_EQ(dreq12.pA->A_e, 0);
|
||||||
GTEST_ASSERT_EQ(dreq21.v_a, req1.v_a);
|
GTEST_ASSERT_EQ(dreq12.v_a, req1.v_a);
|
||||||
GTEST_ASSERT_EQ(dreq21.v_b, req1.v_b);
|
GTEST_ASSERT_EQ(dreq12.v_b, req1.v_b);
|
||||||
GTEST_ASSERT_EQ(dreq21.v_c, 0);
|
GTEST_ASSERT_EQ(dreq12.v_c, 0);
|
||||||
tCoderClear(&decoder);
|
tCoderClear(&decoder);
|
||||||
|
|
||||||
|
// buf2 -> req2
|
||||||
tCoderInit(&decoder, TD_LITTLE_ENDIAN, buf2, buf2size, TD_DECODER);
|
tCoderInit(&decoder, TD_LITTLE_ENDIAN, buf2, buf2size, TD_DECODER);
|
||||||
GTEST_ASSERT_EQ(tSFinalReq_v2_decode(&decoder, &dreq22), 0);
|
GTEST_ASSERT_EQ(tSFinalReq_v2_decode(&decoder, &dreq22), 0);
|
||||||
GTEST_ASSERT_EQ(dreq22.pA->A_a, req2.pA->A_a);
|
GTEST_ASSERT_EQ(dreq22.pA->A_a, req2.pA->A_a);
|
||||||
|
@ -418,4 +421,13 @@ TEST(td_encode_test, compound_struct_encode_test) {
|
||||||
GTEST_ASSERT_EQ(dreq22.v_b, req2.v_b);
|
GTEST_ASSERT_EQ(dreq22.v_b, req2.v_b);
|
||||||
GTEST_ASSERT_EQ(dreq22.v_c, req2.v_c);
|
GTEST_ASSERT_EQ(dreq22.v_c, req2.v_c);
|
||||||
tCoderClear(&decoder);
|
tCoderClear(&decoder);
|
||||||
|
|
||||||
|
tCoderInit(&decoder, TD_LITTLE_ENDIAN, buf2, buf2size, TD_DECODER);
|
||||||
|
GTEST_ASSERT_EQ(tSFinalReq_v1_decode(&decoder, &dreq21), 0);
|
||||||
|
GTEST_ASSERT_EQ(dreq21.pA->A_a, req2.pA->A_a);
|
||||||
|
GTEST_ASSERT_EQ(dreq21.pA->A_b, req2.pA->A_b);
|
||||||
|
GTEST_ASSERT_EQ(strcmp(dreq21.pA->A_c, req2.pA->A_c), 0);
|
||||||
|
GTEST_ASSERT_EQ(dreq21.v_a, req2.v_a);
|
||||||
|
GTEST_ASSERT_EQ(dreq21.v_b, req2.v_b);
|
||||||
|
tCoderClear(&decoder);
|
||||||
}
|
}
|
Loading…
Reference in New Issue