static
| 853 | encoding == VectorEncoding::Simple::ROW; |
| 854 | } |
| 855 | } // namespace |
| 856 | |
| 857 | // static |
| 858 | void BaseVector::flattenVector(VectorPtr& vector) { |
| 859 | if (!vector) { |
| 860 | return; |
| 861 | } |
| 862 | switch (vector->encoding()) { |
| 863 | case VectorEncoding::Simple::FLAT: |
| 864 | return; |
| 865 | case VectorEncoding::Simple::ROW: { |
| 866 | auto* rowVector = vector->asUnchecked<RowVector>(); |
| 867 | for (auto& child : rowVector->children()) { |
| 868 | BaseVector::flattenVector(child); |
| 869 | } |
| 870 | return; |
| 871 | } |
| 872 | case VectorEncoding::Simple::ARRAY: { |
| 873 | auto* arrayVector = vector->asUnchecked<ArrayVector>(); |
| 874 | BaseVector::flattenVector(arrayVector->elements()); |
| 875 | return; |
| 876 | } |
| 877 | case VectorEncoding::Simple::MAP: { |
| 878 | auto* mapVector = vector->asUnchecked<MapVector>(); |
| 879 | BaseVector::flattenVector(mapVector->mapKeys()); |
| 880 | BaseVector::flattenVector(mapVector->mapValues()); |
| 881 | return; |
| 882 | } |
| 883 | case VectorEncoding::Simple::LAZY: { |
| 884 | vector = vector->asUnchecked<LazyVector>()->loadedVectorShared(); |
| 885 | BaseVector::flattenVector(vector); |
| 886 | return; |
| 887 | } |
| 888 | default: |
| 889 | BaseVector::ensureWritable( |
| 890 | SelectivityVector::empty(), vector->type(), vector->pool(), vector); |
| 891 | } |
| 892 | } |
| 893 |