| 2791 | // |
| 2792 | |
| 2793 | void Optimizer::generateInnerJoin(const StreamList& streams, |
| 2794 | RiverList& rivers, |
| 2795 | SortNode** sortClause, |
| 2796 | const PlanNode* planClause) |
| 2797 | { |
| 2798 | if (streams.isEmpty()) |
| 2799 | return; |
| 2800 | |
| 2801 | if (planClause && streams.getCount() > 1) |
| 2802 | { |
| 2803 | // this routine expects a join/merge |
| 2804 | formRivers(streams, rivers, sortClause, planClause); |
| 2805 | return; |
| 2806 | } |
| 2807 | |
| 2808 | InnerJoin innerJoin(tdbb, this, streams, |
| 2809 | sortClause, (planClause != nullptr)); |
| 2810 | |
| 2811 | while (innerJoin.findJoinOrder()) |
| 2812 | { |
| 2813 | const auto river = innerJoin.formRiver(); |
| 2814 | rivers.add(river); |
| 2815 | } |
| 2816 | } |
| 2817 | |
| 2818 | |
| 2819 | // |
nothing calls this directly
no test coverage detected