Пример #1
0
  /// Extract a sorted de-duped vector of all the bound parameter indexes in a plan. Or null if
  // none.
  public int[] boundParamIndexes() {
    if (parameters.length == 0) {
      return null;
    }

    BitSet ints = new BitSet();
    ArrayList<AbstractPlanNode> ixscans = rootPlanGraph.findAllNodesOfType(PlanNodeType.INDEXSCAN);
    if (subPlanGraph != null) {
      ixscans.addAll(subPlanGraph.findAllNodesOfType(PlanNodeType.INDEXSCAN));
    }
    for (AbstractPlanNode apn : ixscans) {
      assert (apn instanceof IndexScanPlanNode);
      IndexScanPlanNode ixs = (IndexScanPlanNode) apn;
      setParamIndexes(ints, ixs.getBindings());
    }

    ArrayList<AbstractPlanNode> ixcounts =
        rootPlanGraph.findAllNodesOfType(PlanNodeType.INDEXCOUNT);
    if (subPlanGraph != null) {
      ixcounts.addAll(subPlanGraph.findAllNodesOfType(PlanNodeType.INDEXCOUNT));
    }
    for (AbstractPlanNode apn : ixcounts) {
      assert (apn instanceof IndexCountPlanNode);
      IndexCountPlanNode ixc = (IndexCountPlanNode) apn;
      setParamIndexes(ints, ixc.getBindings());
    }
    return bitSetToIntVector(ints);
  }