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); } } } }
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); }