template<class T1, class T2>
Select elements from src based on unique elements in given col and copy them to dst.
Definition at line 110 of file Select.h. References Impala::Core::Column::FilterUnique(), and Select(). 00111 { 00112 if (doClearDst) 00113 dst->SetSize(0); 00114 bool* filter = 0; 00115 switch (col) { 00116 case 1: 00117 Column::FilterUnique(filter, dst->GetColumn1(), src->GetColumn1(), 00118 dst->Size(), src->Size()); 00119 break; 00120 case 2: 00121 Column::FilterUnique(filter, dst->GetColumn2(), src->GetColumn2(), 00122 dst->Size(), src->Size()); 00123 break; 00124 case 3: 00125 Column::FilterUnique(filter, dst->GetColumn3(), src->GetColumn3(), 00126 dst->Size(), src->Size()); 00127 break; 00128 case 4: 00129 Column::FilterUnique(filter, dst->GetColumn4(), src->GetColumn4(), 00130 dst->Size(), src->Size()); 00131 break; 00132 case 5: 00133 Column::FilterUnique(filter, dst->GetColumn5(), src->GetColumn5(), 00134 dst->Size(), src->Size()); 00135 break; 00136 case 6: 00137 Column::FilterUnique(filter, dst->GetColumn6(), src->GetColumn6(), 00138 dst->Size(), src->Size()); 00139 break; 00140 case 7: 00141 Column::FilterUnique(filter, dst->GetColumn7(), src->GetColumn7(), 00142 dst->Size(), src->Size()); 00143 break; 00144 case 8: 00145 Column::FilterUnique(filter, dst->GetColumn8(), src->GetColumn8(), 00146 dst->Size(), src->Size()); 00147 break; 00148 case 9: 00149 Column::FilterUnique(filter, dst->GetColumn9(), src->GetColumn9(), 00150 dst->Size(), src->Size()); 00151 break; 00152 } 00153 00154 int nr = 0; 00155 for (int i=0 ; i<src->Size() ; i++) 00156 if (filter[i]) 00157 nr++; 00158 dst->ReserveMin(dst->Size() + nr, true); 00159 00160 Column::Select(dst->GetColumn1(), src->GetColumn1(), filter, dst->Size(), 0, 00161 src->Size()); 00162 Column::Select(dst->GetColumn2(), src->GetColumn2(), filter, dst->Size(), 0, 00163 src->Size()); 00164 Column::Select(dst->GetColumn3(), src->GetColumn3(), filter, dst->Size(), 0, 00165 src->Size()); 00166 Column::Select(dst->GetColumn4(), src->GetColumn4(), filter, dst->Size(), 0, 00167 src->Size()); 00168 Column::Select(dst->GetColumn5(), src->GetColumn5(), filter, dst->Size(), 0, 00169 src->Size()); 00170 Column::Select(dst->GetColumn6(), src->GetColumn6(), filter, dst->Size(), 0, 00171 src->Size()); 00172 Column::Select(dst->GetColumn7(), src->GetColumn7(), filter, dst->Size(), 0, 00173 src->Size()); 00174 Column::Select(dst->GetColumn8(), src->GetColumn8(), filter, dst->Size(), 0, 00175 src->Size()); 00176 Column::Select(dst->GetColumn9(), src->GetColumn9(), filter, dst->Size(), 0, 00177 src->Size()); 00178 dst->SetSize(dst->Size() + nr); 00179 delete filter; 00180 }
Here is the call graph for this function:
|