static void connectExternal(RelationalNode node, CommandContext context, ProcessorDataManager dataMgr, BufferManager bufferMgr) { node.initialize(context, bufferMgr, dataMgr); RelationalNode[] children = node.getChildren(); int childCount = node.getChildCount(); for(int i=0; i<childCount; i++) { if(children[i] != null) { connectExternal(children[i], context, dataMgr, bufferMgr); } else { break; } } }
static void connectExternal(RelationalNode node, CommandContext context, ProcessorDataManager dataMgr, BufferManager bufferMgr) { node.initialize(context, bufferMgr, dataMgr); RelationalNode[] children = node.getChildren(); int childCount = node.getChildCount(); for(int i=0; i<childCount; i++) { if(children[i] != null) { connectExternal(children[i], context, dataMgr, bufferMgr); } else { break; } } }
static void connectExternal(RelationalNode node, CommandContext context, ProcessorDataManager dataMgr, BufferManager bufferMgr) { node.initialize(context, bufferMgr, dataMgr); RelationalNode[] children = node.getChildren(); int childCount = node.getChildCount(); for(int i=0; i<childCount; i++) { if(children[i] != null) { connectExternal(children[i], context, dataMgr, bufferMgr); } else { break; } } }
/** * Because we lack a cost value based upon complexity the * heurstic is to look that the dependent set is fully pushed. * there are situations where it won't be fully pushed, but * for which it will still be a better plan and we'll reject */ private boolean isUsingDependentJoin(String id, RelationalNode rn) { if (rn instanceof DependentAccessNode) { DependentAccessNode dan = (DependentAccessNode)rn; Query qc = (Query) dan.getCommand(); Criteria c = qc.getCriteria(); for (Criteria crit : Criteria.separateCriteriaByAnd(c)) { if (crit instanceof DependentSetCriteria) { DependentSetCriteria dsc = (DependentSetCriteria)crit; if (dsc.getContextSymbol().equals(id)) { return true; } } } } RelationalNode[] children = rn.getChildren(); for (int i=0; i<rn.getChildCount(); i++) { if (isUsingDependentJoin(id, children[i])) { return true; } } return false; }
/** * Because we lack a cost value based upon complexity the * heurstic is to look that the dependent set is fully pushed. * there are situations where it won't be fully pushed, but * for which it will still be a better plan and we'll reject */ private boolean isUsingDependentJoin(String id, RelationalNode rn) { if (rn instanceof DependentAccessNode) { DependentAccessNode dan = (DependentAccessNode)rn; Query qc = (Query) dan.getCommand(); Criteria c = qc.getCriteria(); for (Criteria crit : Criteria.separateCriteriaByAnd(c)) { if (crit instanceof DependentSetCriteria) { DependentSetCriteria dsc = (DependentSetCriteria)crit; if (dsc.getContextSymbol().equals(id)) { return true; } } } } RelationalNode[] children = rn.getChildren(); for (int i=0; i<rn.getChildCount(); i++) { if (isUsingDependentJoin(id, children[i])) { return true; } } return false; }
for(int i=0; i<node.getChildCount(); i++) { assignWithClause(children[i], pushdownWith, repeated);
for(int i=0; i<node.getChildCount(); i++) { assignWithClause(children[i], pushdownWith, repeated);
for(int i=0; i<node.getChildCount(); i++) { assignWithClause(children[i], pushdownWith, repeated);