blob: 9a9b059e303f85f1b0ed26df14509edc38c0674b [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>AbstractSchemaTracker (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="AbstractSchemaTracker (Drill : 1.20.3 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance 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/AbstractSchemaTracker.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>Prev&nbsp;Class</li>
<li><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/DynamicSchemaFilter.html" title="class in org.apache.drill.exec.physical.impl.scan.v3.schema"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../../index.html?org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html" target="_top">Frames</a></li>
<li><a href="AbstractSchemaTracker.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>Nested&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.physical.impl.scan.v3.schema</div>
<h2 title="Class AbstractSchemaTracker" class="title">Class AbstractSchemaTracker</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.physical.impl.scan.v3.schema.AbstractSchemaTracker</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ProjectionSchemaTracker.html" title="class in org.apache.drill.exec.physical.impl.scan.v3.schema">ProjectionSchemaTracker</a>, <a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/SchemaBasedTracker.html" title="class in org.apache.drill.exec.physical.impl.scan.v3.schema">SchemaBasedTracker</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">AbstractSchemaTracker</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>
implements <a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></pre>
<div class="block">Base class for the projection-based and defined-schema-based
scan schema trackers.</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>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.drill.exec.physical.impl.scan.v3.schema.ScanSchemaTracker">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.drill.exec.physical.impl.scan.v3.schema.<a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></h3>
<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.ProjectionType.html" title="enum in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker.ProjectionType</a></code></li>
</ul>
</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>protected <a href="../../../../../../../../../org/apache/drill/common/exceptions/CustomErrorContext.html" title="interface in org.apache.drill.common.exceptions">CustomErrorContext</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#errorContext">errorContext</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#isResolved">isResolved</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/MutableTupleSchema.html" title="class in org.apache.drill.exec.physical.impl.scan.v3.schema">MutableTupleSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#schema">schema</a></span></code>&nbsp;</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/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#AbstractSchemaTracker-org.apache.drill.common.exceptions.CustomErrorContext-">AbstractSchemaTracker</a></span>(<a href="../../../../../../../../../org/apache/drill/common/exceptions/CustomErrorContext.html" title="interface in org.apache.drill.common.exceptions">CustomErrorContext</a>&nbsp;errorContext)</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="t2" class="tableTab"><span><a href="javascript:show(2);">Instance 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><a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#applyImplicitCols--">applyImplicitCols</a></span>()</code>
<div class="block">Indicate that implicit column parsing is complete.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#checkResolved--">checkResolved</a></span>()</code>
<div class="block">Determine if the schema is resolved.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/apache/drill/common/exceptions/CustomErrorContext.html" title="interface in org.apache.drill.common.exceptions">CustomErrorContext</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#errorContext--">errorContext</a></span>()</code>
<div class="block">The scan-level error context used for errors which may occur before the
first reader starts.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/MutableTupleSchema.html" title="class in org.apache.drill.exec.physical.impl.scan.v3.schema">MutableTupleSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#internalSchema--">internalSchema</a></span>()</code>
<div class="block">Returns the internal scan schema.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#isResolved--">isResolved</a></span>()</code>
<div class="block">Is the scan schema resolved? The schema is resolved depending on the
complex lifecycle explained in the class comment.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#missingColumns-org.apache.drill.exec.record.metadata.TupleMetadata-">missingColumns</a></span>(<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;readerOutputSchema)</code>
<div class="block">Identifies the missing columns given a reader output schema.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#outputSchema--">outputSchema</a></span>()</code>
<div class="block">Returns the scan output schema which is a somewhat complicated
computation that depends on the projection type.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.ProjectionType.html" title="enum in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker.ProjectionType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#projectionType--">projectionType</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#readerInputSchema--">readerInputSchema</a></span>()</code>
<div class="block">The schema which the reader should produce.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#resolveMissingCols-org.apache.drill.exec.record.metadata.TupleMetadata-">resolveMissingCols</a></span>(<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;missingCols)</code>
<div class="block">The missing column handler obtains the list of missing columns from
<code>#missingColumns()</code>.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#schemaVersion--">schemaVersion</a></span>()</code>
<div class="block">Gives the output schema version which will start at some arbitrary
positive number.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html#validateProjection-org.apache.drill.exec.record.metadata.TupleMetadata-org.apache.drill.exec.record.metadata.TupleMetadata-">validateProjection</a></span>(<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;projection,
<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;schema)</code>
<div class="block">Validate a projection list against a defined-schema tuple.</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>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.drill.exec.physical.impl.scan.v3.schema.ScanSchemaTracker">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.drill.exec.physical.impl.scan.v3.schema.<a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></h3>
<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#applyEarlyReaderSchema-org.apache.drill.exec.record.metadata.TupleMetadata-">applyEarlyReaderSchema</a>, <a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#applyReaderSchema-org.apache.drill.exec.record.metadata.TupleMetadata-org.apache.drill.common.exceptions.CustomErrorContext-">applyReaderSchema</a>, <a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#columnProjection-java.lang.String-">columnProjection</a>, <a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#expandImplicitCol-org.apache.drill.exec.record.metadata.ColumnMetadata-org.apache.drill.exec.physical.impl.scan.v3.file.ImplicitColumnMarker-">expandImplicitCol</a>, <a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#projectionFilter-org.apache.drill.common.exceptions.CustomErrorContext-">projectionFilter</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="errorContext">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>errorContext</h4>
<pre>protected final&nbsp;<a href="../../../../../../../../../org/apache/drill/common/exceptions/CustomErrorContext.html" title="interface in org.apache.drill.common.exceptions">CustomErrorContext</a> errorContext</pre>
</li>
</ul>
<a name="schema">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schema</h4>
<pre>protected final&nbsp;<a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/MutableTupleSchema.html" title="class in org.apache.drill.exec.physical.impl.scan.v3.schema">MutableTupleSchema</a> schema</pre>
</li>
</ul>
<a name="isResolved">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isResolved</h4>
<pre>protected&nbsp;boolean isResolved</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="AbstractSchemaTracker-org.apache.drill.common.exceptions.CustomErrorContext-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractSchemaTracker</h4>
<pre>public&nbsp;AbstractSchemaTracker(<a href="../../../../../../../../../org/apache/drill/common/exceptions/CustomErrorContext.html" title="interface in org.apache.drill.common.exceptions">CustomErrorContext</a>&nbsp;errorContext)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="validateProjection-org.apache.drill.exec.record.metadata.TupleMetadata-org.apache.drill.exec.record.metadata.TupleMetadata-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateProjection</h4>
<pre>protected static&nbsp;void&nbsp;validateProjection(<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;projection,
<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;schema)</pre>
<div class="block">Validate a projection list against a defined-schema tuple. Recursively walks
the tree of maps to validate all nested tuples.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>projection</code> - the parsed projection list</dd>
<dd><code>schema</code> - the defined schema to validate against</dd>
</dl>
</li>
</ul>
<a name="projectionType--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>projectionType</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.ProjectionType.html" title="enum in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker.ProjectionType</a>&nbsp;projectionType()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#projectionType--">projectionType</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
</dl>
</li>
</ul>
<a name="errorContext--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>errorContext</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/drill/common/exceptions/CustomErrorContext.html" title="interface in org.apache.drill.common.exceptions">CustomErrorContext</a>&nbsp;errorContext()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#errorContext--">ScanSchemaTracker</a></code></span></div>
<div class="block">The scan-level error context used for errors which may occur before the
first reader starts. The reader will provide a more detailed error context
that describes what is being read.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#errorContext--">errorContext</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the scan-level error context</dd>
</dl>
</li>
</ul>
<a name="internalSchema--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>internalSchema</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/MutableTupleSchema.html" title="class in org.apache.drill.exec.physical.impl.scan.v3.schema">MutableTupleSchema</a>&nbsp;internalSchema()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#internalSchema--">ScanSchemaTracker</a></code></span></div>
<div class="block">Returns the internal scan schema. Primarily for testing.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#internalSchema--">internalSchema</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the internal mutable scan schema</dd>
</dl>
</li>
</ul>
<a name="isResolved--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isResolved</h4>
<pre>public&nbsp;boolean&nbsp;isResolved()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#isResolved--">ScanSchemaTracker</a></code></span></div>
<div class="block">Is the scan schema resolved? The schema is resolved depending on the
complex lifecycle explained in the class comment. Resolution occurs
when the wildcard (if any) is expanded, and all explicit projection
columns obtain a definite type. If schema change is disabled, the
schema will not change once it is resolved. If schema change is allowed,
then batches or readers may extend the schema, triggering a schema
change, and so the scan schema may move from one resolved state to
another.
<p>
The schema will be fully resolved after the first batch of data arrives
from a reader (since the reader lifecycle will then fill in any missing
columns.) The schema may be resolved sooner (such as if a strict provided
schema, or an early reader schema is available and there are no missing
columns.)</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#isResolved--">isResolved</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd> if the schema is resolved, and hence the
<a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#outputSchema--"><code>ScanSchemaTracker.outputSchema()</code></a> is available, <code>false</code> if the schema
contains one or more dynamic columns which are not yet resolved.</dd>
</dl>
</li>
</ul>
<a name="schemaVersion--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schemaVersion</h4>
<pre>public&nbsp;int&nbsp;schemaVersion()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#schemaVersion--">ScanSchemaTracker</a></code></span></div>
<div class="block">Gives the output schema version which will start at some arbitrary
positive number.
<p>
If schema change is allowed, the schema version allows detecting
schema changes as the scan schema moves from one resolved state to
the next. Each schema will have a unique, increasing version number.
A schema change has occurred if the version is newer than the previous
output schema version.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#schemaVersion--">schemaVersion</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the schema version. The absolute number is not important,
rather an increase indicates one or more columns were added at the
top level or within a map at some nesting level</dd>
</dl>
</li>
</ul>
<a name="checkResolved--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkResolved</h4>
<pre>protected&nbsp;void&nbsp;checkResolved()</pre>
<div class="block">Determine if the schema is resolved. It is resolved if the
schema itself is resolved. Since an empty schema is resolved, for the
<code>SELECT *</code> case, we require at least one column, which means
that something (provided schema, early reader schema) has provided
us with a schema. Once resolved, a schema can never become
unresolved: readers are not allowed to add dynamic columns.</div>
</li>
</ul>
<a name="applyImplicitCols--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyImplicitCols</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;applyImplicitCols()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#applyImplicitCols--">ScanSchemaTracker</a></code></span></div>
<div class="block">Indicate that implicit column parsing is complete. Returns the implicit
columns as identified by the implicit column handler, in the order of the
projection list. Implicit columns do not appear in a reader input schema,
and it is an error for the reader to produce such columns.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#applyImplicitCols--">applyImplicitCols</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a sub-schema of only implicit columns, in the order in which
they appear in the output schema</dd>
</dl>
</li>
</ul>
<a name="readerInputSchema--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readerInputSchema</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;readerInputSchema()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#readerInputSchema--">ScanSchemaTracker</a></code></span></div>
<div class="block">The schema which the reader should produce. Depending on the type of
the scan (specifically, if <code>#isProjectAll()</code> is <code>true</code>),
the reader may produce additional columns beyond those in the the
reader input schema. However, for any batch, the reader, plus the
missing columns handler, must produce all columns in the reader input
schema.
<p>
Formally:<pre><code>
reader input schema = output schema - implicit col schema
</code></pre></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#readerInputSchema--">readerInputSchema</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the sub-schema which includes those columns which the reader
should provide, excluding implicit columns</dd>
</dl>
</li>
</ul>
<a name="missingColumns-org.apache.drill.exec.record.metadata.TupleMetadata-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>missingColumns</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;missingColumns(<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;readerOutputSchema)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#missingColumns-org.apache.drill.exec.record.metadata.TupleMetadata-">ScanSchemaTracker</a></code></span></div>
<div class="block">Identifies the missing columns given a reader output schema. The reader
output schema are those columns which the reader actually produced.
<p>
Formally:<pre><code>
missing cols = reader input schema - reader output schema
</code></pre>
<p>
The reader output schema can contain extra, newly discovered columns.
Those are ignored when computing missing columns. Thus, the subtraction
is set subtraction: remove columns common to the two sets.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#missingColumns-org.apache.drill.exec.record.metadata.TupleMetadata-">missingColumns</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
</dl>
</li>
</ul>
<a name="resolveMissingCols-org.apache.drill.exec.record.metadata.TupleMetadata-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveMissingCols</h4>
<pre>public&nbsp;void&nbsp;resolveMissingCols(<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;missingCols)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#resolveMissingCols-org.apache.drill.exec.record.metadata.TupleMetadata-">ScanSchemaTracker</a></code></span></div>
<div class="block">The missing column handler obtains the list of missing columns from
<code>#missingColumns()</code>. Depending on the scan lifecycle, some of the
columns may have a type, others may be dynamic. The missing column handler
chooses a type for any dynamic columns, then calls this method to tell
the scan schema tracker the now-resolved column type.
<p>
Note: a goal of the provided/defined schema system is to avoid the need
to guess types for missing columns since doing so quite often leads
to problems further downstream in the query. Ideally, the type of missing
columns will be known (via the provided or defined schema) to avoid
such conflicts.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#resolveMissingCols-org.apache.drill.exec.record.metadata.TupleMetadata-">resolveMissingCols</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
</dl>
</li>
</ul>
<a name="outputSchema--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>outputSchema</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;outputSchema()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#outputSchema--">ScanSchemaTracker</a></code></span></div>
<div class="block">Returns the scan output schema which is a somewhat complicated
computation that depends on the projection type.
<p>
For a wildcard schema:<pre><code>
output schema = implicit cols U reader output schema
</code></pre>
<p>
For an explicit projection:<pre><code>
output schema = projection list
</code></pre>
Where the projection list is augmented by types from the
provided schema, implicit columns or readers.
<p>
A defined schema <i>is</i> the output schema, so:<code><pre>
output schema = defined schema
</pre></code></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html#outputSchema--">outputSchema</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/ScanSchemaTracker.html" title="interface in org.apache.drill.exec.physical.impl.scan.v3.schema">ScanSchemaTracker</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the complete output schema provided by the scan to downstream
operators. Includes both reader and implicit columns, in the order
of the projection list or, for a wildcard, in the order of the first
reader</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/AbstractSchemaTracker.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>Prev&nbsp;Class</li>
<li><a href="../../../../../../../../../org/apache/drill/exec/physical/impl/scan/v3/schema/DynamicSchemaFilter.html" title="class in org.apache.drill.exec.physical.impl.scan.v3.schema"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../../index.html?org/apache/drill/exec/physical/impl/scan/v3/schema/AbstractSchemaTracker.html" target="_top">Frames</a></li>
<li><a href="AbstractSchemaTracker.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>Nested&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>