fix: add isPk to SColumnNode
This commit is contained in:
parent
d96547f03c
commit
1da0def82d
|
@ -86,6 +86,7 @@ typedef struct SColumnNode {
|
||||||
int16_t dataBlockId;
|
int16_t dataBlockId;
|
||||||
int16_t slotId;
|
int16_t slotId;
|
||||||
bool tableHasPk;
|
bool tableHasPk;
|
||||||
|
bool isPk;
|
||||||
} SColumnNode;
|
} SColumnNode;
|
||||||
|
|
||||||
typedef struct SColumnRefNode {
|
typedef struct SColumnRefNode {
|
||||||
|
|
|
@ -83,6 +83,7 @@ typedef struct SColMatchItem {
|
||||||
bool needOutput;
|
bool needOutput;
|
||||||
SDataType dataType;
|
SDataType dataType;
|
||||||
int32_t funcType;
|
int32_t funcType;
|
||||||
|
bool isPk;
|
||||||
} SColMatchItem;
|
} SColMatchItem;
|
||||||
|
|
||||||
typedef struct SColMatchInfo {
|
typedef struct SColMatchInfo {
|
||||||
|
|
|
@ -1339,6 +1339,7 @@ int32_t extractColMatchInfo(SNodeList* pNodeList, SDataBlockDescNode* pOutputNod
|
||||||
c.colId = pColNode->colId;
|
c.colId = pColNode->colId;
|
||||||
c.srcSlotId = pColNode->slotId;
|
c.srcSlotId = pColNode->slotId;
|
||||||
c.dstSlotId = pNode->slotId;
|
c.dstSlotId = pNode->slotId;
|
||||||
|
c.isPk = pColNode->isPk;
|
||||||
taosArrayPush(pList, &c);
|
taosArrayPush(pList, &c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,6 +120,7 @@ static int32_t columnNodeCopy(const SColumnNode* pSrc, SColumnNode* pDst) {
|
||||||
COPY_SCALAR_FIELD(dataBlockId);
|
COPY_SCALAR_FIELD(dataBlockId);
|
||||||
COPY_SCALAR_FIELD(slotId);
|
COPY_SCALAR_FIELD(slotId);
|
||||||
COPY_SCALAR_FIELD(tableHasPk);
|
COPY_SCALAR_FIELD(tableHasPk);
|
||||||
|
COPY_SCALAR_FIELD(isPk);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3615,6 +3615,7 @@ static const char* jkColumnColName = "ColName";
|
||||||
static const char* jkColumnDataBlockId = "DataBlockId";
|
static const char* jkColumnDataBlockId = "DataBlockId";
|
||||||
static const char* jkColumnSlotId = "SlotId";
|
static const char* jkColumnSlotId = "SlotId";
|
||||||
static const char* jkColumnTableHasPk = "TableHasPk";
|
static const char* jkColumnTableHasPk = "TableHasPk";
|
||||||
|
static const char* jkColumnIsPk = "IsPk";
|
||||||
|
|
||||||
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
|
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
const SColumnNode* pNode = (const SColumnNode*)pObj;
|
const SColumnNode* pNode = (const SColumnNode*)pObj;
|
||||||
|
@ -3656,6 +3657,9 @@ static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
|
code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
|
||||||
}
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
|
||||||
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3698,7 +3702,10 @@ static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
|
||||||
}
|
}
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
|
code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
|
||||||
}
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
|
||||||
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -728,6 +728,9 @@ static int32_t columnNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
|
code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
|
||||||
}
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tlvEncodeValueBool(pEncoder, pNode->isPk);
|
||||||
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -772,6 +775,9 @@ static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
|
code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
|
||||||
}
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
|
||||||
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -938,7 +938,6 @@ static void setColumnInfoBySchema(const SRealTableNode* pTable, const SSchema* p
|
||||||
}
|
}
|
||||||
pCol->tableId = pTable->pMeta->uid;
|
pCol->tableId = pTable->pMeta->uid;
|
||||||
pCol->tableType = pTable->pMeta->tableType;
|
pCol->tableType = pTable->pMeta->tableType;
|
||||||
pCol->tableHasPk = hasPkInTable(pTable->pMeta);
|
|
||||||
pCol->colId = pColSchema->colId;
|
pCol->colId = pColSchema->colId;
|
||||||
pCol->colType = (tagFlag >= 0 ? COLUMN_TYPE_TAG : COLUMN_TYPE_COLUMN);
|
pCol->colType = (tagFlag >= 0 ? COLUMN_TYPE_TAG : COLUMN_TYPE_COLUMN);
|
||||||
pCol->hasIndex = (pColSchema != NULL && IS_IDX_ON(pColSchema));
|
pCol->hasIndex = (pColSchema != NULL && IS_IDX_ON(pColSchema));
|
||||||
|
@ -947,6 +946,8 @@ static void setColumnInfoBySchema(const SRealTableNode* pTable, const SSchema* p
|
||||||
if (TSDB_DATA_TYPE_TIMESTAMP == pCol->node.resType.type) {
|
if (TSDB_DATA_TYPE_TIMESTAMP == pCol->node.resType.type) {
|
||||||
pCol->node.resType.precision = pTable->pMeta->tableInfo.precision;
|
pCol->node.resType.precision = pTable->pMeta->tableInfo.precision;
|
||||||
}
|
}
|
||||||
|
pCol->tableHasPk = hasPkInTable(pTable->pMeta);
|
||||||
|
pCol->isPk = (pCol->tableHasPk) && (pColSchema->flags & COL_IS_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setColumnInfoByExpr(STempTableNode* pTable, SExprNode* pExpr, SColumnNode** pColRef) {
|
static void setColumnInfoByExpr(STempTableNode* pTable, SExprNode* pExpr, SColumnNode** pColRef) {
|
||||||
|
|
Loading…
Reference in New Issue