blob: ace8bd16d067f7204c2978a80693081b1410d1cd [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>ScanSchemaOrchestrator (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="ScanSchemaOrchestrator (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};
var tabs = {65535:["t0","All 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/ScanSchemaOrchestrator.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/physical/impl/scan/project/ScanLevelProjection.ScanProjectionType.html" title="enum in org.apache.drill.exec.physical.impl.scan.project"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.ScanOrchestratorBuilder.html" title="class in org.apache.drill.exec.physical.impl.scan.project"><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/project/ScanSchemaOrchestrator.html" target="_top">Frames</a></li>
<li><a href="ScanSchemaOrchestrator.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.physical.impl.scan.project</div>
<h2 title="Class ScanSchemaOrchestrator" class="title">Class ScanSchemaOrchestrator</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.project.ScanSchemaOrchestrator</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">ScanSchemaOrchestrator</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">Performs projection of a record reader, along with a set of static
columns, to produce the final "public" result set (record batch)
for the scan operator. Primarily solves the "vector permanence"
problem: that the scan operator must present the same set of vectors
to downstream operators despite the fact that the scan operator hosts
a series of readers, each of which builds its own result set.
<p>
Provides the option to continue a schema from one batch to the next.
This can reduce spurious schema changes in formats, such as JSON, with
varying fields. It is not, however, a complete solution as the outcome
still depends on the order of file scans and the division of files across
readers.
<p>
Provides the option to infer the schema from the first batch. The "quick path"
to obtain the schema will read one batch, then use that schema as the returned
schema, returning the full batch in the next call to <tt>next()</tt>.
<h4>Publishing the Final Result Set<h4>
This class "publishes" a vector container that has the final, projected
form of a scan. The projected schema include:
<ul>
<li>Columns from the reader.</li>
<li>Static columns, such as implicit or partition columns.</li>
<li>Null columns for items in the select list, but not found in either
of the above two categories.</li>
</ul>
The order of columns is that set by the select list (or, by the reader for
a <tt>SELECT *</tt> query.
<h4>Schema Handling</h4>
The mapping handles a variety of cases:
<ul>
<li>An early-schema table (one in which we know the schema and
the schema remains constant for the whole table.</li>
<li>A late schema table (one in which we discover the schema as
we read the table, and where the schema can change as the read
progresses.)<ul>
<li>Late schema table with SELECT * (we want all columns, whatever
they happen to be.)</li>
<li>Late schema with explicit select list (we want only certain
columns when they happen to appear in the input.)</li></ul></li>
</ul>
<h4>Implementation Overview</h4>
Major tasks of this class include:
<ul>
<li>Project table columns (change position and or name).</li>
<li>Insert static and null columns.</li>
<li>Schema smoothing. That is, if table A produces columns (a, b), but
table B produces only (a), use the type of the first table's b column for the
null created for the missing b in table B.</li>
<li>Vector persistence: use the same set of vectors across readers as long
as the reader schema does not cause a "hard" schema change (change in type,
introduction of a new column.</li>
<li>Detection of schema changes (change of type, introduction of a new column
for a <tt>SELECT *</tt> query, changing the projected schema, and reporting
the change downstream.</li>
</ul>
A projection is needed to:
<ul>
<li>Reorder table columns</li>
<li>Select a subset of table columns</li>
<li>Fill in missing select columns</li>
<li>Fill in implicit or partition columns</li>
</ul>
Creates and returns the batch merger that does the projection.
<h4>Projection</h4>
To visualize this, assume we have numbered table columns, lettered
implicit, null or partition columns:<pre><code>
[ 1 | 2 | 3 | 4 ] Table columns in table order
[ A | B | C ] Static columns
</code></pre>
Now, we wish to project them into select order.
Let's say that the SELECT clause looked like this, with "t"
indicating table columns:<pre><code>
SELECT t2, t3, C, B, t1, A, t2 ...
</code></pre>
Then the projection looks like this:<pre><code>
[ 2 | 3 | C | B | 1 | A | 2 ]
</code></pre>
Often, not all table columns are projected. In this case, the
result set loader presents the full table schema to the reader,
but actually writes only the projected columns. Suppose we
have:<pre><code>
SELECT t3, C, B, t1,, A ...
</code></pre>
Then the abbreviated table schema looks like this:<pre><code>
[ 1 | 3 ]</code></pre>
Note that table columns retain their table ordering.
The projection looks like this:<pre><code>
[ 2 | C | B | 1 | A ]
</code></pre>
<p>
The projector is created once per schema, then can be reused for any
number of batches.
<p>
Merging is done in one of two ways, depending on the input source:
<ul>
<li>For the table loader, the merger discards any data in the output,
then exchanges the buffers from the input columns to the output,
leaving projected columns empty. Note that unprojected columns must
be cleared by the caller.</li>
<li>For implicit and null columns, the output vector is identical
to the input vector.</li></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/physical/impl/scan/project/ScanSchemaOrchestrator.ScanOrchestratorBuilder.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ScanSchemaOrchestrator.ScanOrchestratorBuilder</a></span></code>&nbsp;</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/physical/impl/scan/project/ScanSchemaOrchestrator.ScanSchemaOptions.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ScanSchemaOrchestrator.ScanSchemaOptions</a></span></code>&nbsp;</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>protected <a href="../../../../../../../../org/apache/drill/exec/memory/BufferAllocator.html" title="interface in org.apache.drill.exec.memory">BufferAllocator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#allocator">allocator</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#batchCount">batchCount</a></span></code>&nbsp;</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/physical/impl/scan/project/ScanSchemaOrchestrator.html#DEFAULT_BATCH_BYTE_COUNT">DEFAULT_BATCH_BYTE_COUNT</a></span></code>&nbsp;</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/physical/impl/scan/project/ScanSchemaOrchestrator.html#DEFAULT_BATCH_ROW_COUNT">DEFAULT_BATCH_ROW_COUNT</a></span></code>&nbsp;</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/physical/impl/scan/project/ScanSchemaOrchestrator.html#MAX_BATCH_BYTE_SIZE">MAX_BATCH_BYTE_SIZE</a></span></code>&nbsp;</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/physical/impl/scan/project/ScanSchemaOrchestrator.html#MAX_BATCH_ROW_COUNT">MAX_BATCH_ROW_COUNT</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/MetadataManager.html" title="interface in org.apache.drill.exec.physical.impl.scan.project">MetadataManager</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#metadataManager">metadataManager</a></span></code>
<div class="block">Creates the metadata (file and directory) columns, if needed.</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/physical/impl/scan/project/ScanSchemaOrchestrator.html#MIN_BATCH_BYTE_SIZE">MIN_BATCH_BYTE_SIZE</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.ScanSchemaOptions.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ScanSchemaOrchestrator.ScanSchemaOptions</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#options">options</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../../../org/apache/drill/exec/record/VectorContainer.html" title="class in org.apache.drill.exec.record">VectorContainer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#outputContainer">outputContainer</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#rowCount">rowCount</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanLevelProjection.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ScanLevelProjection</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#scanProj">scanProj</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/SchemaSmoother.html" title="class in org.apache.drill.exec.physical.impl.scan.project">SchemaSmoother</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#schemaSmoother">schemaSmoother</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../../../org/apache/drill/exec/physical/resultSet/impl/ResultVectorCacheImpl.html" title="class in org.apache.drill.exec.physical.resultSet.impl">ResultVectorCacheImpl</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#vectorCache">vectorCache</a></span></code>
<div class="block">Cache used to preserve the same vectors from one output batch to the
next to keep the Project operator happy (which depends on exactly the
same vectors.</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/physical/impl/scan/project/ScanSchemaOrchestrator.html#ScanSchemaOrchestrator-org.apache.drill.exec.memory.BufferAllocator-org.apache.drill.exec.physical.impl.scan.project.ScanSchemaOrchestrator.ScanOrchestratorBuilder-">ScanSchemaOrchestrator</a></span>(<a href="../../../../../../../../org/apache/drill/exec/memory/BufferAllocator.html" title="interface in org.apache.drill.exec.memory">BufferAllocator</a>&nbsp;allocator,
<a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.ScanOrchestratorBuilder.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ScanSchemaOrchestrator.ScanOrchestratorBuilder</a>&nbsp;builder)</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="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>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#atLimit--">atLimit</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i1" 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/project/ScanSchemaOrchestrator.html#close--">close</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#closeReader--">closeReader</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#hasSchema--">hasSchema</a></span>()</code>&nbsp;</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/project/ScanSchemaOrchestrator.html#isProjectNone--">isProjectNone</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../org/apache/drill/exec/record/VectorContainer.html" title="class in org.apache.drill.exec.record">VectorContainer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#output--">output</a></span>()</code>&nbsp;</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/project/ScanSchemaOrchestrator.html#providedSchema--">providedSchema</a></span>()</code>
<div class="block">Returns the provided reader schema.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ReaderSchemaOrchestrator.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ReaderSchemaOrchestrator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#startReader--">startReader</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.html#tallyBatch-int-">tallyBatch</a></span>(int&nbsp;rowCount)</code>&nbsp;</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="MIN_BATCH_BYTE_SIZE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MIN_BATCH_BYTE_SIZE</h4>
<pre>public static final&nbsp;int MIN_BATCH_BYTE_SIZE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../../constant-values.html#org.apache.drill.exec.physical.impl.scan.project.ScanSchemaOrchestrator.MIN_BATCH_BYTE_SIZE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="MAX_BATCH_BYTE_SIZE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MAX_BATCH_BYTE_SIZE</h4>
<pre>public static final&nbsp;int MAX_BATCH_BYTE_SIZE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../../constant-values.html#org.apache.drill.exec.physical.impl.scan.project.ScanSchemaOrchestrator.MAX_BATCH_BYTE_SIZE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="DEFAULT_BATCH_ROW_COUNT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_BATCH_ROW_COUNT</h4>
<pre>public static final&nbsp;int DEFAULT_BATCH_ROW_COUNT</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../../constant-values.html#org.apache.drill.exec.physical.impl.scan.project.ScanSchemaOrchestrator.DEFAULT_BATCH_ROW_COUNT">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="DEFAULT_BATCH_BYTE_COUNT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_BATCH_BYTE_COUNT</h4>
<pre>public static final&nbsp;int DEFAULT_BATCH_BYTE_COUNT</pre>
</li>
</ul>
<a name="MAX_BATCH_ROW_COUNT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MAX_BATCH_ROW_COUNT</h4>
<pre>public static final&nbsp;int MAX_BATCH_ROW_COUNT</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../../constant-values.html#org.apache.drill.exec.physical.impl.scan.project.ScanSchemaOrchestrator.MAX_BATCH_ROW_COUNT">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="allocator">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allocator</h4>
<pre>protected final&nbsp;<a href="../../../../../../../../org/apache/drill/exec/memory/BufferAllocator.html" title="interface in org.apache.drill.exec.memory">BufferAllocator</a> allocator</pre>
</li>
</ul>
<a name="options">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>options</h4>
<pre>protected final&nbsp;<a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.ScanSchemaOptions.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ScanSchemaOrchestrator.ScanSchemaOptions</a> options</pre>
</li>
</ul>
<a name="metadataManager">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>metadataManager</h4>
<pre>public final&nbsp;<a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/MetadataManager.html" title="interface in org.apache.drill.exec.physical.impl.scan.project">MetadataManager</a> metadataManager</pre>
<div class="block">Creates the metadata (file and directory) columns, if needed.</div>
</li>
</ul>
<a name="vectorCache">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>vectorCache</h4>
<pre>protected final&nbsp;<a href="../../../../../../../../org/apache/drill/exec/physical/resultSet/impl/ResultVectorCacheImpl.html" title="class in org.apache.drill.exec.physical.resultSet.impl">ResultVectorCacheImpl</a> vectorCache</pre>
<div class="block">Cache used to preserve the same vectors from one output batch to the
next to keep the Project operator happy (which depends on exactly the
same vectors.
<p>
If the Project operator ever changes so that it depends on looking up
vectors rather than vector instances, this cache can be deprecated.</div>
</li>
</ul>
<a name="scanProj">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>scanProj</h4>
<pre>protected final&nbsp;<a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanLevelProjection.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ScanLevelProjection</a> scanProj</pre>
</li>
</ul>
<a name="schemaSmoother">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schemaSmoother</h4>
<pre>protected final&nbsp;<a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/SchemaSmoother.html" title="class in org.apache.drill.exec.physical.impl.scan.project">SchemaSmoother</a> schemaSmoother</pre>
</li>
</ul>
<a name="batchCount">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>batchCount</h4>
<pre>protected&nbsp;int batchCount</pre>
</li>
</ul>
<a name="rowCount">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rowCount</h4>
<pre>protected&nbsp;long rowCount</pre>
</li>
</ul>
<a name="outputContainer">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>outputContainer</h4>
<pre>protected&nbsp;<a href="../../../../../../../../org/apache/drill/exec/record/VectorContainer.html" title="class in org.apache.drill.exec.record">VectorContainer</a> outputContainer</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ScanSchemaOrchestrator-org.apache.drill.exec.memory.BufferAllocator-org.apache.drill.exec.physical.impl.scan.project.ScanSchemaOrchestrator.ScanOrchestratorBuilder-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ScanSchemaOrchestrator</h4>
<pre>public&nbsp;ScanSchemaOrchestrator(<a href="../../../../../../../../org/apache/drill/exec/memory/BufferAllocator.html" title="interface in org.apache.drill.exec.memory">BufferAllocator</a>&nbsp;allocator,
<a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.ScanOrchestratorBuilder.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ScanSchemaOrchestrator.ScanOrchestratorBuilder</a>&nbsp;builder)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="startReader--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>startReader</h4>
<pre>public&nbsp;<a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ReaderSchemaOrchestrator.html" title="class in org.apache.drill.exec.physical.impl.scan.project">ReaderSchemaOrchestrator</a>&nbsp;startReader()</pre>
</li>
</ul>
<a name="isProjectNone--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isProjectNone</h4>
<pre>public&nbsp;boolean&nbsp;isProjectNone()</pre>
</li>
</ul>
<a name="hasSchema--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasSchema</h4>
<pre>public&nbsp;boolean&nbsp;hasSchema()</pre>
</li>
</ul>
<a name="providedSchema--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>providedSchema</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;providedSchema()</pre>
<div class="block">Returns the provided reader schema.</div>
</li>
</ul>
<a name="output--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>output</h4>
<pre>public&nbsp;<a href="../../../../../../../../org/apache/drill/exec/record/VectorContainer.html" title="class in org.apache.drill.exec.record">VectorContainer</a>&nbsp;output()</pre>
</li>
</ul>
<a name="tallyBatch-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tallyBatch</h4>
<pre>public&nbsp;void&nbsp;tallyBatch(int&nbsp;rowCount)</pre>
</li>
</ul>
<a name="atLimit--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>atLimit</h4>
<pre>public&nbsp;boolean&nbsp;atLimit()</pre>
</li>
</ul>
<a name="closeReader--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>closeReader</h4>
<pre>public&nbsp;void&nbsp;closeReader()</pre>
</li>
</ul>
<a name="close--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()</pre>
</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/ScanSchemaOrchestrator.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/physical/impl/scan/project/ScanLevelProjection.ScanProjectionType.html" title="enum in org.apache.drill.exec.physical.impl.scan.project"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/project/ScanSchemaOrchestrator.ScanOrchestratorBuilder.html" title="class in org.apache.drill.exec.physical.impl.scan.project"><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/project/ScanSchemaOrchestrator.html" target="_top">Frames</a></li>
<li><a href="ScanSchemaOrchestrator.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>