refactor: do some internal refactor.
This commit is contained in:
parent
3878af10c9
commit
90c1e7347f
|
@ -1543,51 +1543,73 @@ void vectorBitOr(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut,
|
||||||
int32_t doVectorCompareImpl(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut, int32_t startIndex,
|
int32_t doVectorCompareImpl(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut, int32_t startIndex,
|
||||||
int32_t numOfRows, int32_t step, __compar_fn_t fp, int32_t optr) {
|
int32_t numOfRows, int32_t step, __compar_fn_t fp, int32_t optr) {
|
||||||
int32_t num = 0;
|
int32_t num = 0;
|
||||||
|
bool * pRes = (bool *)pOut->columnData;
|
||||||
|
|
||||||
for (int32_t i = startIndex; i < numOfRows && i >= 0; i += step) {
|
if (GET_PARAM_TYPE(pLeft) != TSDB_DATA_TYPE_JSON && GET_PARAM_TYPE(pRight) != TSDB_DATA_TYPE_JSON) {
|
||||||
int32_t leftIndex = (i >= pLeft->numOfRows) ? 0 : i;
|
for (int32_t i = startIndex; i < numOfRows && i >= startIndex; i += step) {
|
||||||
int32_t rightIndex = (i >= pRight->numOfRows) ? 0 : i;
|
int32_t leftIndex = (i >= pLeft->numOfRows) ? 0 : i;
|
||||||
|
int32_t rightIndex = (i >= pRight->numOfRows) ? 0 : i;
|
||||||
|
|
||||||
if (IS_HELPER_NULL(pLeft->columnData, leftIndex) || IS_HELPER_NULL(pRight->columnData, rightIndex)) {
|
if (IS_HELPER_NULL(pLeft->columnData, leftIndex) || IS_HELPER_NULL(pRight->columnData, rightIndex)) {
|
||||||
bool res = false;
|
bool res = false;
|
||||||
colDataAppendInt8(pOut->columnData, i, (int8_t *)&res);
|
colDataAppendInt8(pOut->columnData, i, (int8_t *)&res);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *pLeftData = colDataGetData(pLeft->columnData, leftIndex);
|
char * pLeftData = colDataGetData(pLeft->columnData, leftIndex);
|
||||||
char *pRightData = colDataGetData(pRight->columnData, rightIndex);
|
char * pRightData = colDataGetData(pRight->columnData, rightIndex);
|
||||||
int64_t leftOut = 0;
|
int64_t leftOut = 0;
|
||||||
int64_t rightOut = 0;
|
int64_t rightOut = 0;
|
||||||
bool freeLeft = false;
|
bool freeLeft = false;
|
||||||
bool freeRight = false;
|
bool freeRight = false;
|
||||||
bool isJsonnull = false;
|
bool isJsonnull = false;
|
||||||
|
|
||||||
bool result = convertJsonValue(&fp, optr, GET_PARAM_TYPE(pLeft), GET_PARAM_TYPE(pRight), &pLeftData, &pRightData,
|
bool result = convertJsonValue(&fp, optr, GET_PARAM_TYPE(pLeft), GET_PARAM_TYPE(pRight), &pLeftData, &pRightData,
|
||||||
&leftOut, &rightOut, &isJsonnull, &freeLeft, &freeRight);
|
&leftOut, &rightOut, &isJsonnull, &freeLeft, &freeRight);
|
||||||
if (isJsonnull) {
|
if (isJsonnull) {
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pLeftData || !pRightData) {
|
if (!pLeftData || !pRightData) {
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
colDataAppendInt8(pOut->columnData, i, (int8_t *)&result);
|
colDataAppendInt8(pOut->columnData, i, (int8_t *)&result);
|
||||||
} else {
|
} else {
|
||||||
bool res = filterDoCompare(fp, optr, pLeftData, pRightData);
|
bool res = filterDoCompare(fp, optr, pLeftData, pRightData);
|
||||||
colDataAppendInt8(pOut->columnData, i, (int8_t *)&res);
|
colDataAppendInt8(pOut->columnData, i, (int8_t *)&res);
|
||||||
if (res) {
|
if (res) {
|
||||||
++num;
|
++num;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (freeLeft) {
|
||||||
|
taosMemoryFreeClear(pLeftData);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (freeRight) {
|
||||||
|
taosMemoryFreeClear(pRightData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
for (int32_t i = startIndex; i < numOfRows && i >= 0; i += step) {
|
||||||
|
int32_t leftIndex = (i >= pLeft->numOfRows) ? 0 : i;
|
||||||
|
int32_t rightIndex = (i >= pRight->numOfRows) ? 0 : i;
|
||||||
|
|
||||||
if (freeLeft) {
|
if (colDataIsNull_f(pLeft->columnData->nullbitmap, leftIndex) ||
|
||||||
taosMemoryFreeClear(pLeftData);
|
colDataIsNull_f(pRight->columnData->nullbitmap, rightIndex)) {
|
||||||
}
|
pRes[i] = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (freeRight) {
|
char *pLeftData = colDataGetData(pLeft->columnData, leftIndex);
|
||||||
taosMemoryFreeClear(pRightData);
|
char *pRightData = colDataGetData(pRight->columnData, rightIndex);
|
||||||
|
|
||||||
|
pRes[i] = filterDoCompare(fp, optr, pLeftData, pRightData);
|
||||||
|
if (pRes[i]) {
|
||||||
|
++num;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue