TD-13981 show databases rewrite
This commit is contained in:
parent
396c099a77
commit
028e6d1620
|
@ -147,9 +147,13 @@ typedef struct SScanPhysiNode {
|
||||||
SName tableName;
|
SName tableName;
|
||||||
} SScanPhysiNode;
|
} SScanPhysiNode;
|
||||||
|
|
||||||
typedef SScanPhysiNode SSystemTableScanPhysiNode;
|
|
||||||
typedef SScanPhysiNode STagScanPhysiNode;
|
typedef SScanPhysiNode STagScanPhysiNode;
|
||||||
|
|
||||||
|
typedef struct SSystemTableScanPhysiNode {
|
||||||
|
SScanPhysiNode scan;
|
||||||
|
SEpSet mgmtEpSet;
|
||||||
|
} SSystemTableScanPhysiNode;
|
||||||
|
|
||||||
typedef struct STableScanPhysiNode {
|
typedef struct STableScanPhysiNode {
|
||||||
SScanPhysiNode scan;
|
SScanPhysiNode scan;
|
||||||
uint8_t scanFlag; // denotes reversed scan of data or not
|
uint8_t scanFlag; // denotes reversed scan of data or not
|
||||||
|
|
|
@ -25,6 +25,7 @@ extern "C" {
|
||||||
typedef struct SPlanContext {
|
typedef struct SPlanContext {
|
||||||
uint64_t queryId;
|
uint64_t queryId;
|
||||||
int32_t acctId;
|
int32_t acctId;
|
||||||
|
SEpSet mgmtEpSet;
|
||||||
SNode* pAstRoot;
|
SNode* pAstRoot;
|
||||||
} SPlanContext;
|
} SPlanContext;
|
||||||
|
|
||||||
|
|
|
@ -194,7 +194,12 @@ int32_t execDdlQuery(SRequestObj* pRequest, SQuery* pQuery) {
|
||||||
|
|
||||||
int32_t getPlan(SRequestObj* pRequest, SQuery* pQuery, SQueryPlan** pPlan, SArray* pNodeList) {
|
int32_t getPlan(SRequestObj* pRequest, SQuery* pQuery, SQueryPlan** pPlan, SArray* pNodeList) {
|
||||||
pRequest->type = pQuery->msgType;
|
pRequest->type = pQuery->msgType;
|
||||||
SPlanContext cxt = { .queryId = pRequest->requestId, .pAstRoot = pQuery->pRoot, .acctId = pRequest->pTscObj->acctId };
|
SPlanContext cxt = {
|
||||||
|
.queryId = pRequest->requestId,
|
||||||
|
.acctId = pRequest->pTscObj->acctId,
|
||||||
|
.mgmtEpSet = getEpSet_s(&pRequest->pTscObj->pAppInfo->mgmtEp),
|
||||||
|
.pAstRoot = pQuery->pRoot
|
||||||
|
};
|
||||||
int32_t code = qCreateQueryPlan(&cxt, pPlan, pNodeList);
|
int32_t code = qCreateQueryPlan(&cxt, pPlan, pNodeList);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -442,12 +442,85 @@ static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* jkEndPointFqdn = "Fqdn";
|
||||||
|
static const char* jkEndPointPort = "Port";
|
||||||
|
|
||||||
|
static int32_t epToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SEp* pNode = (const SEp*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
|
||||||
|
SEp* pNode = (SEp*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char* jkEpSetInUse = "InUse";
|
||||||
|
static const char* jkEpSetNumOfEps = "NumOfEps";
|
||||||
|
static const char* jkEpSetEps = "Eps";
|
||||||
|
|
||||||
|
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
|
||||||
|
const SEpSet* pNode = (const SEpSet*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
|
||||||
|
SEpSet* pNode = (SEpSet*)pObj;
|
||||||
|
|
||||||
|
int32_t code = tjsonGetTinyIntValue(pJson, jkEpSetInUse, &pNode->inUse);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetTinyIntValue(pJson, jkEpSetNumOfEps, &pNode->numOfEps);
|
||||||
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonToArray(pJson, jkEpSetEps, jsonToEp, pNode->eps, sizeof(SEp));
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char* jkSysTableScanPhysiPlanMnodeEpSet = "MnodeEpSet";
|
||||||
|
|
||||||
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
|
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
return physiScanNodeToJson(pObj, pJson);
|
const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
|
||||||
|
|
||||||
|
int32_t code = physiScanNodeToJson(pObj, pJson);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, epSetToJson, &pNode->mgmtEpSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
|
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
|
||||||
return jsonToPhysiScanNode(pJson, pObj);
|
SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
|
||||||
|
|
||||||
|
int32_t code = jsonToPhysiScanNode(pJson, pObj);
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonToObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, jsonToEpSet, &pNode->mgmtEpSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char* jkProjectPhysiPlanProjections = "Projections";
|
static const char* jkProjectPhysiPlanProjections = "Projections";
|
||||||
|
@ -635,31 +708,6 @@ static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char* jkEndPointFqdn = "Fqdn";
|
|
||||||
static const char* jkEndPointPort = "Port";
|
|
||||||
|
|
||||||
static int32_t epToJson(const void* pObj, SJson* pJson) {
|
|
||||||
const SEp* pNode = (const SEp*)pObj;
|
|
||||||
|
|
||||||
int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
|
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
|
||||||
code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
|
|
||||||
}
|
|
||||||
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
|
|
||||||
SEp* pNode = (SEp*)pObj;
|
|
||||||
|
|
||||||
int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
|
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
|
||||||
code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
|
|
||||||
}
|
|
||||||
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char* jkQueryNodeAddrId = "Id";
|
static const char* jkQueryNodeAddrId = "Id";
|
||||||
static const char* jkQueryNodeAddrInUse = "InUse";
|
static const char* jkQueryNodeAddrInUse = "InUse";
|
||||||
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
|
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
|
||||||
|
|
|
@ -268,6 +268,7 @@ static SPhysiNode* createSystemTableScanPhysiNode(SPhysiPlanContext* pCxt, SScan
|
||||||
vgroupInfoToNodeAddr(pScanLogicNode->pVgroupList->vgroups + i, &addr);
|
vgroupInfoToNodeAddr(pScanLogicNode->pVgroupList->vgroups + i, &addr);
|
||||||
taosArrayPush(pCxt->pExecNodeList, &addr);
|
taosArrayPush(pCxt->pExecNodeList, &addr);
|
||||||
}
|
}
|
||||||
|
pScan->mgmtEpSet = pCxt->pPlanCxt->mgmtEpSet;
|
||||||
return (SPhysiNode*)pScan;
|
return (SPhysiNode*)pScan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue