okalinin commented on a change in pull request #1370: DRILL-5797: Use Parquet new reader in all non-complex column queries URL: https://github.com/apache/drill/pull/1370#discussion_r201663590
########## File path: exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetReaderUtility.java ########## @@ -140,15 +140,87 @@ public static int getIntFromLEBytes(byte[] input, int start) { return out; } + /** + * Map full schema paths in format `a`.`b`.`c` to respective SchemaElement objects. + * + * @param footer Parquet file metadata + * @return schema full path to SchemaElement map + */ public static Map<String, SchemaElement> getColNameToSchemaElementMapping(ParquetMetadata footer) { - HashMap<String, SchemaElement> schemaElements = new HashMap<>(); + Map<String, SchemaElement> schemaElements = new HashMap<>(); FileMetaData fileMetaData = new ParquetMetadataConverter().toParquetMetadata(ParquetFileWriter.CURRENT_VERSION, footer); - for (SchemaElement se : fileMetaData.getSchema()) { - schemaElements.put(se.getName(), se); + + Iterator iter = fileMetaData.getSchema().iterator(); + + // skip first default 'root' element + if (iter.hasNext()) { + iter.next(); + } + while (iter.hasNext()) { + addSchemaElementMapping(iter, new StringBuilder(), schemaElements); } return schemaElements; } + /** + * Populate full path to SchemaElement map by recursively traversing schema elements referenced by the given iterator + * + * @param iter file schema values iterator + * @param path parent schema element path + * @param schemaElements schema elements map to insert next iterator element into + */ + private static void addSchemaElementMapping(Iterator iter, StringBuilder path, + Map<String, SchemaElement> schemaElements) { + SchemaElement se = (SchemaElement)iter.next(); Review comment: Fixed both ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services