refactor: fix compare logic
This commit is contained in:
parent
49c3057221
commit
b96082fe1b
|
@ -1050,6 +1050,8 @@ int32_t fltAddGroupUnitFromNode(SFilterInfo *info, SNode* tree, SArray *group) {
|
|||
|
||||
cell = cell->pNext;
|
||||
}
|
||||
colDataDestroy(out.columnData);
|
||||
taosMemoryFree(out.columnData);
|
||||
} else {
|
||||
filterAddFieldFromNode(info, node->pRight, &right);
|
||||
|
||||
|
@ -1813,6 +1815,8 @@ int32_t fltInitValFieldData(SFilterInfo *info) {
|
|||
}
|
||||
|
||||
memcpy(fi->data, out.columnData->pData, out.columnData->info.bytes);
|
||||
colDataDestroy(out.columnData);
|
||||
taosMemoryFree(out.columnData);
|
||||
}
|
||||
|
||||
// match/nmatch for nchar type need convert from ucs4 to mbs
|
||||
|
@ -3537,6 +3541,11 @@ EDealRes fltReviseRewriter(SNode** pNode, void* pContext) {
|
|||
return DEAL_RES_CONTINUE;
|
||||
}
|
||||
|
||||
if (OP_TYPE_JSON_CONTAINS == node->opType) {
|
||||
stat->scalarMode = true;
|
||||
return DEAL_RES_CONTINUE;
|
||||
}
|
||||
|
||||
if (QUERY_NODE_COLUMN != nodeType(node->pLeft)) {
|
||||
SNode *t = node->pLeft;
|
||||
node->pLeft = node->pRight;
|
||||
|
|
|
@ -132,6 +132,7 @@ void sclFreeRes(SHashObj *res) {
|
|||
void sclFreeParam(SScalarParam *param) {
|
||||
if (param->columnData != NULL) {
|
||||
colDataDestroy(param->columnData);
|
||||
taosMemoryFree(param->columnData);
|
||||
}
|
||||
|
||||
if (param->pHashFilter != NULL) {
|
||||
|
|
|
@ -188,17 +188,17 @@ static FORCE_INLINE void varToBool(char *buf, SScalarParam* pOut, int32_t rowInd
|
|||
colDataAppendInt8(pOut->columnData, rowIndex, (int8_t*) &v);
|
||||
}
|
||||
|
||||
//static FORCE_INLINE void varToNchar(char* buf, SScalarParam* pOut, int32_t rowIndex) {
|
||||
// int32_t len = 0;
|
||||
// int32_t inputLen = varDataLen(buf);
|
||||
//
|
||||
// char* t = taosMemoryCalloc(1,(inputLen + 1) * TSDB_NCHAR_SIZE + VARSTR_HEADER_SIZE);
|
||||
// /*int32_t resLen = */taosMbsToUcs4(varDataVal(buf), inputLen, (TdUcs4*) varDataVal(t), pOut->columnData->info.bytes, &len);
|
||||
// varDataSetLen(t, len);
|
||||
//
|
||||
// colDataAppend(pOut->columnData, rowIndex, t, false);
|
||||
// taosMemoryFree(t);
|
||||
//}
|
||||
static FORCE_INLINE void varToNchar(char* buf, SScalarParam* pOut, int32_t rowIndex) {
|
||||
int32_t len = 0;
|
||||
int32_t inputLen = varDataLen(buf);
|
||||
|
||||
char* t = taosMemoryCalloc(1,(inputLen + 1) * TSDB_NCHAR_SIZE + VARSTR_HEADER_SIZE);
|
||||
/*int32_t resLen = */taosMbsToUcs4(varDataVal(buf), inputLen, (TdUcs4*) varDataVal(t), pOut->columnData->info.bytes, &len);
|
||||
varDataSetLen(t, len);
|
||||
|
||||
colDataAppend(pOut->columnData, rowIndex, t, false);
|
||||
taosMemoryFree(t);
|
||||
}
|
||||
|
||||
void convertNumberToNumber(const void *inData, void *outData, int8_t inType, int8_t outType){
|
||||
switch (outType) {
|
||||
|
@ -275,7 +275,7 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
|
|||
int32_t bufSize = pIn->columnData->info.bytes;
|
||||
char *tmp = taosMemoryMalloc(bufSize + VARSTR_HEADER_SIZE);
|
||||
|
||||
// bool vton = false;
|
||||
bool vton = false;
|
||||
|
||||
_bufConverteFunc func = NULL;
|
||||
if (TSDB_DATA_TYPE_BOOL == outType) {
|
||||
|
@ -286,9 +286,10 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
|
|||
func = varToUnsigned;
|
||||
} else if (IS_FLOAT_TYPE(outType)) {
|
||||
func = varToFloat;
|
||||
// } else if (outType == TSDB_DATA_TYPE_NCHAR) { // can not be nchar or binary
|
||||
// func = varToNchar;
|
||||
// vton = true;
|
||||
} else if (outType == TSDB_DATA_TYPE_NCHAR) { // binary -> nchar
|
||||
ASSERT(inType == TSDB_DATA_TYPE_VARCHAR);
|
||||
func = varToNchar;
|
||||
vton = true;
|
||||
} else {
|
||||
sclError("invalid convert outType:%d", outType);
|
||||
return TSDB_CODE_QRY_APP_ERROR;
|
||||
|
@ -316,9 +317,9 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
|
|||
continue;
|
||||
}
|
||||
}
|
||||
// if (vton) {
|
||||
// memcpy(tmp, data, varDataTLen(data));
|
||||
// } else {
|
||||
if (vton) {
|
||||
memcpy(tmp, data, varDataTLen(data));
|
||||
} else {
|
||||
if (TSDB_DATA_TYPE_VARCHAR == convertType) {
|
||||
memcpy(tmp, varDataVal(data), varDataLen(data));
|
||||
tmp[varDataLen(data)] = 0;
|
||||
|
@ -334,7 +335,7 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
|
|||
|
||||
tmp[len] = 0;
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
(*func)(tmp, pOut, i);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue