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 ; }
Generate a plan for an IN - LIST - driven index scan