未验证 提交 309bad6b 编写于 作者: H Hongze Cheng 提交者: GitHub

Merge pull request #17624 from taosdata/szhou/fixbugs

fix: set correct var meta length after tDecodeDataBlock
...@@ -1707,8 +1707,6 @@ void* tDecodeDataBlock(const void* buf, SSDataBlock* pBlock) { ...@@ -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) { ...@@ -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() { ...@@ -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() { ...@@ -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) { ...@@ -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;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册