fix: bindTupleFuncindex

This commit is contained in:
factosea 2024-12-25 18:27:50 +08:00
parent 504a8af0cd
commit c371fb200d
4 changed files with 31 additions and 7 deletions

View File

@ -271,7 +271,7 @@ typedef enum ELogicConditionType {
#define TSDB_SUBSCRIBE_KEY_LEN (TSDB_CGROUP_LEN + TSDB_TOPIC_FNAME_LEN + 2)
#define TSDB_PARTITION_KEY_LEN (TSDB_SUBSCRIBE_KEY_LEN + 20)
#define TSDB_COL_NAME_LEN 65
#define TSDB_COL_NAME_EXLEN 2
#define TSDB_COL_NAME_EXLEN 4
#define TSDB_COL_FNAME_LEN (TSDB_TABLE_NAME_LEN + TSDB_COL_NAME_LEN + TSDB_NAME_DELIMITER_LEN)
#define TSDB_MAX_SAVED_SQL_LEN TSDB_MAX_COLUMNS * 64
#define TSDB_MAX_SQL_LEN TSDB_PAYLOAD_SIZE

View File

@ -7378,7 +7378,7 @@ static EDealRes pushDownBindSelectFunc(SNode** pNode, void* pContext) {
if (nodesIsExprNode(*pNode)) {
((SExprNode*)*pNode)->bindTupleFuncIdx = pCxt->bindTupleFuncIdx;
int32_t len = strlen(((SExprNode*)*pNode)->aliasName);
tsnprintf(((SExprNode*)*pNode)->aliasName + len, TSDB_COL_NAME_EXLEN, "%d", pCxt->bindTupleFuncIdx);
tsnprintf(((SExprNode*)*pNode)->aliasName + len, TSDB_COL_NAME_EXLEN, ".%d", pCxt->bindTupleFuncIdx);
SFunctionNode* pFunc = (SFunctionNode*)*pNode;
}
return DEAL_RES_CONTINUE;

View File

@ -123,6 +123,8 @@ static EDealRes doRewriteExpr(SNode** pNode, void* pContext) {
tstrncpy(pCol->node.userAlias, ((SExprNode*)pExpr)->userAlias, TSDB_COL_NAME_LEN);
tstrncpy(pCol->colName, ((SExprNode*)pExpr)->aliasName, TSDB_COL_NAME_LEN);
pCol->node.projIdx = ((SExprNode*)(*pNode))->projIdx;
pCol->node.bindTupleFuncIdx = ((SExprNode*)(*pNode))->bindTupleFuncIdx;
pCol->node.tupleFuncIdx = ((SExprNode*)(*pNode))->tupleFuncIdx;
if (QUERY_NODE_FUNCTION == nodeType(pExpr)) {
setColumnInfo((SFunctionNode*)pExpr, pCol, pCxt->isPartitionBy);
}

View File

@ -134,14 +134,36 @@ class TDTestCase:
tdSql.checkRows(1)
#tdSql.checkCols(6)
tdSql.checkData(0, 0, 1734574929000)
tdSql.checkData(0, 1, 1)
tdSql.query(f'select cols(first(c0), ts, length(c2)), cols(last(c0), ts, length(c2)) from db.d1')
tdSql.checkData(0, 1, 4)
tdSql.checkData(0, 2, 1734574930000)
tdSql.checkData(0, 3, 36)
tdSql.query(f'select cols(first(c0), ts, length(c2)), cols(last(c0), ts, length(c2) + 2) from db.d1')
tdSql.checkRows(1)
tdSql.checkData(0, 0, 1734574929000)
tdSql.checkData(0, 1, 1)
tdSql.checkData(0, 2, 1734574929000)
tdSql.checkData(0, 3, 1)
tdSql.checkData(0, 1, 4)
tdSql.checkData(0, 2, 1734574930000)
tdSql.checkData(0, 3, 38)
tdSql.query(f'select cols(first(c0), ts, c2), cols(last(c0), ts, length(c2) + 2) from db.d1')
tdSql.checkRows(1)
tdSql.checkData(0, 0, 1734574929000)
tdSql.checkData(0, 1, 'a')
tdSql.checkData(0, 2, 1734574930000)
tdSql.checkData(0, 3, 38)
tdSql.query(f'select cols(min(c0), ts, c2), cols(last(c0), ts, length(c2) + 2) from db.d1')
tdSql.checkRows(1)
tdSql.checkData(0, 0, 1734574929000)
tdSql.checkData(0, 1, 'a')
tdSql.checkData(0, 2, 1734574930000)
tdSql.checkData(0, 3, 38)
tdSql.query(f'select cols(min(c0), ts, c2), cols(first(c0), ts, length(c2) + 2) from db.d1')
tdSql.checkRows(1)
tdSql.checkData(0, 0, 1734574929000)
tdSql.checkData(0, 1, 'a')
tdSql.checkData(0, 2, 1734574929000)
tdSql.checkData(0, 3, 6)
def parse_test(self):