[TD-14241]: lower/upper function adoption
This commit is contained in:
parent
dddf621aa7
commit
c846c6ebf3
|
@ -540,9 +540,9 @@ int32_t stubCheckAndGetResultType(SFunctionNode* pFunc) {
|
|||
case FUNCTION_TYPE_RTRIM:
|
||||
case FUNCTION_TYPE_SUBSTR: {
|
||||
SColumnNode* pParam = nodesListGetNode(pFunc->pParameterList, 0);
|
||||
int32_t paraType = pParam->node.resType.type;
|
||||
//pFunc->node.resType = (SDataType) { .bytes = tDataTypes[paraType].bytes, .type = paraType };
|
||||
pFunc->node.resType = (SDataType) { .bytes = 23, .type = paraType };
|
||||
int32_t paraType = pParam->node.resType.type;
|
||||
int32_t paraBytes = pParam->node.resType.bytes;
|
||||
pFunc->node.resType = (SDataType) { .bytes = paraBytes, .type = paraType };
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -484,26 +484,38 @@ int32_t doCaseConvFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam
|
|||
SColumnInfoData *pInputData = pInput->columnData;
|
||||
SColumnInfoData *pOutputData = pOutput->columnData;
|
||||
|
||||
//allocate output buf
|
||||
if (pOutputData->pData == NULL) {
|
||||
int32_t outputLen = pInputData->varmeta.length;
|
||||
setVarTypeOutputBuf(pOutputData, outputLen, GET_PARAM_TYPE(pInput));
|
||||
}
|
||||
|
||||
char *input = pInputData->pData;
|
||||
char *output = pOutputData->pData;
|
||||
|
||||
int32_t offset = 0;
|
||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||
if (colDataIsNull_f(pInputData->nullbitmap, i)) {
|
||||
colDataSetNull_f(pOutputData->nullbitmap, i);
|
||||
continue;
|
||||
}
|
||||
|
||||
char *in = pInputData->pData + i * GET_PARAM_BYTES(pInput);
|
||||
char *out = pOutputData->pData + i * GET_PARAM_BYTES(pInput);
|
||||
|
||||
int32_t len = varDataLen(in);
|
||||
int32_t len = varDataLen(input);
|
||||
if (type == TSDB_DATA_TYPE_VARCHAR) {
|
||||
for (int32_t j = 0; j < len; ++j) {
|
||||
*(varDataVal(out) + j) = convFn(*(varDataVal(in) + j));
|
||||
*(varDataVal(output) + j) = convFn(*(varDataVal(input) + j));
|
||||
}
|
||||
} else { //NCHAR
|
||||
for (int32_t j = 0; j < len / TSDB_NCHAR_SIZE; ++j) {
|
||||
*((uint32_t *)varDataVal(out) + j) = convFn(*((uint32_t *)varDataVal(in) + j));
|
||||
*((uint32_t *)varDataVal(output) + j) = convFn(*((uint32_t *)varDataVal(input) + j));
|
||||
}
|
||||
}
|
||||
varDataSetLen(out, len);
|
||||
varDataSetLen(output, len);
|
||||
input += varDataTLen(input);
|
||||
output += varDataTLen(output);
|
||||
|
||||
pOutputData->varmeta.offset[i] = offset;
|
||||
offset += len + VARSTR_HEADER_SIZE;
|
||||
}
|
||||
|
||||
pOutput->numOfRows = pInput->numOfRows;
|
||||
|
|
Loading…
Reference in New Issue