You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@iceberg.apache.org by GitBox <gi...@apache.org> on 2020/07/04 23:53:30 UTC

[GitHub] [iceberg] rdblue commented on a change in pull request #1112: Reduce compute complexity in OrcMetrics::findColumnsInContainers

rdblue commented on a change in pull request #1112:
URL: https://github.com/apache/iceberg/pull/1112#discussion_r449814916



##########
File path: orc/src/main/java/org/apache/iceberg/orc/OrcMetrics.java
##########
@@ -214,64 +210,33 @@ private static Metrics buildOrcMetrics(final long numOfRows, final TypeDescripti
     return Optional.ofNullable(Conversions.toByteBuffer(column.type(), max));
   }
 
-  private static Set<TypeDescription> findColumnsInContainers(Schema schema,
-                                                              TypeDescription orcSchema) {
-    ColumnsInContainersVisitor visitor = new ColumnsInContainersVisitor();
-    OrcSchemaWithTypeVisitor.visit(schema, orcSchema, visitor);
-    return visitor.getColumnsInContainers();
+  private static Set<TypeDescription> findColumnsInContainers(TypeDescription orcSchema) {
+    Set<TypeDescription> columnsInContainers = Sets.newHashSet();
+    findColumnsInContainers(orcSchema, columnsInContainers, false);
+    return Collections.unmodifiableSet(columnsInContainers);
   }
 
-  private static class ColumnsInContainersVisitor extends OrcSchemaWithTypeVisitor<TypeDescription> {
-
-    private final Set<TypeDescription> columnsInContainers;
-
-    private ColumnsInContainersVisitor() {
-      columnsInContainers = Sets.newHashSet();
-    }
-
-    public Set<TypeDescription> getColumnsInContainers() {
-      return columnsInContainers;
-    }
-
-    private Set<TypeDescription> flatten(TypeDescription rootType) {
-      if (rootType == null) {
-        return ImmutableSet.of();
-      }
-
-      final Set<TypeDescription> flatTypes = Sets.newHashSetWithExpectedSize(rootType.getMaximumId());
-      final Queue<TypeDescription> queue = Queues.newLinkedBlockingQueue();
-      queue.add(rootType);
-      while (!queue.isEmpty()) {
-        TypeDescription type = queue.remove();
-        flatTypes.add(type);
-        queue.addAll(Optional.ofNullable(type.getChildren()).orElse(ImmutableList.of()));
-      }
-      return flatTypes;
+  private static void findColumnsInContainers(TypeDescription column,
+                                              Set<TypeDescription> columnsInContainers,
+                                              boolean isInContainers) {

Review comment:
       @lxynov, I opened #1167 to fix this. Please have a look and review it if you have time. I'll close this one.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org