blob: a704ed7a5df2f70b13569a11249fbb913655ad06 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ParquetReaderUtility (Drill : 1.20.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ParquetReaderUtility (Drill : 1.20.3 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ParquetReaderUtility.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderStats.html" title="class in org.apache.drill.exec.store.parquet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.DateCorruptionStatus.html" title="enum in org.apache.drill.exec.store.parquet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/drill/exec/store/parquet/ParquetReaderUtility.html" target="_top">Frames</a></li>
<li><a href="ParquetReaderUtility.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.drill.exec.store.parquet</div>
<h2 title="Class ParquetReaderUtility" class="title">Class ParquetReaderUtility</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.drill.exec.store.parquet.ParquetReaderUtility</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">ParquetReaderUtility</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Utility class where we can capture common logic between the two parquet readers</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.DateCorruptionStatus.html" title="enum in org.apache.drill.exec.store.parquet">ParquetReaderUtility.DateCorruptionStatus</a></span></code>
<div class="block">For most recently created parquet files, we can determine if we have corrupted dates (see DRILL-4203)
based on the file metadata.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.NanoTimeUtils.html" title="class in org.apache.drill.exec.store.parquet">ParquetReaderUtility.NanoTimeUtils</a></span></code>
<div class="block">Utilities for converting from parquet INT96 binary (impala, hive timestamp)
to date time value.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#ALLOWED_DRILL_VERSION_FOR_BINARY">ALLOWED_DRILL_VERSION_FOR_BINARY</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#CORRECT_CORRUPT_DATE_SHIFT">CORRECT_CORRUPT_DATE_SHIFT</a></span></code>
<div class="block">All old parquet files (which haven't "is.date.correct=true" or "parquet-writer.version" properties
in metadata) have a corrupt date shift: 4881176L days or 2 * <a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH">2440588L</a></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#DATE_CORRUPTION_THRESHOLD">DATE_CORRUPTION_THRESHOLD</a></span></code>
<div class="block">The year 5000 (or 1106685 day from Unix epoch) is chosen as the threshold for auto-detecting date corruption.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#DRILL_WRITER_VERSION_STD_DATE_FORMAT">DRILL_WRITER_VERSION_STD_DATE_FORMAT</a></span></code>
<div class="block">Version 2 (and later) of the Drill Parquet writer uses the date format described in the
<a href="https://github.com/Parquet/parquet-format/blob/master/LogicalTypes.md#date">Parquet spec</a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH">JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH</a></span></code>
<div class="block">Number of days between Julian day epoch (January 1, 4713 BC) and Unix day epoch (January 1, 1970).</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#ParquetReaderUtility--">ParquetReaderUtility</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#autoCorrectCorruptedDate-int-">autoCorrectCorruptedDate</a></span>(int&nbsp;corruptedDate)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#checkDecimalTypeEnabled-org.apache.drill.exec.server.options.OptionManager-">checkDecimalTypeEnabled</a></span>(<a href="../../../../../../org/apache/drill/exec/server/options/OptionManager.html" title="interface in org.apache.drill.exec.server.options">OptionManager</a>&nbsp;options)</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.DateCorruptionStatus.html" title="enum in org.apache.drill.exec.store.parquet">ParquetReaderUtility.DateCorruptionStatus</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#checkForCorruptDateValuesInStatistics-org.apache.parquet.hadoop.metadata.ParquetMetadata-java.util.List-boolean-">checkForCorruptDateValuesInStatistics</a></span>(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/drill/common/expression/SchemaPath.html" title="class in org.apache.drill.common.expression">SchemaPath</a>&gt;&nbsp;columns,
boolean&nbsp;autoCorrectCorruptDates)</code>
<div class="block">Detect corrupt date values by looking at the min/max values in the metadata.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#containsComplexColumn-org.apache.parquet.hadoop.metadata.ParquetMetadata-java.util.List-">containsComplexColumn</a></span>(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/drill/common/expression/SchemaPath.html" title="class in org.apache.drill.common.expression">SchemaPath</a>&gt;&nbsp;columns)</code>
<div class="block">Check whether any of columns in the given list is either nested or repetitive.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#correctDatesInMetadataCache-org.apache.drill.exec.store.parquet.metadata.MetadataBase.ParquetTableMetadataBase-">correctDatesInMetadataCache</a></span>(<a href="../../../../../../org/apache/drill/exec/store/parquet/metadata/MetadataBase.ParquetTableMetadataBase.html" title="class in org.apache.drill.exec.store.parquet.metadata">MetadataBase.ParquetTableMetadataBase</a>&nbsp;parquetTableMetadata)</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.DateCorruptionStatus.html" title="enum in org.apache.drill.exec.store.parquet">ParquetReaderUtility.DateCorruptionStatus</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#detectCorruptDates-org.apache.parquet.hadoop.metadata.ParquetMetadata-java.util.List-boolean-">detectCorruptDates</a></span>(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/drill/common/expression/SchemaPath.html" title="class in org.apache.drill.common.expression">SchemaPath</a>&gt;&nbsp;columns,
boolean&nbsp;autoCorrectCorruptDates)</code>
<div class="block">Check for corrupted dates in a parquet file.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.parquet.column.ColumnDescriptor&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#getColNameToColumnDescriptorMapping-org.apache.parquet.hadoop.metadata.ParquetMetadata-">getColNameToColumnDescriptorMapping</a></span>(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer)</code>
<div class="block">Map full column paths to all ColumnDescriptors in file schema</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.parquet.format.SchemaElement&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#getColNameToSchemaElementMapping-org.apache.parquet.hadoop.metadata.ParquetMetadata-">getColNameToSchemaElementMapping</a></span>(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer)</code>
<div class="block">Map full schema paths in format `a`.`b`.`c` to respective SchemaElement objects.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MajorType.html" title="class in org.apache.drill.common.types">TypeProtos.MajorType</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#getComplexTypes-java.util.List-">getComplexTypes</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.parquet.schema.OriginalType&gt;&nbsp;originalTypes)</code>
<div class="block">Converts list of <code>OriginalType</code>s to list of <a href="../../../../../../org/apache/drill/common/types/TypeProtos.MajorType.html" title="class in org.apache.drill.common.types"><code>TypeProtos.MajorType</code></a>s.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../../org/apache/drill/common/types/TypeProtos.DataMode.html" title="enum in org.apache.drill.common.types">TypeProtos.DataMode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#getDataMode-org.apache.parquet.schema.Type.Repetition-">getDataMode</a></span>(org.apache.parquet.schema.Type.Repetition&nbsp;repetition)</code>
<div class="block">Converts Parquet's <code>Type.Repetition</code> to Drill's <code>TypeProtos.DataMode</code>.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#getFullColumnPath-org.apache.parquet.column.ColumnDescriptor-">getFullColumnPath</a></span>(org.apache.parquet.column.ColumnDescriptor&nbsp;column)</code>
<div class="block">generate full path of the column in format `a`.`b`.`c`</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#getIntFromLEBytes-byte:A-int-">getIntFromLEBytes</a></span>(byte[]&nbsp;input,
int&nbsp;start)</code>&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#getMinorType-org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName-org.apache.parquet.schema.OriginalType-">getMinorType</a></span>(org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName&nbsp;type,
org.apache.parquet.schema.OriginalType&nbsp;originalType)</code>
<div class="block">Builds minor type using given <code>OriginalType originalType</code> or <code>PrimitiveTypeName type</code>.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../../org/apache/drill/common/types/TypeProtos.MajorType.html" title="class in org.apache.drill.common.types">TypeProtos.MajorType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#getType-org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName-org.apache.parquet.schema.OriginalType-int-int-">getType</a></span>(org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName&nbsp;type,
org.apache.parquet.schema.OriginalType&nbsp;originalType,
int&nbsp;precision,
int&nbsp;scale)</code>
<div class="block">Builds major type using given <code>OriginalType originalType</code> or <code>PrimitiveTypeName type</code>.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#isLogicalListType-org.apache.parquet.schema.GroupType-">isLogicalListType</a></span>(org.apache.parquet.schema.GroupType&nbsp;groupType)</code>
<div class="block">Checks whether group field approximately matches pattern for Logical Lists:</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#isLogicalMapType-org.apache.parquet.schema.GroupType-">isLogicalMapType</a></span>(org.apache.parquet.schema.GroupType&nbsp;groupType)</code>
<div class="block">Checks whether group field matches pattern for Logical Map type:</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#transformBinaryInMetadataCache-org.apache.drill.exec.store.parquet.metadata.MetadataBase.ParquetTableMetadataBase-org.apache.drill.exec.store.parquet.ParquetReaderConfig-">transformBinaryInMetadataCache</a></span>(<a href="../../../../../../org/apache/drill/exec/store/parquet/metadata/MetadataBase.ParquetTableMetadataBase.html" title="class in org.apache.drill.exec.store.parquet.metadata">MetadataBase.ParquetTableMetadataBase</a>&nbsp;parquetTableMetadata,
<a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderConfig.html" title="class in org.apache.drill.exec.store.parquet">ParquetReaderConfig</a>&nbsp;readerConfig)</code>
<div class="block">Transforms values for min / max binary statistics to byte array.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH</h4>
<pre>public static final&nbsp;long JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH</pre>
<div class="block">Number of days between Julian day epoch (January 1, 4713 BC) and Unix day epoch (January 1, 1970).
The value of this constant is 2440588L.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.drill.exec.store.parquet.ParquetReaderUtility.JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="CORRECT_CORRUPT_DATE_SHIFT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>CORRECT_CORRUPT_DATE_SHIFT</h4>
<pre>public static final&nbsp;long CORRECT_CORRUPT_DATE_SHIFT</pre>
<div class="block">All old parquet files (which haven't "is.date.correct=true" or "parquet-writer.version" properties
in metadata) have a corrupt date shift: 4881176L days or 2 * <a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH">2440588L</a></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.drill.exec.store.parquet.ParquetReaderUtility.CORRECT_CORRUPT_DATE_SHIFT">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="DATE_CORRUPTION_THRESHOLD">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DATE_CORRUPTION_THRESHOLD</h4>
<pre>public static final&nbsp;int DATE_CORRUPTION_THRESHOLD</pre>
<div class="block">The year 5000 (or 1106685 day from Unix epoch) is chosen as the threshold for auto-detecting date corruption.
This balances two possible cases of bad auto-correction. External tools writing dates in the future will not
be shifted unless they are past this threshold (and we cannot identify them as external files based on the metadata).
On the other hand, historical dates written with Drill wouldn't risk being incorrectly shifted unless they were
something like 10,000 years in the past.</div>
</li>
</ul>
<a name="DRILL_WRITER_VERSION_STD_DATE_FORMAT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DRILL_WRITER_VERSION_STD_DATE_FORMAT</h4>
<pre>public static final&nbsp;int DRILL_WRITER_VERSION_STD_DATE_FORMAT</pre>
<div class="block">Version 2 (and later) of the Drill Parquet writer uses the date format described in the
<a href="https://github.com/Parquet/parquet-format/blob/master/LogicalTypes.md#date">Parquet spec</a>.
Prior versions had dates formatted with <a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#CORRECT_CORRUPT_DATE_SHIFT"><code>CORRECT_CORRUPT_DATE_SHIFT</code></a></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.drill.exec.store.parquet.ParquetReaderUtility.DRILL_WRITER_VERSION_STD_DATE_FORMAT">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="ALLOWED_DRILL_VERSION_FOR_BINARY">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ALLOWED_DRILL_VERSION_FOR_BINARY</h4>
<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> ALLOWED_DRILL_VERSION_FOR_BINARY</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.drill.exec.store.parquet.ParquetReaderUtility.ALLOWED_DRILL_VERSION_FOR_BINARY">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ParquetReaderUtility--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ParquetReaderUtility</h4>
<pre>public&nbsp;ParquetReaderUtility()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="checkDecimalTypeEnabled-org.apache.drill.exec.server.options.OptionManager-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkDecimalTypeEnabled</h4>
<pre>public static&nbsp;void&nbsp;checkDecimalTypeEnabled(<a href="../../../../../../org/apache/drill/exec/server/options/OptionManager.html" title="interface in org.apache.drill.exec.server.options">OptionManager</a>&nbsp;options)</pre>
</li>
</ul>
<a name="getIntFromLEBytes-byte:A-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIntFromLEBytes</h4>
<pre>public static&nbsp;int&nbsp;getIntFromLEBytes(byte[]&nbsp;input,
int&nbsp;start)</pre>
</li>
</ul>
<a name="getColNameToSchemaElementMapping-org.apache.parquet.hadoop.metadata.ParquetMetadata-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getColNameToSchemaElementMapping</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.parquet.format.SchemaElement&gt;&nbsp;getColNameToSchemaElementMapping(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer)</pre>
<div class="block">Map full schema paths in format `a`.`b`.`c` to respective SchemaElement objects.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>footer</code> - Parquet file metadata</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>schema full path to SchemaElement map</dd>
</dl>
</li>
</ul>
<a name="getFullColumnPath-org.apache.parquet.column.ColumnDescriptor-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFullColumnPath</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getFullColumnPath(org.apache.parquet.column.ColumnDescriptor&nbsp;column)</pre>
<div class="block">generate full path of the column in format `a`.`b`.`c`</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>column</code> - ColumnDescriptor object</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>full path in format `a`.`b`.`c`</dd>
</dl>
</li>
</ul>
<a name="getColNameToColumnDescriptorMapping-org.apache.parquet.hadoop.metadata.ParquetMetadata-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getColNameToColumnDescriptorMapping</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.parquet.column.ColumnDescriptor&gt;&nbsp;getColNameToColumnDescriptorMapping(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer)</pre>
<div class="block">Map full column paths to all ColumnDescriptors in file schema</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>footer</code> - Parquet file metadata</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>column full path to ColumnDescriptor object map</dd>
</dl>
</li>
</ul>
<a name="autoCorrectCorruptedDate-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>autoCorrectCorruptedDate</h4>
<pre>public static&nbsp;int&nbsp;autoCorrectCorruptedDate(int&nbsp;corruptedDate)</pre>
</li>
</ul>
<a name="correctDatesInMetadataCache-org.apache.drill.exec.store.parquet.metadata.MetadataBase.ParquetTableMetadataBase-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>correctDatesInMetadataCache</h4>
<pre>public static&nbsp;void&nbsp;correctDatesInMetadataCache(<a href="../../../../../../org/apache/drill/exec/store/parquet/metadata/MetadataBase.ParquetTableMetadataBase.html" title="class in org.apache.drill.exec.store.parquet.metadata">MetadataBase.ParquetTableMetadataBase</a>&nbsp;parquetTableMetadata)</pre>
</li>
</ul>
<a name="transformBinaryInMetadataCache-org.apache.drill.exec.store.parquet.metadata.MetadataBase.ParquetTableMetadataBase-org.apache.drill.exec.store.parquet.ParquetReaderConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transformBinaryInMetadataCache</h4>
<pre>public static&nbsp;void&nbsp;transformBinaryInMetadataCache(<a href="../../../../../../org/apache/drill/exec/store/parquet/metadata/MetadataBase.ParquetTableMetadataBase.html" title="class in org.apache.drill.exec.store.parquet.metadata">MetadataBase.ParquetTableMetadataBase</a>&nbsp;parquetTableMetadata,
<a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderConfig.html" title="class in org.apache.drill.exec.store.parquet">ParquetReaderConfig</a>&nbsp;readerConfig)</pre>
<div class="block">Transforms values for min / max binary statistics to byte array.
Transformation logic depends on metadata file version.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>parquetTableMetadata</code> - table metadata that should be corrected</dd>
<dd><code>readerConfig</code> - parquet reader config</dd>
</dl>
</li>
</ul>
<a name="detectCorruptDates-org.apache.parquet.hadoop.metadata.ParquetMetadata-java.util.List-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>detectCorruptDates</h4>
<pre>public static&nbsp;<a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.DateCorruptionStatus.html" title="enum in org.apache.drill.exec.store.parquet">ParquetReaderUtility.DateCorruptionStatus</a>&nbsp;detectCorruptDates(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/drill/common/expression/SchemaPath.html" title="class in org.apache.drill.common.expression">SchemaPath</a>&gt;&nbsp;columns,
boolean&nbsp;autoCorrectCorruptDates)</pre>
<div class="block">Check for corrupted dates in a parquet file. See Drill-4203</div>
</li>
</ul>
<a name="checkForCorruptDateValuesInStatistics-org.apache.parquet.hadoop.metadata.ParquetMetadata-java.util.List-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkForCorruptDateValuesInStatistics</h4>
<pre>public static&nbsp;<a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.DateCorruptionStatus.html" title="enum in org.apache.drill.exec.store.parquet">ParquetReaderUtility.DateCorruptionStatus</a>&nbsp;checkForCorruptDateValuesInStatistics(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/drill/common/expression/SchemaPath.html" title="class in org.apache.drill.common.expression">SchemaPath</a>&gt;&nbsp;columns,
boolean&nbsp;autoCorrectCorruptDates)</pre>
<div class="block">Detect corrupt date values by looking at the min/max values in the metadata.
This should only be used when a file does not have enough metadata to determine if
the data was written with an external tool or an older version of Drill
(<a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetRecordWriter.html#WRITER_VERSION_PROPERTY"><code>ParquetRecordWriter.WRITER_VERSION_PROPERTY</code></a> <
<a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.html#DRILL_WRITER_VERSION_STD_DATE_FORMAT"><code>DRILL_WRITER_VERSION_STD_DATE_FORMAT</code></a>)
This method only checks the first Row Group, because Drill has only ever written
a single Row Group per file.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>footer</code> - parquet footer</dd>
<dd><code>columns</code> - list of columns schema path</dd>
<dd><code>autoCorrectCorruptDates</code> - user setting to allow enabling/disabling of auto-correction
of corrupt dates. There are some rare cases (storing dates thousands
of years into the future, with tools other than Drill writing files)
that would result in the date values being "corrected" into bad values.</dd>
</dl>
</li>
</ul>
<a name="getType-org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName-org.apache.parquet.schema.OriginalType-int-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getType</h4>
<pre>public static&nbsp;<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MajorType.html" title="class in org.apache.drill.common.types">TypeProtos.MajorType</a>&nbsp;getType(org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName&nbsp;type,
org.apache.parquet.schema.OriginalType&nbsp;originalType,
int&nbsp;precision,
int&nbsp;scale)</pre>
<div class="block">Builds major type using given <code>OriginalType originalType</code> or <code>PrimitiveTypeName type</code>.
For DECIMAL will be returned major type with scale and precision.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - parquet primitive type</dd>
<dd><code>originalType</code> - parquet original type</dd>
<dd><code>scale</code> - type scale (used for DECIMAL type)</dd>
<dd><code>precision</code> - type precision (used for DECIMAL type)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>major type</dd>
</dl>
</li>
</ul>
<a name="getMinorType-org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName-org.apache.parquet.schema.OriginalType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMinorType</h4>
<pre>public static&nbsp;<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a>&nbsp;getMinorType(org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName&nbsp;type,
org.apache.parquet.schema.OriginalType&nbsp;originalType)</pre>
<div class="block">Builds minor type using given <code>OriginalType originalType</code> or <code>PrimitiveTypeName type</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - parquet primitive type</dd>
<dd><code>originalType</code> - parquet original type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>minor type</dd>
</dl>
</li>
</ul>
<a name="containsComplexColumn-org.apache.parquet.hadoop.metadata.ParquetMetadata-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsComplexColumn</h4>
<pre>public static&nbsp;boolean&nbsp;containsComplexColumn(org.apache.parquet.hadoop.metadata.ParquetMetadata&nbsp;footer,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/drill/common/expression/SchemaPath.html" title="class in org.apache.drill.common.expression">SchemaPath</a>&gt;&nbsp;columns)</pre>
<div class="block">Check whether any of columns in the given list is either nested or repetitive.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>footer</code> - Parquet file schema</dd>
<dd><code>columns</code> - list of query SchemaPath objects</dd>
</dl>
</li>
</ul>
<a name="getComplexTypes-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getComplexTypes</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MajorType.html" title="class in org.apache.drill.common.types">TypeProtos.MajorType</a>&gt;&nbsp;getComplexTypes(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.parquet.schema.OriginalType&gt;&nbsp;originalTypes)</pre>
<div class="block">Converts list of <code>OriginalType</code>s to list of <a href="../../../../../../org/apache/drill/common/types/TypeProtos.MajorType.html" title="class in org.apache.drill.common.types"><code>TypeProtos.MajorType</code></a>s.
<b>NOTE</b>: current implementation cares about <code>OriginalType.MAP</code> and <code>OriginalType.LIST</code> only
converting it to <a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html#DICT"><code>TypeProtos.MinorType.DICT</code></a>
and <a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html#LIST"><code>TypeProtos.MinorType.LIST</code></a> respectively.
Other original types are converted to <code>null</code>, because there is no certain correspondence
(and, actually, a need because these types are used to differentiate between Drill's MAP and DICT (and arrays of thereof) types
when constructing <a href="../../../../../../org/apache/drill/exec/record/metadata/TupleSchema.html" title="class in org.apache.drill.exec.record.metadata"><code>TupleSchema</code></a>) between these two.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>originalTypes</code> - list of Parquet's types</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>list containing either <code>null</code> or type with minor
type <a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html#DICT"><code>TypeProtos.MinorType.DICT</code></a> or
<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html#LIST"><code>TypeProtos.MinorType.LIST</code></a> values</dd>
</dl>
</li>
</ul>
<a name="isLogicalListType-org.apache.parquet.schema.GroupType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLogicalListType</h4>
<pre>public static&nbsp;boolean&nbsp;isLogicalListType(org.apache.parquet.schema.GroupType&nbsp;groupType)</pre>
<div class="block">Checks whether group field approximately matches pattern for Logical Lists:
<pre>
&lt;list-repetition&gt; group &lt;name&gt; (LIST) {
repeated group list {
&lt;element-repetition&gt; &lt;element-type&gt; element;
}
}
</pre>
(See for more details: https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#lists)
Note, that standard field names 'list' and 'element' aren't checked intentionally,
because Hive lists have 'bag' and 'array_element' names instead.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>groupType</code> - type which may have LIST original type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the type is LIST and nested field is repeated group</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#lists">Parquet List logical type</a></dd>
</dl>
</li>
</ul>
<a name="isLogicalMapType-org.apache.parquet.schema.GroupType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLogicalMapType</h4>
<pre>public static&nbsp;boolean&nbsp;isLogicalMapType(org.apache.parquet.schema.GroupType&nbsp;groupType)</pre>
<div class="block">Checks whether group field matches pattern for Logical Map type:
<pre>
&lt;map-repetition&gt; group &lt;name&gt; (MAP) {
repeated group key_value {
required &lt;key-type&gt; key;
&lt;value-repetition&gt; &lt;value-type&gt; value;
}
}
</pre>
Note, that actual group names are not checked specifically.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>groupType</code> - parquet type which may be of MAP type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the type is MAP</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#maps">Parquet Map logical type</a></dd>
</dl>
</li>
</ul>
<a name="getDataMode-org.apache.parquet.schema.Type.Repetition-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getDataMode</h4>
<pre>public static&nbsp;<a href="../../../../../../org/apache/drill/common/types/TypeProtos.DataMode.html" title="enum in org.apache.drill.common.types">TypeProtos.DataMode</a>&nbsp;getDataMode(org.apache.parquet.schema.Type.Repetition&nbsp;repetition)</pre>
<div class="block">Converts Parquet's <code>Type.Repetition</code> to Drill's <code>TypeProtos.DataMode</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>repetition</code> - repetition to be converted</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>data mode corresponding to Parquet's repetition</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ParquetReaderUtility.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderStats.html" title="class in org.apache.drill.exec.store.parquet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/drill/exec/store/parquet/ParquetReaderUtility.DateCorruptionStatus.html" title="enum in org.apache.drill.exec.store.parquet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/drill/exec/store/parquet/ParquetReaderUtility.html" target="_top">Frames</a></li>
<li><a href="ParquetReaderUtility.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 1970 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>