예제 #1
0
void gqbGridJoinTable::removeJoins(gqbQueryObject *obj)
{
	if (!obj)
		return;

	if (obj->getHaveJoins())
	{
		gqbIteratorBase *itrJoins = obj->createJoinsIterator();
		if (itrJoins)
		{
			while (itrJoins->HasNext())
			{
				gqbQueryJoin *tmp = (gqbQueryJoin *)itrJoins->Next();
				removeJoin(tmp);
			}
		}
	}

	if (obj->getHaveRegJoins())
	{
		gqbIteratorBase *itrRegJoins = obj->createRegJoinsIterator();
		if (itrRegJoins)
		{
			while (itrRegJoins->HasNext())
			{
				gqbQueryJoin *tmp = (gqbQueryJoin *)itrRegJoins->Next();
				removeJoin(tmp);
			}
		}
	}
}
예제 #2
0
파일: Optims.cpp 프로젝트: hewumars/Spider
void optims(SRDAGGraph *topDag, Stack* stack){
	bool res;
	do{
		res = false;
		res = res || reduceJoinJoin(topDag);
		res = res || reduceForkFork(topDag);
		res = res || reduceBrBr(topDag);
		res = res || reduceJoinFork(topDag);
		res = res || removeBr(topDag);
		res = res || removeFork(topDag);
		res = res || removeJoin(topDag);
		res = res || reduceInitEnd(topDag);
	}while(res);
}