Merge pull request #17624 from taosdata/szhou/fixbugs
fix: set correct var meta length after tDecodeDataBlock
This commit is contained in:
commit
309bad6b3b
|
@ -1707,8 +1707,6 @@ void* tDecodeDataBlock(const void* buf, SSDataBlock* pBlock) {
|
||||||
|
|
||||||
if (IS_VAR_DATA_TYPE(data.info.type)) {
|
if (IS_VAR_DATA_TYPE(data.info.type)) {
|
||||||
buf = taosDecodeBinary(buf, (void**)&data.varmeta.offset, pBlock->info.rows * sizeof(int32_t));
|
buf = taosDecodeBinary(buf, (void**)&data.varmeta.offset, pBlock->info.rows * sizeof(int32_t));
|
||||||
data.varmeta.length = pBlock->info.rows * sizeof(int32_t);
|
|
||||||
data.varmeta.allocLen = data.varmeta.length;
|
|
||||||
} else {
|
} else {
|
||||||
buf = taosDecodeBinary(buf, (void**)&data.nullbitmap, BitmapLen(pBlock->info.rows));
|
buf = taosDecodeBinary(buf, (void**)&data.nullbitmap, BitmapLen(pBlock->info.rows));
|
||||||
}
|
}
|
||||||
|
@ -1716,6 +1714,10 @@ void* tDecodeDataBlock(const void* buf, SSDataBlock* pBlock) {
|
||||||
int32_t len = 0;
|
int32_t len = 0;
|
||||||
buf = taosDecodeFixedI32(buf, &len);
|
buf = taosDecodeFixedI32(buf, &len);
|
||||||
buf = taosDecodeBinary(buf, (void**)&data.pData, len);
|
buf = taosDecodeBinary(buf, (void**)&data.pData, len);
|
||||||
|
if (IS_VAR_DATA_TYPE(data.info.type)) {
|
||||||
|
data.varmeta.length = len;
|
||||||
|
data.varmeta.allocLen = len;
|
||||||
|
}
|
||||||
taosArrayPush(pBlock->pDataBlock, &data);
|
taosArrayPush(pBlock->pDataBlock, &data);
|
||||||
}
|
}
|
||||||
return (void*)buf;
|
return (void*)buf;
|
||||||
|
|
|
@ -888,10 +888,11 @@ static int32_t udfdUvInit() {
|
||||||
}
|
}
|
||||||
global.loop = loop;
|
global.loop = loop;
|
||||||
|
|
||||||
uv_pipe_init(global.loop, &global.ctrlPipe, 1);
|
if (tsStartUdfd) { // udfd is started by taosd, which shall exit when taosd exit
|
||||||
uv_pipe_open(&global.ctrlPipe, 0);
|
uv_pipe_init(global.loop, &global.ctrlPipe, 1);
|
||||||
uv_read_start((uv_stream_t *)&global.ctrlPipe, udfdCtrlAllocBufCb, udfdCtrlReadCb);
|
uv_pipe_open(&global.ctrlPipe, 0);
|
||||||
|
uv_read_start((uv_stream_t *)&global.ctrlPipe, udfdCtrlAllocBufCb, udfdCtrlReadCb);
|
||||||
|
}
|
||||||
getUdfdPipeName(global.listenPipeName, sizeof(global.listenPipeName));
|
getUdfdPipeName(global.listenPipeName, sizeof(global.listenPipeName));
|
||||||
|
|
||||||
removeListeningPipe();
|
removeListeningPipe();
|
||||||
|
@ -979,13 +980,13 @@ int32_t udfdDeinitResidentFuncs() {
|
||||||
char* funcName = taosArrayGet(global.residentFuncs, i);
|
char* funcName = taosArrayGet(global.residentFuncs, i);
|
||||||
SUdf** udfInHash = taosHashGet(global.udfsHash, funcName, strlen(funcName));
|
SUdf** udfInHash = taosHashGet(global.udfsHash, funcName, strlen(funcName));
|
||||||
if (udfInHash) {
|
if (udfInHash) {
|
||||||
taosHashRemove(global.udfsHash, funcName, strlen(funcName));
|
|
||||||
SUdf* udf = *udfInHash;
|
SUdf* udf = *udfInHash;
|
||||||
if (udf->destroyFunc) {
|
if (udf->destroyFunc) {
|
||||||
(udf->destroyFunc)();
|
(udf->destroyFunc)();
|
||||||
}
|
}
|
||||||
uv_dlclose(&udf->lib);
|
uv_dlclose(&udf->lib);
|
||||||
taosMemoryFree(udf);
|
taosMemoryFree(udf);
|
||||||
|
taosHashRemove(global.udfsHash, funcName, strlen(funcName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
taosArrayDestroy(global.residentFuncs);
|
taosArrayDestroy(global.residentFuncs);
|
||||||
|
|
|
@ -1085,7 +1085,8 @@ EDealRes sclRewriteNonConstOperator(SNode **pNode, SScalarCtx *ctx) {
|
||||||
EDealRes sclRewriteFunction(SNode **pNode, SScalarCtx *ctx) {
|
EDealRes sclRewriteFunction(SNode **pNode, SScalarCtx *ctx) {
|
||||||
SFunctionNode *node = (SFunctionNode *)*pNode;
|
SFunctionNode *node = (SFunctionNode *)*pNode;
|
||||||
SNode *tnode = NULL;
|
SNode *tnode = NULL;
|
||||||
if (!fmIsScalarFunc(node->funcId) && (!ctx->dual)) {
|
if ((!fmIsScalarFunc(node->funcId) && (!ctx->dual)) ||
|
||||||
|
fmIsUserDefinedFunc(node->funcId)) {
|
||||||
return DEAL_RES_CONTINUE;
|
return DEAL_RES_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue