private static AbstractPlanNode injectIndexedJoinWithMaterializedScan(
            AbstractExpression listElements, IndexScanPlanNode scanNode) {
        MaterializedScanPlanNode matScan = new MaterializedScanPlanNode();
        assert(listElements instanceof VectorValueExpression || listElements instanceof ParameterValueExpression);
        matScan.setRowData(listElements);
        matScan.setSortDirection(scanNode.getSortDirection());

        NestLoopIndexPlanNode nlijNode = new NestLoopIndexPlanNode();
        nlijNode.setJoinType(JoinType.INNER);
        nlijNode.addInlinePlanNode(scanNode);
        nlijNode.addAndLinkChild(matScan);
        // resolve the sort direction
        nlijNode.resolveSortDirection();
        return nlijNode;
    }
private static AbstractPlanNode injectIndexedJoinWithMaterializedScan ( AbstractExpression listElements , IndexScanPlanNode scanNode ) { MaterializedScanPlanNode matScan = new MaterializedScanPlanNode ( ) ; assert ( listElements instanceof VectorValueExpression || listElements instanceof ParameterValueExpression ) ; matScan . setRowData ( listElements ) ; matScan . setSortDirection ( scanNode . getSortDirection ( ) ) ; NestLoopIndexPlanNode nlijNode = new NestLoopIndexPlanNode ( ) ; nlijNode . setJoinType ( JoinType . INNER ) ; nlijNode . addInlinePlanNode ( scanNode ) ; nlijNode . addAndLinkChild ( matScan ) ; nlijNode . resolveSortDirection ( ) ; return nlijNode ; }
Generate a plan for an IN-LIST-driven index scan