@@ -45,6 +45,7 @@ namespace iceberg {
4545
4646namespace {
4747
48+ // TODO(gangwu): refactor these macros with template functions.
4849#define PARSE_PRIMITIVE_FIELD (item, array_view, type ) \
4950 for (int64_t row_idx = 0 ; row_idx < array_view->length; row_idx++) { \
5051 if (!ArrowArrayViewIsNull (array_view, row_idx)) { \
@@ -145,30 +146,30 @@ Status ParsePartitionFieldSummaryList(ArrowArrayView* view_of_column,
145146 if (view_of_column->storage_type != ArrowType::NANOARROW_TYPE_LIST) {
146147 return InvalidManifestList (" partitions field should be a list." );
147148 }
148- auto view_of_list_iterm = view_of_column->children [0 ];
149- // view_of_list_iterm is struct<PartitionFieldSummary>
150- if (view_of_list_iterm ->storage_type != ArrowType::NANOARROW_TYPE_STRUCT) {
151- return InvalidManifestList (" partitions list field should be a list ." );
149+ auto view_of_list_item = view_of_column->children [0 ];
150+ // view_of_list_item is struct<PartitionFieldSummary>
151+ if (view_of_list_item ->storage_type != ArrowType::NANOARROW_TYPE_STRUCT) {
152+ return InvalidManifestList (" partitions list item should be a struct ." );
152153 }
153- if (view_of_list_iterm ->n_children != 4 ) {
154+ if (view_of_list_item ->n_children != 4 ) {
154155 return InvalidManifestList (" PartitionFieldSummary should have 4 fields." );
155156 }
156- if (view_of_list_iterm ->children [0 ]->storage_type != ArrowType::NANOARROW_TYPE_BOOL) {
157+ if (view_of_list_item ->children [0 ]->storage_type != ArrowType::NANOARROW_TYPE_BOOL) {
157158 return InvalidManifestList (" contains_null should have be bool type column." );
158159 }
159- auto contains_null = view_of_list_iterm ->children [0 ];
160- if (view_of_list_iterm ->children [1 ]->storage_type != ArrowType::NANOARROW_TYPE_BOOL) {
160+ auto contains_null = view_of_list_item ->children [0 ];
161+ if (view_of_list_item ->children [1 ]->storage_type != ArrowType::NANOARROW_TYPE_BOOL) {
161162 return InvalidManifestList (" contains_nan should have be bool type column." );
162163 }
163- auto contains_nan = view_of_list_iterm ->children [1 ];
164- if (view_of_list_iterm ->children [2 ]->storage_type != ArrowType::NANOARROW_TYPE_BINARY) {
164+ auto contains_nan = view_of_list_item ->children [1 ];
165+ if (view_of_list_item ->children [2 ]->storage_type != ArrowType::NANOARROW_TYPE_BINARY) {
165166 return InvalidManifestList (" lower_bound should have be binary type column." );
166167 }
167- auto lower_bound_list = view_of_list_iterm ->children [2 ];
168- if (view_of_list_iterm ->children [3 ]->storage_type != ArrowType::NANOARROW_TYPE_BINARY) {
168+ auto lower_bound_list = view_of_list_item ->children [2 ];
169+ if (view_of_list_item ->children [3 ]->storage_type != ArrowType::NANOARROW_TYPE_BINARY) {
169170 return InvalidManifestList (" upper_bound should have be binary type column." );
170171 }
171- auto upper_bound_list = view_of_list_iterm ->children [3 ];
172+ auto upper_bound_list = view_of_list_item ->children [3 ];
172173 for (int64_t manifest_idx = 0 ; manifest_idx < manifest_count; manifest_idx++) {
173174 auto offset = ArrowArrayViewListChildOffset (view_of_column, manifest_idx);
174175 auto next_offset = ArrowArrayViewListChildOffset (view_of_column, manifest_idx + 1 );
@@ -303,8 +304,8 @@ Result<std::vector<ManifestFile>> ParseManifestList(ArrowSchema* schema,
303304 return manifest_files;
304305}
305306
306- Status ParseLiteral (ArrowArrayView* view_of_partition, int64_t row_idx,
307- std::vector<ManifestEntry>& manifest_entries) {
307+ Status ParsePartitionValues (ArrowArrayView* view_of_partition, int64_t row_idx,
308+ std::vector<ManifestEntry>& manifest_entries) {
308309 switch (view_of_partition->storage_type ) {
309310 case ArrowType::NANOARROW_TYPE_BOOL: {
310311 auto value = ArrowArrayViewGetUIntUnsafe (view_of_partition, row_idx);
@@ -395,7 +396,7 @@ Status ParseDataFile(const std::shared_ptr<StructType>& data_file_schema,
395396 break ;
396397 }
397398 ICEBERG_RETURN_UNEXPECTED (
398- ParseLiteral (view_of_partition, row_idx, manifest_entries));
399+ ParsePartitionValues (view_of_partition, row_idx, manifest_entries));
399400 }
400401 }
401402 }
@@ -568,7 +569,7 @@ bool RequireStatsProjection(const std::shared_ptr<Expression>& row_filter,
568569 if (columns.empty ()) {
569570 return false ;
570571 }
571- const std::unordered_set<std::string > selected (columns.cbegin (), columns.cend ());
572+ const std::unordered_set<std::string_view > selected (columns.cbegin (), columns.cend ());
572573 if (selected.contains (ManifestReader::kAllColumns )) {
573574 return false ;
574575 }
0 commit comments