commit
dd151241b0
|
@ -219,6 +219,11 @@ static void tscDestroyJoinSupporter(SJoinSupporter* pSupporter) {
|
||||||
pSupporter->f = NULL;
|
pSupporter->f = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pSupporter->pVgroupTables != NULL) {
|
||||||
|
taosArrayDestroy(pSupporter->pVgroupTables);
|
||||||
|
pSupporter->pVgroupTables = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
taosTFree(pSupporter->pIdTagList);
|
taosTFree(pSupporter->pIdTagList);
|
||||||
tscTagCondRelease(&pSupporter->tagCond);
|
tscTagCondRelease(&pSupporter->tagCond);
|
||||||
free(pSupporter);
|
free(pSupporter);
|
||||||
|
@ -327,6 +332,7 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
|
||||||
|
|
||||||
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pNewQueryInfo, 0);
|
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pNewQueryInfo, 0);
|
||||||
pTableMetaInfo->pVgroupTables = pSupporter->pVgroupTables;
|
pTableMetaInfo->pVgroupTables = pSupporter->pVgroupTables;
|
||||||
|
pSupporter->pVgroupTables = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When handling the projection query, the offset value will be modified for table-table join, which is changed
|
* When handling the projection query, the offset value will be modified for table-table join, which is changed
|
||||||
|
@ -359,7 +365,7 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
|
||||||
int16_t colId = tscGetJoinTagColIdByUid(&pQueryInfo->tagCond, pTableMetaInfo->pTableMeta->id.uid);
|
int16_t colId = tscGetJoinTagColIdByUid(&pQueryInfo->tagCond, pTableMetaInfo->pTableMeta->id.uid);
|
||||||
|
|
||||||
// set the tag column id for executor to extract correct tag value
|
// set the tag column id for executor to extract correct tag value
|
||||||
pExpr->param[0].i64Key = colId;
|
pExpr->param[0] = (tVariant) {.i64Key = colId, .nType = TSDB_DATA_TYPE_BIGINT, .nLen = sizeof(int64_t)};
|
||||||
pExpr->numOfParams = 1;
|
pExpr->numOfParams = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -388,25 +394,6 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
|
||||||
|
|
||||||
assert(taosArrayGetSize(pTableMetaInfo->pVgroupTables) > 0);
|
assert(taosArrayGetSize(pTableMetaInfo->pVgroupTables) > 0);
|
||||||
TSDB_QUERY_SET_TYPE(pQueryInfo->type, TSDB_QUERY_TYPE_MULTITABLE_QUERY);
|
TSDB_QUERY_SET_TYPE(pQueryInfo->type, TSDB_QUERY_TYPE_MULTITABLE_QUERY);
|
||||||
} else { // TODO remove unnecessarily accessed vnode
|
|
||||||
// pTableMetaInfo->vgroupList->
|
|
||||||
// for(int32_t k = 0; k < taosArrayGetSize(pTableMetaInfo->pVgroupTables);) {
|
|
||||||
// SVgroupTableInfo* p = taosArrayGet(pTableMetaInfo->pVgroupTables, k);
|
|
||||||
//
|
|
||||||
// bool found = false;
|
|
||||||
// for(int32_t f = 0; f < num; ++f) {
|
|
||||||
// if (p->vgInfo.vgId == list[f]) {
|
|
||||||
// found = true;
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!found) {
|
|
||||||
// tscRemoveVgroupTableGroup(pTableMetaInfo->pVgroupTables, k);
|
|
||||||
// } else {
|
|
||||||
// k++;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
taosTFree(list);
|
taosTFree(list);
|
||||||
|
@ -1023,7 +1010,20 @@ void tscFetchDatablockFromSubquery(SSqlObj* pSql) {
|
||||||
|
|
||||||
// If at least one subquery is completed in current vnode, try the next vnode in case of multi-vnode
|
// If at least one subquery is completed in current vnode, try the next vnode in case of multi-vnode
|
||||||
// super table projection query.
|
// super table projection query.
|
||||||
if (numOfFetch <= 0 && !reachLimit) {
|
if (reachLimit) {
|
||||||
|
pSql->res.completed = true;
|
||||||
|
freeJoinSubqueryObj(pSql);
|
||||||
|
|
||||||
|
if (pSql->res.code == TSDB_CODE_SUCCESS) {
|
||||||
|
(*pSql->fp)(pSql->param, pSql, 0);
|
||||||
|
} else {
|
||||||
|
tscQueueAsyncRes(pSql);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numOfFetch <= 0) {
|
||||||
bool tryNextVnode = false;
|
bool tryNextVnode = false;
|
||||||
|
|
||||||
SSqlObj* pp = pSql->pSubs[0];
|
SSqlObj* pp = pSql->pSubs[0];
|
||||||
|
@ -1031,7 +1031,7 @@ void tscFetchDatablockFromSubquery(SSqlObj* pSql) {
|
||||||
|
|
||||||
// get the number of subquery that need to retrieve the next vnode.
|
// get the number of subquery that need to retrieve the next vnode.
|
||||||
if (tscNonOrderedProjectionQueryOnSTable(pi, 0)) {
|
if (tscNonOrderedProjectionQueryOnSTable(pi, 0)) {
|
||||||
for(int32_t i = 0; i < pSql->subState.numOfSub; ++i) {
|
for (int32_t i = 0; i < pSql->subState.numOfSub; ++i) {
|
||||||
SSqlObj* pSub = pSql->pSubs[i];
|
SSqlObj* pSub = pSql->pSubs[i];
|
||||||
if (pSub != NULL && pSub->res.row >= pSub->res.numOfRows && pSub->res.completed) {
|
if (pSub != NULL && pSub->res.row >= pSub->res.numOfRows && pSub->res.completed) {
|
||||||
pSql->subState.numOfRemain++;
|
pSql->subState.numOfRemain++;
|
||||||
|
@ -1047,7 +1047,8 @@ void tscFetchDatablockFromSubquery(SSqlObj* pSql) {
|
||||||
|
|
||||||
SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(&pSub->cmd, 0);
|
SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(&pSub->cmd, 0);
|
||||||
|
|
||||||
if (tscNonOrderedProjectionQueryOnSTable(pQueryInfo, 0) && pSub->res.row >= pSub->res.numOfRows && pSub->res.completed) {
|
if (tscNonOrderedProjectionQueryOnSTable(pQueryInfo, 0) && pSub->res.row >= pSub->res.numOfRows &&
|
||||||
|
pSub->res.completed) {
|
||||||
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||||
assert(pQueryInfo->numOfTables == 1);
|
assert(pQueryInfo->numOfTables == 1);
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ static int32_t mnodeGetConnsMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
|
||||||
// app name
|
// app name
|
||||||
pShow->bytes[cols] = TSDB_APPNAME_LEN + VARSTR_HEADER_SIZE;
|
pShow->bytes[cols] = TSDB_APPNAME_LEN + VARSTR_HEADER_SIZE;
|
||||||
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
pSchema[cols].type = TSDB_DATA_TYPE_BINARY;
|
||||||
strcpy(pSchema[cols].name, "app_name");
|
strcpy(pSchema[cols].name, "program");
|
||||||
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
pSchema[cols].bytes = htons(pShow->bytes[cols]);
|
||||||
cols++;
|
cols++;
|
||||||
|
|
||||||
|
|
|
@ -2632,16 +2632,18 @@ void setTagVal(SQueryRuntimeEnv *pRuntimeEnv, void *pTable, void *tsdb) {
|
||||||
assert(pFuncMsg->numOfParams == 1);
|
assert(pFuncMsg->numOfParams == 1);
|
||||||
|
|
||||||
int16_t tagColId = (int16_t)pExprInfo->base.arg->argValue.i64;
|
int16_t tagColId = (int16_t)pExprInfo->base.arg->argValue.i64;
|
||||||
SColumnInfo* pColInfo = doGetTagColumnInfoById(pQuery->tagColList, pQuery->numOfTags, tagColId);
|
SColumnInfo *pColInfo = doGetTagColumnInfoById(pQuery->tagColList, pQuery->numOfTags, tagColId);
|
||||||
|
|
||||||
doSetTagValueInParam(tsdb, pTable, tagColId, &pRuntimeEnv->pCtx[0].tag, pColInfo->type, pColInfo->bytes);
|
doSetTagValueInParam(tsdb, pTable, tagColId, &pRuntimeEnv->pCtx[0].tag, pColInfo->type, pColInfo->bytes);
|
||||||
|
|
||||||
if (pRuntimeEnv->pCtx[0].tag.nType == TSDB_DATA_TYPE_BINARY || pRuntimeEnv->pCtx[0].tag.nType == TSDB_DATA_TYPE_NCHAR) {}
|
int16_t tagType = pRuntimeEnv->pCtx[0].tag.nType;
|
||||||
qDebug("QInfo:%p set tag value for join comparison, colId:%" PRId64 ", val:%s", pQInfo, pExprInfo->base.arg->argValue.i64,
|
if (tagType == TSDB_DATA_TYPE_BINARY || tagType == TSDB_DATA_TYPE_NCHAR) {
|
||||||
pRuntimeEnv->pCtx[0].tag.pz);
|
qDebug("QInfo:%p set tag value for join comparison, colId:%" PRId64 ", val:%s", pQInfo,
|
||||||
|
pExprInfo->base.arg->argValue.i64, pRuntimeEnv->pCtx[0].tag.pz);
|
||||||
} else {
|
} else {
|
||||||
qDebug("QInfo:%p set tag value for join comparison, colId:%" PRId64 ", val:%"PRId64, pQInfo, pExprInfo->base.arg->argValue.i64,
|
qDebug("QInfo:%p set tag value for join comparison, colId:%" PRId64 ", val:%" PRId64, pQInfo,
|
||||||
pRuntimeEnv->pCtx[0].tag.i64Key);
|
pExprInfo->base.arg->argValue.i64, pRuntimeEnv->pCtx[0].tag.i64Key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ $mt = $mtPrefix . $i
|
||||||
|
|
||||||
$tstart = 100000
|
$tstart = 100000
|
||||||
|
|
||||||
sql drop database if exits $db -x step1
|
sql drop database if exists $db -x step1
|
||||||
step1:
|
step1:
|
||||||
sql create database if not exists $db keep 36500
|
sql create database if not exists $db keep 36500
|
||||||
sql use $db
|
sql use $db
|
||||||
|
|
|
@ -24,7 +24,7 @@ $mt = $mtPrefix . $i
|
||||||
|
|
||||||
$tstart = 100000
|
$tstart = 100000
|
||||||
|
|
||||||
sql drop database if exits $db -x step1
|
sql drop database if exists $db -x step1
|
||||||
step1:
|
step1:
|
||||||
sql create database if not exists $db keep 36500
|
sql create database if not exists $db keep 36500
|
||||||
sql use $db
|
sql use $db
|
||||||
|
|
|
@ -22,7 +22,7 @@ $mt = $mtPrefix . $i
|
||||||
|
|
||||||
$tstart = 100000
|
$tstart = 100000
|
||||||
|
|
||||||
sql drop database if exits $db -x step1
|
sql drop database if exists $db -x step1
|
||||||
step1:
|
step1:
|
||||||
sql create database if not exists $db keep 36500
|
sql create database if not exists $db keep 36500
|
||||||
sql use $db
|
sql use $db
|
||||||
|
|
|
@ -21,7 +21,7 @@ $mt = $mtPrefix . $i
|
||||||
|
|
||||||
$tstart = 100000
|
$tstart = 100000
|
||||||
|
|
||||||
sql drop database if exits $db -x step1
|
sql drop database if exists $db -x step1
|
||||||
step1:
|
step1:
|
||||||
sql create database if not exists $db keep 36500
|
sql create database if not exists $db keep 36500
|
||||||
sql use $db
|
sql use $db
|
||||||
|
|
|
@ -26,7 +26,7 @@ $i = 0
|
||||||
$db = $dbPrefix . $i
|
$db = $dbPrefix . $i
|
||||||
$mt = $mtPrefix . $i
|
$mt = $mtPrefix . $i
|
||||||
|
|
||||||
sql drop database if exits $db -x step1
|
sql drop database if exists $db -x step1
|
||||||
step1:
|
step1:
|
||||||
sql create database if not exists $db maxtables 4 keep 36500
|
sql create database if not exists $db maxtables 4 keep 36500
|
||||||
sql use $db
|
sql use $db
|
||||||
|
|
|
@ -1,51 +1,51 @@
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/alter.sim
|
#run general/parser/alter.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/alter1.sim
|
#run general/parser/alter1.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/alter_stable.sim
|
#run general/parser/alter_stable.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/auto_create_tb.sim
|
#run general/parser/auto_create_tb.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/auto_create_tb_drop_tb.sim
|
#run general/parser/auto_create_tb_drop_tb.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/col_arithmetic_operation.sim
|
#run general/parser/col_arithmetic_operation.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/columnValue.sim
|
#run general/parser/columnValue.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/commit.sim
|
#run general/parser/commit.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/create_db.sim
|
#run general/parser/create_db.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/create_mt.sim
|
#run general/parser/create_mt.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/create_tb.sim
|
#run general/parser/create_tb.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/dbtbnameValidate.sim
|
#run general/parser/dbtbnameValidate.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/fill.sim
|
#run general/parser/fill.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/fill_stb.sim
|
#run general/parser/fill_stb.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
#run general/parser/fill_us.sim #
|
##run general/parser/fill_us.sim #
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/first_last.sim
|
#run general/parser/first_last.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/import_commit1.sim
|
#run general/parser/import_commit1.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/import_commit2.sim
|
#run general/parser/import_commit2.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/import_commit3.sim
|
#run general/parser/import_commit3.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
#run general/parser/import_file.sim
|
##run general/parser/import_file.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/insert_tb.sim
|
#run general/parser/insert_tb.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/tags_dynamically_specifiy.sim
|
#run general/parser/tags_dynamically_specifiy.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/interp.sim
|
#run general/parser/interp.sim
|
||||||
sleep 2000
|
#sleep 2000
|
||||||
run general/parser/lastrow.sim
|
#run general/parser/lastrow.sim
|
||||||
sleep 2000
|
sleep 2000
|
||||||
run general/parser/limit.sim
|
run general/parser/limit.sim
|
||||||
sleep 2000
|
sleep 2000
|
||||||
|
|
|
@ -27,7 +27,7 @@ $j = 1
|
||||||
|
|
||||||
$mt1 = $mtPrefix . $j
|
$mt1 = $mtPrefix . $j
|
||||||
|
|
||||||
sql drop database if exits $db -x step1
|
sql drop database if exists $db -x step1
|
||||||
step1:
|
step1:
|
||||||
sql create database if not exists $db
|
sql create database if not exists $db
|
||||||
sql use $db
|
sql use $db
|
||||||
|
|
|
@ -20,7 +20,7 @@ $i = 0
|
||||||
$db = $dbPrefix . $i
|
$db = $dbPrefix . $i
|
||||||
$mt = $mtPrefix . $i
|
$mt = $mtPrefix . $i
|
||||||
|
|
||||||
sql drop database if exits $db -x step1
|
sql drop database if exists $db -x step1
|
||||||
step1:
|
step1:
|
||||||
sql create database if not exists $db
|
sql create database if not exists $db
|
||||||
sql use $db
|
sql use $db
|
||||||
|
|
Loading…
Reference in New Issue