Merge pull request #11918 from taosdata/feature/3.0_liaohj
refactor: do some internal refactor.
This commit is contained in:
commit
c64ea43fbf
|
@ -117,22 +117,23 @@ int32_t colDataAppend(SColumnInfoData* pColumnInfoData, uint32_t currentRow, con
|
||||||
int32_t type = pColumnInfoData->info.type;
|
int32_t type = pColumnInfoData->info.type;
|
||||||
if (IS_VAR_DATA_TYPE(type)) {
|
if (IS_VAR_DATA_TYPE(type)) {
|
||||||
int32_t dataLen = varDataTLen(pData);
|
int32_t dataLen = varDataTLen(pData);
|
||||||
if(type == TSDB_DATA_TYPE_JSON) {
|
if (type == TSDB_DATA_TYPE_JSON) {
|
||||||
if(*pData == TSDB_DATA_TYPE_NULL) {
|
if (*pData == TSDB_DATA_TYPE_NULL) {
|
||||||
dataLen = 0;
|
dataLen = 0;
|
||||||
}else if(*pData == TSDB_DATA_TYPE_NCHAR) {
|
} else if (*pData == TSDB_DATA_TYPE_NCHAR) {
|
||||||
dataLen = varDataTLen(pData+CHAR_BYTES);
|
dataLen = varDataTLen(pData + CHAR_BYTES);
|
||||||
}else if(*pData == TSDB_DATA_TYPE_BIGINT || *pData == TSDB_DATA_TYPE_DOUBLE) {
|
} else if (*pData == TSDB_DATA_TYPE_BIGINT || *pData == TSDB_DATA_TYPE_DOUBLE) {
|
||||||
dataLen = LONG_BYTES;
|
dataLen = LONG_BYTES;
|
||||||
}else if(*pData == TSDB_DATA_TYPE_BOOL) {
|
} else if (*pData == TSDB_DATA_TYPE_BOOL) {
|
||||||
dataLen = CHAR_BYTES;
|
dataLen = CHAR_BYTES;
|
||||||
}
|
}
|
||||||
dataLen += CHAR_BYTES;
|
dataLen += CHAR_BYTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
SVarColAttr* pAttr = &pColumnInfoData->varmeta;
|
SVarColAttr* pAttr = &pColumnInfoData->varmeta;
|
||||||
if (pAttr->allocLen < pAttr->length + dataLen) {
|
if (pAttr->allocLen < pAttr->length + dataLen) {
|
||||||
uint32_t newSize = pAttr->allocLen;
|
uint32_t newSize = pAttr->allocLen;
|
||||||
if (newSize == 0) {
|
if (newSize <= 1) {
|
||||||
newSize = 8;
|
newSize = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1034,7 +1034,7 @@ void setInputDataBlock(SOperatorInfo* pOperator, SqlFunctionCtx* pCtx, SSDataBlo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t doCreateConstantValColumnInfo(SInputColumnInfoData* pInput, SFunctParam* pFuncParam, int32_t type,
|
static int32_t doCreateConstantValColumnInfo(SInputColumnInfoData* pInput, SFunctParam* pFuncParam,
|
||||||
int32_t paramIndex, int32_t numOfRows) {
|
int32_t paramIndex, int32_t numOfRows) {
|
||||||
SColumnInfoData* pColInfo = NULL;
|
SColumnInfoData* pColInfo = NULL;
|
||||||
if (pInput->pData[paramIndex] == NULL) {
|
if (pInput->pData[paramIndex] == NULL) {
|
||||||
|
@ -1044,17 +1044,17 @@ static int32_t doCreateConstantValColumnInfo(SInputColumnInfoData* pInput, SFunc
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the correct column info (data type and bytes)
|
// Set the correct column info (data type and bytes)
|
||||||
pColInfo->info.type = type;
|
pColInfo->info.type = pFuncParam->param.nType;
|
||||||
pColInfo->info.bytes = tDataTypes[type].bytes;
|
pColInfo->info.bytes = pFuncParam->param.nLen;
|
||||||
|
|
||||||
pInput->pData[paramIndex] = pColInfo;
|
pInput->pData[paramIndex] = pColInfo;
|
||||||
} else {
|
} else {
|
||||||
pColInfo = pInput->pData[paramIndex];
|
pColInfo = pInput->pData[paramIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT(!IS_VAR_DATA_TYPE(type));
|
|
||||||
colInfoDataEnsureCapacity(pColInfo, 0, numOfRows);
|
colInfoDataEnsureCapacity(pColInfo, 0, numOfRows);
|
||||||
|
|
||||||
|
int8_t type = pFuncParam->param.nType;
|
||||||
if (type == TSDB_DATA_TYPE_BIGINT || type == TSDB_DATA_TYPE_UBIGINT) {
|
if (type == TSDB_DATA_TYPE_BIGINT || type == TSDB_DATA_TYPE_UBIGINT) {
|
||||||
int64_t v = pFuncParam->param.i;
|
int64_t v = pFuncParam->param.i;
|
||||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||||
|
@ -1065,6 +1065,12 @@ static int32_t doCreateConstantValColumnInfo(SInputColumnInfoData* pInput, SFunc
|
||||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||||
colDataAppendDouble(pColInfo, i, &v);
|
colDataAppendDouble(pColInfo, i, &v);
|
||||||
}
|
}
|
||||||
|
} else if (type == TSDB_DATA_TYPE_VARCHAR) {
|
||||||
|
char *tmp = taosMemoryMalloc(pFuncParam->param.nLen + VARSTR_HEADER_SIZE);
|
||||||
|
STR_WITH_SIZE_TO_VARSTR(tmp, pFuncParam->param.pz, pFuncParam->param.nLen);
|
||||||
|
for(int32_t i = 0; i < numOfRows; ++i) {
|
||||||
|
colDataAppend(pColInfo, i, tmp, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -1104,7 +1110,7 @@ static int32_t doSetInputDataBlock(SOperatorInfo* pOperator, SqlFunctionCtx* pCt
|
||||||
pInput->numOfRows = pBlock->info.rows;
|
pInput->numOfRows = pBlock->info.rows;
|
||||||
pInput->startRowIndex = 0;
|
pInput->startRowIndex = 0;
|
||||||
|
|
||||||
code = doCreateConstantValColumnInfo(pInput, pFuncParam, pFuncParam->param.nType, j, pBlock->info.rows);
|
code = doCreateConstantValColumnInfo(pInput, pFuncParam, j, pBlock->info.rows);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -6684,18 +6690,32 @@ SArray* extractColumnInfo(SNodeList* pNodeList) {
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfCols; ++i) {
|
for (int32_t i = 0; i < numOfCols; ++i) {
|
||||||
STargetNode* pNode = (STargetNode*)nodesListGetNode(pNodeList, i);
|
STargetNode* pNode = (STargetNode*)nodesListGetNode(pNodeList, i);
|
||||||
SColumnNode* pColNode = (SColumnNode*)pNode->pExpr;
|
|
||||||
|
|
||||||
// todo extract method
|
if (nodeType(pNode->pExpr) == QUERY_NODE_COLUMN) {
|
||||||
SColumn c = {0};
|
SColumnNode* pColNode = (SColumnNode*)pNode->pExpr;
|
||||||
c.slotId = pColNode->slotId;
|
|
||||||
c.colId = pColNode->colId;
|
|
||||||
c.type = pColNode->node.resType.type;
|
|
||||||
c.bytes = pColNode->node.resType.bytes;
|
|
||||||
c.precision = pColNode->node.resType.precision;
|
|
||||||
c.scale = pColNode->node.resType.scale;
|
|
||||||
|
|
||||||
taosArrayPush(pList, &c);
|
// todo extract method
|
||||||
|
SColumn c = {0};
|
||||||
|
c.slotId = pColNode->slotId;
|
||||||
|
c.colId = pColNode->colId;
|
||||||
|
c.type = pColNode->node.resType.type;
|
||||||
|
c.bytes = pColNode->node.resType.bytes;
|
||||||
|
c.scale = pColNode->node.resType.scale;
|
||||||
|
c.precision = pColNode->node.resType.precision;
|
||||||
|
|
||||||
|
taosArrayPush(pList, &c);
|
||||||
|
} else if (nodeType(pNode->pExpr) == QUERY_NODE_VALUE) {
|
||||||
|
SValueNode* pValNode = (SValueNode*) pNode->pExpr;
|
||||||
|
SColumn c = {0};
|
||||||
|
c.slotId = pNode->slotId;
|
||||||
|
c.colId = pNode->slotId;
|
||||||
|
c.type = pValNode->node.type;
|
||||||
|
c.bytes = pValNode->node.resType.bytes;
|
||||||
|
c.scale = pValNode->node.resType.scale;
|
||||||
|
c.precision = pValNode->node.resType.precision;
|
||||||
|
|
||||||
|
taosArrayPush(pList, &c);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return pList;
|
return pList;
|
||||||
|
|
Loading…
Reference in New Issue