fix: bindTupleFuncindex
This commit is contained in:
parent
504a8af0cd
commit
c371fb200d
|
@ -271,7 +271,7 @@ typedef enum ELogicConditionType {
|
||||||
#define TSDB_SUBSCRIBE_KEY_LEN (TSDB_CGROUP_LEN + TSDB_TOPIC_FNAME_LEN + 2)
|
#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_PARTITION_KEY_LEN (TSDB_SUBSCRIBE_KEY_LEN + 20)
|
||||||
#define TSDB_COL_NAME_LEN 65
|
#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_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_SAVED_SQL_LEN TSDB_MAX_COLUMNS * 64
|
||||||
#define TSDB_MAX_SQL_LEN TSDB_PAYLOAD_SIZE
|
#define TSDB_MAX_SQL_LEN TSDB_PAYLOAD_SIZE
|
||||||
|
|
|
@ -7378,7 +7378,7 @@ static EDealRes pushDownBindSelectFunc(SNode** pNode, void* pContext) {
|
||||||
if (nodesIsExprNode(*pNode)) {
|
if (nodesIsExprNode(*pNode)) {
|
||||||
((SExprNode*)*pNode)->bindTupleFuncIdx = pCxt->bindTupleFuncIdx;
|
((SExprNode*)*pNode)->bindTupleFuncIdx = pCxt->bindTupleFuncIdx;
|
||||||
int32_t len = strlen(((SExprNode*)*pNode)->aliasName);
|
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;
|
SFunctionNode* pFunc = (SFunctionNode*)*pNode;
|
||||||
}
|
}
|
||||||
return DEAL_RES_CONTINUE;
|
return DEAL_RES_CONTINUE;
|
||||||
|
|
|
@ -123,6 +123,8 @@ static EDealRes doRewriteExpr(SNode** pNode, void* pContext) {
|
||||||
tstrncpy(pCol->node.userAlias, ((SExprNode*)pExpr)->userAlias, TSDB_COL_NAME_LEN);
|
tstrncpy(pCol->node.userAlias, ((SExprNode*)pExpr)->userAlias, TSDB_COL_NAME_LEN);
|
||||||
tstrncpy(pCol->colName, ((SExprNode*)pExpr)->aliasName, TSDB_COL_NAME_LEN);
|
tstrncpy(pCol->colName, ((SExprNode*)pExpr)->aliasName, TSDB_COL_NAME_LEN);
|
||||||
pCol->node.projIdx = ((SExprNode*)(*pNode))->projIdx;
|
pCol->node.projIdx = ((SExprNode*)(*pNode))->projIdx;
|
||||||
|
pCol->node.bindTupleFuncIdx = ((SExprNode*)(*pNode))->bindTupleFuncIdx;
|
||||||
|
pCol->node.tupleFuncIdx = ((SExprNode*)(*pNode))->tupleFuncIdx;
|
||||||
if (QUERY_NODE_FUNCTION == nodeType(pExpr)) {
|
if (QUERY_NODE_FUNCTION == nodeType(pExpr)) {
|
||||||
setColumnInfo((SFunctionNode*)pExpr, pCol, pCxt->isPartitionBy);
|
setColumnInfo((SFunctionNode*)pExpr, pCol, pCxt->isPartitionBy);
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,14 +134,36 @@ class TDTestCase:
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
#tdSql.checkCols(6)
|
#tdSql.checkCols(6)
|
||||||
tdSql.checkData(0, 0, 1734574929000)
|
tdSql.checkData(0, 0, 1734574929000)
|
||||||
tdSql.checkData(0, 1, 1)
|
tdSql.checkData(0, 1, 4)
|
||||||
tdSql.query(f'select cols(first(c0), ts, length(c2)), cols(last(c0), ts, length(c2)) from db.d1')
|
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.checkRows(1)
|
||||||
tdSql.checkData(0, 0, 1734574929000)
|
tdSql.checkData(0, 0, 1734574929000)
|
||||||
tdSql.checkData(0, 1, 1)
|
tdSql.checkData(0, 1, 4)
|
||||||
tdSql.checkData(0, 2, 1734574929000)
|
tdSql.checkData(0, 2, 1734574930000)
|
||||||
tdSql.checkData(0, 3, 1)
|
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):
|
def parse_test(self):
|
||||||
|
|
Loading…
Reference in New Issue