未验证 提交 398ccbcc 编写于 作者: D dapan1121 提交者: GitHub

Merge pull request #17957 from taosdata/fix/compareIssue

fix: fix compare invalid read issues
...@@ -1169,7 +1169,7 @@ int32_t fltAddGroupUnitFromNode(SFilterInfo *info, SNode *tree, SArray *group) { ...@@ -1169,7 +1169,7 @@ int32_t fltAddGroupUnitFromNode(SFilterInfo *info, SNode *tree, SArray *group) {
SScalarParam out = {.columnData = taosMemoryCalloc(1, sizeof(SColumnInfoData))}; SScalarParam out = {.columnData = taosMemoryCalloc(1, sizeof(SColumnInfoData))};
out.columnData->info.type = type; out.columnData->info.type = type;
out.columnData->info.bytes = tDataTypes[type].bytes; out.columnData->info.bytes = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes; //reserved space for simple_copy
for (int32_t i = 0; i < listNode->pNodeList->length; ++i) { for (int32_t i = 0; i < listNode->pNodeList->length; ++i) {
SValueNode *valueNode = (SValueNode *)cell->pNode; SValueNode *valueNode = (SValueNode *)cell->pNode;
...@@ -1191,7 +1191,7 @@ int32_t fltAddGroupUnitFromNode(SFilterInfo *info, SNode *tree, SArray *group) { ...@@ -1191,7 +1191,7 @@ int32_t fltAddGroupUnitFromNode(SFilterInfo *info, SNode *tree, SArray *group) {
filterAddField(info, NULL, (void **)&out.columnData->pData, FLD_TYPE_VALUE, &right, len, true); filterAddField(info, NULL, (void **)&out.columnData->pData, FLD_TYPE_VALUE, &right, len, true);
out.columnData->pData = NULL; out.columnData->pData = NULL;
} else { } else {
void *data = taosMemoryCalloc(1, tDataTypes[type].bytes); void *data = taosMemoryCalloc(1, tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes); //reserved space for simple_copy
if (NULL == data) { if (NULL == data) {
FLT_ERR_RET(TSDB_CODE_QRY_OUT_OF_MEMORY); FLT_ERR_RET(TSDB_CODE_QRY_OUT_OF_MEMORY);
} }
......
...@@ -249,7 +249,7 @@ int32_t compareJsonVal(const void *pLeft, const void *pRight) { ...@@ -249,7 +249,7 @@ int32_t compareJsonVal(const void *pLeft, const void *pRight) {
} }
int32_t compareInt8Int16(const void *pLeft, const void *pRight) { int32_t compareInt8Int16(const void *pLeft, const void *pRight) {
int8_t left = GET_INT32_VAL(pLeft); int8_t left = GET_INT8_VAL(pLeft);
int16_t right = GET_INT16_VAL(pRight); int16_t right = GET_INT16_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -257,7 +257,7 @@ int32_t compareInt8Int16(const void *pLeft, const void *pRight) { ...@@ -257,7 +257,7 @@ int32_t compareInt8Int16(const void *pLeft, const void *pRight) {
} }
int32_t compareInt8Int32(const void *pLeft, const void *pRight) { int32_t compareInt8Int32(const void *pLeft, const void *pRight) {
int8_t left = GET_INT32_VAL(pLeft); int8_t left = GET_INT8_VAL(pLeft);
int32_t right = GET_INT32_VAL(pRight); int32_t right = GET_INT32_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -265,7 +265,7 @@ int32_t compareInt8Int32(const void *pLeft, const void *pRight) { ...@@ -265,7 +265,7 @@ int32_t compareInt8Int32(const void *pLeft, const void *pRight) {
} }
int32_t compareInt8Int64(const void *pLeft, const void *pRight) { int32_t compareInt8Int64(const void *pLeft, const void *pRight) {
int8_t left = GET_INT32_VAL(pLeft); int8_t left = GET_INT8_VAL(pLeft);
int64_t right = GET_INT64_VAL(pRight); int64_t right = GET_INT64_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -273,7 +273,7 @@ int32_t compareInt8Int64(const void *pLeft, const void *pRight) { ...@@ -273,7 +273,7 @@ int32_t compareInt8Int64(const void *pLeft, const void *pRight) {
} }
int32_t compareInt8Float(const void *pLeft, const void *pRight) { int32_t compareInt8Float(const void *pLeft, const void *pRight) {
int8_t left = GET_INT32_VAL(pLeft); int8_t left = GET_INT8_VAL(pLeft);
float right = GET_FLOAT_VAL(pRight); float right = GET_FLOAT_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -281,7 +281,7 @@ int32_t compareInt8Float(const void *pLeft, const void *pRight) { ...@@ -281,7 +281,7 @@ int32_t compareInt8Float(const void *pLeft, const void *pRight) {
} }
int32_t compareInt8Double(const void *pLeft, const void *pRight) { int32_t compareInt8Double(const void *pLeft, const void *pRight) {
int8_t left = GET_INT32_VAL(pLeft); int8_t left = GET_INT8_VAL(pLeft);
double right = GET_DOUBLE_VAL(pRight); double right = GET_DOUBLE_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -289,7 +289,7 @@ int32_t compareInt8Double(const void *pLeft, const void *pRight) { ...@@ -289,7 +289,7 @@ int32_t compareInt8Double(const void *pLeft, const void *pRight) {
} }
int32_t compareInt8Uint8(const void *pLeft, const void *pRight) { int32_t compareInt8Uint8(const void *pLeft, const void *pRight) {
int8_t left = GET_INT32_VAL(pLeft); int8_t left = GET_INT8_VAL(pLeft);
uint8_t right = GET_UINT8_VAL(pRight); uint8_t right = GET_UINT8_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -297,7 +297,7 @@ int32_t compareInt8Uint8(const void *pLeft, const void *pRight) { ...@@ -297,7 +297,7 @@ int32_t compareInt8Uint8(const void *pLeft, const void *pRight) {
} }
int32_t compareInt8Uint16(const void *pLeft, const void *pRight) { int32_t compareInt8Uint16(const void *pLeft, const void *pRight) {
int8_t left = GET_INT32_VAL(pLeft); int8_t left = GET_INT8_VAL(pLeft);
uint16_t right = GET_UINT16_VAL(pRight); uint16_t right = GET_UINT16_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -305,7 +305,7 @@ int32_t compareInt8Uint16(const void *pLeft, const void *pRight) { ...@@ -305,7 +305,7 @@ int32_t compareInt8Uint16(const void *pLeft, const void *pRight) {
} }
int32_t compareInt8Uint32(const void *pLeft, const void *pRight) { int32_t compareInt8Uint32(const void *pLeft, const void *pRight) {
int8_t left = GET_INT32_VAL(pLeft); int8_t left = GET_INT8_VAL(pLeft);
uint32_t right = GET_UINT32_VAL(pRight); uint32_t right = GET_UINT32_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -313,7 +313,7 @@ int32_t compareInt8Uint32(const void *pLeft, const void *pRight) { ...@@ -313,7 +313,7 @@ int32_t compareInt8Uint32(const void *pLeft, const void *pRight) {
} }
int32_t compareInt8Uint64(const void *pLeft, const void *pRight) { int32_t compareInt8Uint64(const void *pLeft, const void *pRight) {
int8_t left = GET_INT32_VAL(pLeft); int8_t left = GET_INT8_VAL(pLeft);
uint64_t right = GET_UINT64_VAL(pRight); uint64_t right = GET_UINT64_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -321,7 +321,7 @@ int32_t compareInt8Uint64(const void *pLeft, const void *pRight) { ...@@ -321,7 +321,7 @@ int32_t compareInt8Uint64(const void *pLeft, const void *pRight) {
} }
int32_t compareInt16Int8(const void *pLeft, const void *pRight) { int32_t compareInt16Int8(const void *pLeft, const void *pRight) {
int16_t left = GET_INT32_VAL(pLeft); int16_t left = GET_INT16_VAL(pLeft);
int8_t right = GET_INT8_VAL(pRight); int8_t right = GET_INT8_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -329,7 +329,7 @@ int32_t compareInt16Int8(const void *pLeft, const void *pRight) { ...@@ -329,7 +329,7 @@ int32_t compareInt16Int8(const void *pLeft, const void *pRight) {
} }
int32_t compareInt16Int32(const void *pLeft, const void *pRight) { int32_t compareInt16Int32(const void *pLeft, const void *pRight) {
int16_t left = GET_INT32_VAL(pLeft); int16_t left = GET_INT16_VAL(pLeft);
int32_t right = GET_INT32_VAL(pRight); int32_t right = GET_INT32_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -337,7 +337,7 @@ int32_t compareInt16Int32(const void *pLeft, const void *pRight) { ...@@ -337,7 +337,7 @@ int32_t compareInt16Int32(const void *pLeft, const void *pRight) {
} }
int32_t compareInt16Int64(const void *pLeft, const void *pRight) { int32_t compareInt16Int64(const void *pLeft, const void *pRight) {
int16_t left = GET_INT32_VAL(pLeft); int16_t left = GET_INT16_VAL(pLeft);
int64_t right = GET_INT64_VAL(pRight); int64_t right = GET_INT64_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -345,7 +345,7 @@ int32_t compareInt16Int64(const void *pLeft, const void *pRight) { ...@@ -345,7 +345,7 @@ int32_t compareInt16Int64(const void *pLeft, const void *pRight) {
} }
int32_t compareInt16Float(const void *pLeft, const void *pRight) { int32_t compareInt16Float(const void *pLeft, const void *pRight) {
int16_t left = GET_INT32_VAL(pLeft); int16_t left = GET_INT16_VAL(pLeft);
float right = GET_FLOAT_VAL(pRight); float right = GET_FLOAT_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -353,7 +353,7 @@ int32_t compareInt16Float(const void *pLeft, const void *pRight) { ...@@ -353,7 +353,7 @@ int32_t compareInt16Float(const void *pLeft, const void *pRight) {
} }
int32_t compareInt16Double(const void *pLeft, const void *pRight) { int32_t compareInt16Double(const void *pLeft, const void *pRight) {
int16_t left = GET_INT32_VAL(pLeft); int16_t left = GET_INT16_VAL(pLeft);
double right = GET_DOUBLE_VAL(pRight); double right = GET_DOUBLE_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -361,7 +361,7 @@ int32_t compareInt16Double(const void *pLeft, const void *pRight) { ...@@ -361,7 +361,7 @@ int32_t compareInt16Double(const void *pLeft, const void *pRight) {
} }
int32_t compareInt16Uint8(const void *pLeft, const void *pRight) { int32_t compareInt16Uint8(const void *pLeft, const void *pRight) {
int16_t left = GET_INT32_VAL(pLeft); int16_t left = GET_INT16_VAL(pLeft);
uint8_t right = GET_UINT8_VAL(pRight); uint8_t right = GET_UINT8_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -369,7 +369,7 @@ int32_t compareInt16Uint8(const void *pLeft, const void *pRight) { ...@@ -369,7 +369,7 @@ int32_t compareInt16Uint8(const void *pLeft, const void *pRight) {
} }
int32_t compareInt16Uint16(const void *pLeft, const void *pRight) { int32_t compareInt16Uint16(const void *pLeft, const void *pRight) {
int16_t left = GET_INT32_VAL(pLeft); int16_t left = GET_INT16_VAL(pLeft);
uint16_t right = GET_UINT16_VAL(pRight); uint16_t right = GET_UINT16_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -377,7 +377,7 @@ int32_t compareInt16Uint16(const void *pLeft, const void *pRight) { ...@@ -377,7 +377,7 @@ int32_t compareInt16Uint16(const void *pLeft, const void *pRight) {
} }
int32_t compareInt16Uint32(const void *pLeft, const void *pRight) { int32_t compareInt16Uint32(const void *pLeft, const void *pRight) {
int16_t left = GET_INT32_VAL(pLeft); int16_t left = GET_INT16_VAL(pLeft);
uint32_t right = GET_UINT32_VAL(pRight); uint32_t right = GET_UINT32_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
...@@ -385,7 +385,7 @@ int32_t compareInt16Uint32(const void *pLeft, const void *pRight) { ...@@ -385,7 +385,7 @@ int32_t compareInt16Uint32(const void *pLeft, const void *pRight) {
} }
int32_t compareInt16Uint64(const void *pLeft, const void *pRight) { int32_t compareInt16Uint64(const void *pLeft, const void *pRight) {
int16_t left = GET_INT32_VAL(pLeft); int16_t left = GET_INT16_VAL(pLeft);
uint64_t right = GET_UINT64_VAL(pRight); uint64_t right = GET_UINT64_VAL(pRight);
if (left > right) return 1; if (left > right) return 1;
if (left < right) return -1; if (left < right) return -1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册