add executor to systable filter

This commit is contained in:
yihaoDeng 2022-10-20 19:02:04 +08:00
parent 19958284e2
commit 1898656a41
1 changed files with 28 additions and 23 deletions

View File

@ -53,7 +53,7 @@ typedef struct {
typedef struct { typedef struct {
void* pMeta; void* pMeta;
void* reserve; void* pVnode;
} SSTabFltArg; } SSTabFltArg;
static int32_t sysChkFilter__DBName(SNode* pNode); static int32_t sysChkFilter__DBName(SNode* pNode);
@ -2909,8 +2909,8 @@ static __optSysFilter optSysGetFilterFunc(int32_t ctype, bool* reverse) {
return optSysFilterFuncImpl__Equal; return optSysFilterFuncImpl__Equal;
return NULL; return NULL;
} }
static int32_t sysFilte__DbName(void* pMeta, SNode* pNode, SArray* result) { static int32_t sysFilte__DbName(void* arg, SNode* pNode, SArray* result) {
void* pVnode = pMeta; void* pVnode = ((SSTabFltArg*)arg)->pVnode;
const char* db = NULL; const char* db = NULL;
vnodeGetInfo(pVnode, &db, NULL); vnodeGetInfo(pVnode, &db, NULL);
@ -2935,8 +2935,8 @@ static int32_t sysFilte__DbName(void* pMeta, SNode* pNode, SArray* result) {
return -1; return -1;
} }
static int32_t sysFilte__VgroupId(void* pMeta, SNode* pNode, SArray* result) { static int32_t sysFilte__VgroupId(void* arg, SNode* pNode, SArray* result) {
void* pVnode = pMeta; void* pVnode = ((SSTabFltArg*)arg)->pVnode;
int32_t vgId = 0; int32_t vgId = 0;
vnodeGetInfo(pVnode, NULL, &vgId); vnodeGetInfo(pVnode, NULL, &vgId);
@ -2954,8 +2954,8 @@ static int32_t sysFilte__VgroupId(void* pMeta, SNode* pNode, SArray* result) {
return -1; return -1;
} }
static int32_t sysFilte__TableName(void* pMeta, SNode* pNode, SArray* result) { static int32_t sysFilte__TableName(void* arg, SNode* pNode, SArray* result) {
void* pVnode = pMeta; void* pMeta = ((SSTabFltArg*)arg)->pMeta;
SOperatorNode* pOper = (SOperatorNode*)pNode; SOperatorNode* pOper = (SOperatorNode*)pNode;
SValueNode* pVal = (SValueNode*)pOper->pRight; SValueNode* pVal = (SValueNode*)pOper->pRight;
@ -2970,14 +2970,14 @@ static int32_t sysFilte__TableName(void* pMeta, SNode* pNode, SArray* result) {
.val = pVal->datum.p, .val = pVal->datum.p,
.reverse = reverse, .reverse = reverse,
.filterFunc = func}; .filterFunc = func};
int32_t ret = metaFilterTableName(pVnode, &param, result); int32_t ret = metaFilterTableName(pMeta, &param, result);
if (ret == 0) return 0; if (ret == 0) return 0;
return -1; return -1;
} }
static int32_t sysFilte__CreateTime(void* pMeta, SNode* pNode, SArray* result) { static int32_t sysFilte__CreateTime(void* arg, SNode* pNode, SArray* result) {
void* pVnode = pMeta; void* pMeta = ((SSTabFltArg*)arg)->pMeta;
SOperatorNode* pOper = (SOperatorNode*)pNode; SOperatorNode* pOper = (SOperatorNode*)pNode;
SValueNode* pVal = (SValueNode*)pOper->pRight; SValueNode* pVal = (SValueNode*)pOper->pRight;
@ -2987,8 +2987,8 @@ static int32_t sysFilte__CreateTime(void* pMeta, SNode* pNode, SArray* result) {
if (func == NULL) return -1; if (func == NULL) return -1;
return 0; return 0;
} }
static int32_t sysFilte__Ncolumn(void* pMeta, SNode* pNode, SArray* result) { static int32_t sysFilte__Ncolumn(void* arg, SNode* pNode, SArray* result) {
void* pVnode = pMeta; void* pMeta = ((SSTabFltArg*)arg)->pMeta;
SOperatorNode* pOper = (SOperatorNode*)pNode; SOperatorNode* pOper = (SOperatorNode*)pNode;
SValueNode* pVal = (SValueNode*)pOper->pRight; SValueNode* pVal = (SValueNode*)pOper->pRight;
@ -2999,8 +2999,8 @@ static int32_t sysFilte__Ncolumn(void* pMeta, SNode* pNode, SArray* result) {
return 0; return 0;
} }
static int32_t sysFilte__Ttl(void* pMeta, SNode* pNode, SArray* result) { static int32_t sysFilte__Ttl(void* arg, SNode* pNode, SArray* result) {
void* pVnode = pMeta; void* pMeta = ((SSTabFltArg*)arg)->pMeta;
SOperatorNode* pOper = (SOperatorNode*)pNode; SOperatorNode* pOper = (SOperatorNode*)pNode;
SValueNode* pVal = (SValueNode*)pOper->pRight; SValueNode* pVal = (SValueNode*)pOper->pRight;
@ -3010,8 +3010,8 @@ static int32_t sysFilte__Ttl(void* pMeta, SNode* pNode, SArray* result) {
if (func == NULL) return -1; if (func == NULL) return -1;
return 0; return 0;
} }
static int32_t sysFilte__STableName(void* pMeta, SNode* pNode, SArray* result) { static int32_t sysFilte__STableName(void* arg, SNode* pNode, SArray* result) {
void* pVnode = pMeta; void* pMeta = ((SSTabFltArg*)arg)->pMeta;
SOperatorNode* pOper = (SOperatorNode*)pNode; SOperatorNode* pOper = (SOperatorNode*)pNode;
SValueNode* pVal = (SValueNode*)pOper->pRight; SValueNode* pVal = (SValueNode*)pOper->pRight;
@ -3021,8 +3021,8 @@ static int32_t sysFilte__STableName(void* pMeta, SNode* pNode, SArray* result) {
if (func == NULL) return -1; if (func == NULL) return -1;
return 0; return 0;
} }
static int32_t sysFilte__Uid(void* pMeta, SNode* pNode, SArray* result) { static int32_t sysFilte__Uid(void* arg, SNode* pNode, SArray* result) {
void* pVnode = pMeta; void* pMeta = ((SSTabFltArg*)arg)->pMeta;
SOperatorNode* pOper = (SOperatorNode*)pNode; SOperatorNode* pOper = (SOperatorNode*)pNode;
SValueNode* pVal = (SValueNode*)pOper->pRight; SValueNode* pVal = (SValueNode*)pOper->pRight;
@ -3032,8 +3032,8 @@ static int32_t sysFilte__Uid(void* pMeta, SNode* pNode, SArray* result) {
if (func == NULL) return -1; if (func == NULL) return -1;
return 0; return 0;
} }
static int32_t sysFilte__Type(void* pMeta, SNode* pNode, SArray* result) { static int32_t sysFilte__Type(void* arg, SNode* pNode, SArray* result) {
void* pVnode = pMeta; void* pMeta = ((SSTabFltArg*)arg)->pMeta;
SOperatorNode* pOper = (SOperatorNode*)pNode; SOperatorNode* pOper = (SOperatorNode*)pNode;
SValueNode* pVal = (SValueNode*)pOper->pRight; SValueNode* pVal = (SValueNode*)pOper->pRight;
@ -3247,7 +3247,7 @@ static SSDataBlock* sysTableBuildUserTablesByUids(SOperatorInfo* pOperator, SArr
tb_uid_t* uid = taosArrayGet(pUids, i); tb_uid_t* uid = taosArrayGet(pUids, i);
SMetaReader mr = {0}; SMetaReader mr = {0};
metaReaderInit(&mr, NULL, 0); metaReaderInit(&mr, pInfo->readHandle.meta, 0);
int32_t ret = metaGetTableEntryByUid(&mr, *uid); int32_t ret = metaGetTableEntryByUid(&mr, *uid);
if (ret < 0) { if (ret < 0) {
metaReaderClear(&mr); metaReaderClear(&mr);
@ -3357,6 +3357,9 @@ static SSDataBlock* sysTableBuildUserTablesByUids(SOperatorInfo* pOperator, SArr
STR_TO_VARSTR(n, "NORMAL_TABLE"); STR_TO_VARSTR(n, "NORMAL_TABLE");
// impl later // impl later
} }
metaReaderClear(&mr);
pColInfoData = taosArrayGet(p->pDataBlock, 9); pColInfoData = taosArrayGet(p->pDataBlock, 9);
colDataAppend(pColInfoData, numOfRows, n, false); colDataAppend(pColInfoData, numOfRows, n, false);
@ -3594,8 +3597,10 @@ static SSDataBlock* sysTableScanUserTables(SOperatorInfo* pOperator) {
return (pInfo->pRes->info.rows == 0) ? NULL : pInfo->pRes; return (pInfo->pRes->info.rows == 0) ? NULL : pInfo->pRes;
} else { } else {
if (pCondition != NULL) { if (pCondition != NULL) {
SArray* uids = taosArrayInit(128, sizeof(int64_t)); SSTabFltArg arg = {.pMeta = pInfo->readHandle.meta, .pVnode = pInfo->readHandle.vnode};
int flt = optSysTabFilte(NULL, pCondition, uids); SArray* uids = taosArrayInit(128, sizeof(int64_t));
int flt = optSysTabFilte(&arg, pCondition, uids);
if (flt == 0) { if (flt == 0) {
SSDataBlock* blk = sysTableBuildUserTablesByUids(pOperator, uids); SSDataBlock* blk = sysTableBuildUserTablesByUids(pOperator, uids);
taosArrayDestroy(uids); taosArrayDestroy(uids);