opt filter
This commit is contained in:
parent
96864b27e9
commit
1acb4dd676
|
@ -1110,7 +1110,7 @@ int32_t metaFilterCreateTime(SMeta *pMeta, SMetaFltParam *param, SArray *pUids)
|
|||
int32_t valid = 0;
|
||||
int32_t count = 0;
|
||||
|
||||
static const int8_t TRY_ERROR_LIMIT = 4;
|
||||
static const int8_t TRY_ERROR_LIMIT = 1;
|
||||
do {
|
||||
void *entryKey = NULL;
|
||||
int32_t nEntryKey = -1;
|
||||
|
@ -1118,15 +1118,14 @@ int32_t metaFilterCreateTime(SMeta *pMeta, SMetaFltParam *param, SArray *pUids)
|
|||
if (valid < 0) break;
|
||||
|
||||
SCtimeIdxKey *p = entryKey;
|
||||
if (count > TRY_ERROR_LIMIT) break;
|
||||
|
||||
int32_t cmp = (*param->filterFunc)((void *)&p->ctime, (void *)&pCtimeKey->ctime, param->type);
|
||||
if (cmp == 0)
|
||||
taosArrayPush(pUids, &p->uid);
|
||||
else {
|
||||
if (param->equal == true) break;
|
||||
count++;
|
||||
if (count >= TRY_ERROR_LIMIT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
valid = param->reverse ? tdbTbcMoveToPrev(pCursor->pCur) : tdbTbcMoveToNext(pCursor->pCur);
|
||||
if (valid < 0) break;
|
||||
|
@ -1168,23 +1167,23 @@ int32_t metaFilterTableName(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) {
|
|||
int32_t valid = 0;
|
||||
int32_t count = 0;
|
||||
|
||||
int32_t TRY_ERROR_LIMIT = 4;
|
||||
int32_t TRY_ERROR_LIMIT = 1;
|
||||
do {
|
||||
void *pEntryKey = NULL, *pEntryVal = NULL;
|
||||
int32_t nEntryKey = -1, nEntryVal = 0;
|
||||
valid = tdbTbcGet(pCursor->pCur, (const void **)pEntryKey, &nEntryKey, (const void **)&pEntryVal, &nEntryVal);
|
||||
if (valid < 0) break;
|
||||
|
||||
if (count > TRY_ERROR_LIMIT) break;
|
||||
|
||||
char *pTableKey = (char *)pEntryKey;
|
||||
cmp = (*param->filterFunc)(pTableKey, pName, pCursor->type);
|
||||
if (cmp == 0) {
|
||||
tb_uid_t tuid = *(tb_uid_t *)pEntryVal;
|
||||
taosArrayPush(pUids, &tuid);
|
||||
} else {
|
||||
if (param->equal == true) break;
|
||||
count++;
|
||||
if (count >= TRY_ERROR_LIMIT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
valid = param->reverse ? tdbTbcMoveToPrev(pCursor->pCur) : tdbTbcMoveToNext(pCursor->pCur);
|
||||
if (valid < 0) {
|
||||
|
@ -1293,7 +1292,7 @@ int32_t metaFilterTableIds(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) {
|
|||
int count = 0;
|
||||
int32_t valid = 0;
|
||||
|
||||
static const int8_t TRY_ERROR_LIMIT = 4;
|
||||
static const int8_t TRY_ERROR_LIMIT = 1;
|
||||
do {
|
||||
void *entryKey = NULL, *entryVal = NULL;
|
||||
int32_t nEntryKey, nEntryVal;
|
||||
|
@ -1302,7 +1301,7 @@ int32_t metaFilterTableIds(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) {
|
|||
if (valid < 0) {
|
||||
break;
|
||||
}
|
||||
if (count >= TRY_ERROR_LIMIT) {
|
||||
if (count > TRY_ERROR_LIMIT) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1330,7 +1329,8 @@ int32_t metaFilterTableIds(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) {
|
|||
}
|
||||
taosArrayPush(pUids, &tuid);
|
||||
} else {
|
||||
// opt later
|
||||
if (param->equal == true) break;
|
||||
count++;
|
||||
}
|
||||
valid = param->reverse ? tdbTbcMoveToPrev(pCursor->pCur) : tdbTbcMoveToNext(pCursor->pCur);
|
||||
if (valid < 0) {
|
||||
|
|
|
@ -134,7 +134,7 @@ static SSDataBlock* buildInfoSchemaTableMetaBlock(char* tableName);
|
|||
static void destroySysScanOperator(void* param);
|
||||
static int32_t loadSysTableCallback(void* param, SDataBuf* pMsg, int32_t code);
|
||||
static SSDataBlock* doFilterResult(SSDataBlock* pDataBlock, SFilterInfo* pFilterInfo);
|
||||
static __optSysFilter optSysGetFilterFunc(int32_t ctype, bool* reverse);
|
||||
static __optSysFilter optSysGetFilterFunc(int32_t ctype, bool* reverse, bool* equal);
|
||||
|
||||
static int32_t sysTableUserTagsFillOneTableTags(const SSysTableScanInfo* pInfo, SMetaReader* smrSuperTable,
|
||||
SMetaReader* smrChildTable, const char* dbname, const char* tableName,
|
||||
|
@ -164,7 +164,8 @@ int32_t sysFilte__DbName(void* arg, SNode* pNode, SArray* result) {
|
|||
SValueNode* pVal = (SValueNode*)pOper->pRight;
|
||||
|
||||
bool reverse = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse);
|
||||
bool equal = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse, &equal);
|
||||
if (func == NULL) return -1;
|
||||
|
||||
int ret = func(dbname, pVal->datum.p, TSDB_DATA_TYPE_VARCHAR);
|
||||
|
@ -182,9 +183,9 @@ int32_t sysFilte__VgroupId(void* arg, SNode* pNode, SArray* result) {
|
|||
SOperatorNode* pOper = (SOperatorNode*)pNode;
|
||||
SValueNode* pVal = (SValueNode*)pOper->pRight;
|
||||
|
||||
bool reverse = false;
|
||||
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse);
|
||||
bool reverse = false;
|
||||
bool equal = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse, &equal);
|
||||
if (func == NULL) return -1;
|
||||
|
||||
int ret = func(&vgId, &pVal->datum.i, TSDB_DATA_TYPE_BIGINT);
|
||||
|
@ -199,8 +200,8 @@ int32_t sysFilte__TableName(void* arg, SNode* pNode, SArray* result) {
|
|||
SOperatorNode* pOper = (SOperatorNode*)pNode;
|
||||
SValueNode* pVal = (SValueNode*)pOper->pRight;
|
||||
bool reverse = false;
|
||||
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse);
|
||||
bool equal = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse, &equal);
|
||||
if (func == NULL) return -1;
|
||||
|
||||
SMetaFltParam param = {.suid = 0,
|
||||
|
@ -208,6 +209,7 @@ int32_t sysFilte__TableName(void* arg, SNode* pNode, SArray* result) {
|
|||
.type = TSDB_DATA_TYPE_VARCHAR,
|
||||
.val = pVal->datum.p,
|
||||
.reverse = reverse,
|
||||
.equal = equal,
|
||||
.filterFunc = func};
|
||||
return -1;
|
||||
}
|
||||
|
@ -219,7 +221,8 @@ int32_t sysFilte__CreateTime(void* arg, SNode* pNode, SArray* result) {
|
|||
SValueNode* pVal = (SValueNode*)pOper->pRight;
|
||||
bool reverse = false;
|
||||
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse);
|
||||
bool equal = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse, &equal);
|
||||
if (func == NULL) return -1;
|
||||
|
||||
SMetaFltParam param = {.suid = 0,
|
||||
|
@ -227,6 +230,7 @@ int32_t sysFilte__CreateTime(void* arg, SNode* pNode, SArray* result) {
|
|||
.type = TSDB_DATA_TYPE_BIGINT,
|
||||
.val = &pVal->datum.i,
|
||||
.reverse = reverse,
|
||||
.equal = equal,
|
||||
.filterFunc = func};
|
||||
|
||||
int32_t ret = metaFilterCreateTime(pMeta, ¶m, result);
|
||||
|
@ -239,8 +243,8 @@ int32_t sysFilte__Ncolumn(void* arg, SNode* pNode, SArray* result) {
|
|||
SOperatorNode* pOper = (SOperatorNode*)pNode;
|
||||
SValueNode* pVal = (SValueNode*)pOper->pRight;
|
||||
bool reverse = false;
|
||||
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse);
|
||||
bool equal = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse, &equal);
|
||||
if (func == NULL) return -1;
|
||||
return -1;
|
||||
}
|
||||
|
@ -251,8 +255,8 @@ int32_t sysFilte__Ttl(void* arg, SNode* pNode, SArray* result) {
|
|||
SOperatorNode* pOper = (SOperatorNode*)pNode;
|
||||
SValueNode* pVal = (SValueNode*)pOper->pRight;
|
||||
bool reverse = false;
|
||||
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse);
|
||||
bool equal = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse, &equal);
|
||||
if (func == NULL) return -1;
|
||||
return -1;
|
||||
}
|
||||
|
@ -263,8 +267,8 @@ int32_t sysFilte__STableName(void* arg, SNode* pNode, SArray* result) {
|
|||
SOperatorNode* pOper = (SOperatorNode*)pNode;
|
||||
SValueNode* pVal = (SValueNode*)pOper->pRight;
|
||||
bool reverse = false;
|
||||
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse);
|
||||
bool equal = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse, &equal);
|
||||
if (func == NULL) return -1;
|
||||
return -1;
|
||||
}
|
||||
|
@ -275,8 +279,8 @@ int32_t sysFilte__Uid(void* arg, SNode* pNode, SArray* result) {
|
|||
SOperatorNode* pOper = (SOperatorNode*)pNode;
|
||||
SValueNode* pVal = (SValueNode*)pOper->pRight;
|
||||
bool reverse = false;
|
||||
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse);
|
||||
bool equal = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse, &equal);
|
||||
if (func == NULL) return -1;
|
||||
return -1;
|
||||
}
|
||||
|
@ -287,8 +291,8 @@ int32_t sysFilte__Type(void* arg, SNode* pNode, SArray* result) {
|
|||
SOperatorNode* pOper = (SOperatorNode*)pNode;
|
||||
SValueNode* pVal = (SValueNode*)pOper->pRight;
|
||||
bool reverse = false;
|
||||
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse);
|
||||
bool equal = false;
|
||||
__optSysFilter func = optSysGetFilterFunc(pOper->opType, &reverse, &equal);
|
||||
if (func == NULL) return -1;
|
||||
return -1;
|
||||
}
|
||||
|
@ -359,10 +363,13 @@ void extractTbnameSlotId(SSysTableScanInfo* pInfo, const SScanPhy
|
|||
static void sysTableScanFillTbName(SOperatorInfo* pOperator, const SSysTableScanInfo* pInfo, const char* name,
|
||||
SSDataBlock* pBlock);
|
||||
|
||||
__optSysFilter optSysGetFilterFunc(int32_t ctype, bool* reverse) {
|
||||
__optSysFilter optSysGetFilterFunc(int32_t ctype, bool* reverse, bool* equal) {
|
||||
if (ctype == OP_TYPE_LOWER_EQUAL || ctype == OP_TYPE_LOWER_THAN) {
|
||||
*reverse = true;
|
||||
}
|
||||
if (ctype == OP_TYPE_EQUAL) {
|
||||
*equal = true;
|
||||
}
|
||||
if (ctype == OP_TYPE_LOWER_THAN)
|
||||
return optSysFilterFuncImpl__LowerThan;
|
||||
else if (ctype == OP_TYPE_LOWER_EQUAL)
|
||||
|
|
|
@ -390,11 +390,6 @@ static FORCE_INLINE FilterFunc sifGetFilterFunc(EIndexQueryType type, bool *reve
|
|||
*reverse = false;
|
||||
}
|
||||
|
||||
if (type == QUERY_LESS_EQUAL || type == QUERY_GREATER_EQUAL) {
|
||||
*equal = true;
|
||||
} else {
|
||||
*equal = false;
|
||||
}
|
||||
if (type == QUERY_LESS_EQUAL)
|
||||
return sifLessEqual;
|
||||
else if (type == QUERY_LESS_THAN)
|
||||
|
@ -404,6 +399,7 @@ static FORCE_INLINE FilterFunc sifGetFilterFunc(EIndexQueryType type, bool *reve
|
|||
else if (type == QUERY_GREATER_THAN)
|
||||
return sifGreaterThan;
|
||||
else if (type == QUERY_TERM) {
|
||||
*equal = true;
|
||||
return sifEqual;
|
||||
}
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in New Issue