blob: f4d08b00ef67f7bafa7a210d5af58f64b3640ed4 [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>SchemaNegotiator (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="SchemaNegotiator (Drill : 1.20.3 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/SchemaNegotiator.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/framework/ManagedScanFramework.ScanFrameworkBuilder.html" title="class in org.apache.drill.exec.physical.impl.scan.framework"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiatorImpl.html" title="class in org.apache.drill.exec.physical.impl.scan.framework"><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/framework/SchemaNegotiator.html" target="_top">Frames</a></li>
<li><a href="SchemaNegotiator.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>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&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.framework</div>
<h2 title="Interface SchemaNegotiator" class="title">Interface SchemaNegotiator</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/columns/ColumnsSchemaNegotiator.html" title="interface in org.apache.drill.exec.physical.impl.scan.columns">ColumnsSchemaNegotiator</a>, <a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/file/FileScanFramework.FileSchemaNegotiator.html" title="interface in org.apache.drill.exec.physical.impl.scan.file">FileScanFramework.FileSchemaNegotiator</a></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/columns/ColumnsScanFramework.ColumnsSchemaNegotiatorImpl.html" title="class in org.apache.drill.exec.physical.impl.scan.columns">ColumnsScanFramework.ColumnsSchemaNegotiatorImpl</a>, <a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/file/FileScanFramework.FileSchemaNegotiatorImpl.html" title="class in org.apache.drill.exec.physical.impl.scan.file">FileScanFramework.FileSchemaNegotiatorImpl</a>, <a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiatorImpl.html" title="class in org.apache.drill.exec.physical.impl.scan.framework">SchemaNegotiatorImpl</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">SchemaNegotiator</span></pre>
<div class="block">Negotiates the table schema with the scanner framework and provides
context information for the reader. Scans use either a "dynamic" or
a defined schema.
<p>
Regardless of the schema type, the result of building the schema is a
result set loader used to prepare batches for use in the query. The reader
can simply read all columns, allowing the framework to discard unwanted
values. Or for efficiency, the reader can check the column metadata to
determine if a column is projected, and if not, then don't even read
the column from the input source.
<h4>Defined Schema</h4>
If defined, the execution plan provides the output schema (presumably
computed from an accurate metadata source.) The reader must populate
the proscribed rows, performing column type conversions as needed.
The reader can determine if the schema is defined by calling
<code>hasOutputSchema()</code>.
<p>
At present, the scan framework filters the "provided schema" against
the project list so that this class presents only the actual output
schema. Future versions may do the filtering in the planner, but
the result for readers will be the same either way.
<h4>Dynamic Schema</h4>
A dynamic schema occurs when the plan does not specify a schema.
Drill is unique in its support for "schema on read" in the sense
that Drill does not know the schema until the reader defines it at
scan time.
<p>
The reader and scan framework coordinate to form the output schema.
The reader offers the columns it has available. The scan framework
uses the projection list to decide which to accept. Either way the
scan framework provides a column reader for the column (returning a
do-nothing "dummy" reader if the column is unprojected.)
<p>
With a dynamic schema, readers offer a schema in one of two ways:
<p>
The reader provides the table schema in one of two ways: early schema
or late schema. Either way, the project list from the physical plan
determines which
table columns are materialized and which are not. Readers are provided
for all table columns for readers that must read sequentially, but
only the materialized columns are written to value vectors.
<h4>Early Dynamic Schema</h4>
Some readers can determine the source schema at the start of a scan.
For example, a CSV file has headers, a Parquet file has footers, both
of which define a schema. This case is called "early schema." The
reader fefines the schema by calling
<code>#tableSchema(TupleMetadata)</code> to provide the known schema.
<h4>Late Dynamic Schema</h4>
Other readers don't know the input schema until the reader actually
reads the data. For example, JSON typically has no schema, but does
have sufficient structure (name/value pairs) to infer one.
<p>
The late schema reader calls <code>RowSetLoader#addColumn()</code> to
add each column as it is discovered during the scan.
<p>
Note that, to avoid schema conflicts, a late schema reader
<i><b>must</b></i> define the full set of columns in the first batch,
and must stick to that schema for all subsequent batches. This allows
the reader to look one batch ahead to learn the columns.
<p>
Drill, however, cannot predict the future. Without a defined schema,
downstream operators cannot know which columns might appear later
in the scan, with which types. Today this is a strong guideline.
Future versions may enforce this rule.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== 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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiator.html#batchSize-int-">batchSize</a></span>(int&nbsp;maxRecordsPerBatch)</code>
<div class="block">Set the preferred batch size (which may be overridden by the
result set loader in order to limit vector or batch size.)</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../org/apache/drill/exec/physical/resultSet/ResultSetLoader.html" title="interface in org.apache.drill.exec.physical.resultSet">ResultSetLoader</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiator.html#build--">build</a></span>()</code>
<div class="block">Build the schema, plan the required projections and static
columns and return a loader used to populate value vectors.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../../../../../org/apache/drill/exec/ops/OperatorContext.html" title="interface in org.apache.drill.exec.ops">OperatorContext</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiator.html#context--">context</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>com.typesafe.config.Config</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiator.html#drillConfig--">drillConfig</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/framework/SchemaNegotiator.html#hasProvidedSchema--">hasProvidedSchema</a></span>()</code>
<div class="block">Report if the execution plan defines a provided schema.</div>
</td>
</tr>
<tr id="i5" 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/framework/SchemaNegotiator.html#isProjectionEmpty--">isProjectionEmpty</a></span>()</code>
<div class="block">Report whether the projection list is empty, as occurs in two
cases:
<tt>SELECT COUNT(*) ...</tt> -- empty project.
<tt>SELECT a, b FROM table(c d)</tt> -- disjoint project.
</div>
</td>
</tr>
<tr id="i6" 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/framework/SchemaNegotiator.html#limit-long-">limit</a></span>(long&nbsp;limit)</code>
<div class="block">Push down a LIMIT into the scan.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<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/framework/SchemaNegotiator.html#parentErrorContext--">parentErrorContext</a></span>()</code>
<div class="block">The context to use as a parent when creating a custom context.</div>
</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/framework/SchemaNegotiator.html#providedSchema--">providedSchema</a></span>()</code>
<div class="block">Returns the provided schema, if defined.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../org/apache/drill/exec/server/options/OptionSet.html" title="interface in org.apache.drill.exec.server.options">OptionSet</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiator.html#queryOptions--">queryOptions</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i10" 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/framework/SchemaNegotiator.html#setErrorContext-org.apache.drill.common.exceptions.CustomErrorContext-">setErrorContext</a></span>(<a href="../../../../../../../../org/apache/drill/common/exceptions/CustomErrorContext.html" title="interface in org.apache.drill.common.exceptions">CustomErrorContext</a>&nbsp;context)</code>
<div class="block">Specify an advanced error context which allows the reader to
fill in custom context values.</div>
</td>
</tr>
<tr id="i11" 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/framework/SchemaNegotiator.html#tableSchema-org.apache.drill.exec.record.metadata.TupleMetadata-boolean-">tableSchema</a></span>(<a href="../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;schema,
boolean&nbsp;isComplete)</code>
<div class="block">Specify the table schema if this is an early-schema reader.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><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/physical/impl/scan/framework/SchemaNegotiator.html#userName--">userName</a></span>()</code>
<div class="block">Name of the user running the query.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="context--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>context</h4>
<pre><a href="../../../../../../../../org/apache/drill/exec/ops/OperatorContext.html" title="interface in org.apache.drill.exec.ops">OperatorContext</a>&nbsp;context()</pre>
</li>
</ul>
<a name="drillConfig--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>drillConfig</h4>
<pre>com.typesafe.config.Config&nbsp;drillConfig()</pre>
</li>
</ul>
<a name="queryOptions--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>queryOptions</h4>
<pre><a href="../../../../../../../../org/apache/drill/exec/server/options/OptionSet.html" title="interface in org.apache.drill.exec.server.options">OptionSet</a>&nbsp;queryOptions()</pre>
</li>
</ul>
<a name="setErrorContext-org.apache.drill.common.exceptions.CustomErrorContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setErrorContext</h4>
<pre>void&nbsp;setErrorContext(<a href="../../../../../../../../org/apache/drill/common/exceptions/CustomErrorContext.html" title="interface in org.apache.drill.common.exceptions">CustomErrorContext</a>&nbsp;context)</pre>
<div class="block">Specify an advanced error context which allows the reader to
fill in custom context values.</div>
</li>
</ul>
<a name="userName--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>userName</h4>
<pre><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;userName()</pre>
<div class="block">Name of the user running the query.</div>
</li>
</ul>
<a name="hasProvidedSchema--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasProvidedSchema</h4>
<pre>boolean&nbsp;hasProvidedSchema()</pre>
<div class="block">Report if the execution plan defines a provided schema. If so,
the reader should use that schema, converting or ignoring columns
as needed. A scan without a provided schema has a "dynamic" schema
to be defined by the scan operator itself along with the column
projection list.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the execution plan defines the output
schema, <code>false</code> if the schema should be computed dynamically
from the source schema and column projections</dd>
</dl>
</li>
</ul>
<a name="providedSchema--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>providedSchema</h4>
<pre><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 schema, if defined. The provided schema is a
description of the source schema viewed as a Drill schema.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the output schema, if <a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiator.html#hasProvidedSchema--"><code>hasProvidedSchema()</code></a> returns
<code>true</code>, <code>null</code> otherwise</dd>
</dl>
</li>
</ul>
<a name="tableSchema-org.apache.drill.exec.record.metadata.TupleMetadata-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tableSchema</h4>
<pre>void&nbsp;tableSchema(<a href="../../../../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata">TupleMetadata</a>&nbsp;schema,
boolean&nbsp;isComplete)</pre>
<div class="block">Specify the table schema if this is an early-schema reader. Need
not be called for a late-schema readers. The schema provided here,
if any, is a base schema: the reader is free to discover additional
columns during the read.
<p>
Should only be called if the schema is dynamic, that is, if
<a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiator.html#hasProvidedSchema--"><code>hasProvidedSchema()</code></a> returns false.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>schema</code> - the table schema if known at open time</dd>
<dd><code>isComplete</code> - true if the schema is complete: if it can be used
to define an empty schema-only batch for the first reader. Set to
false if the schema is partial: if the reader must read rows to
determine the full schema</dd>
</dl>
</li>
</ul>
<a name="batchSize-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>batchSize</h4>
<pre>void&nbsp;batchSize(int&nbsp;maxRecordsPerBatch)</pre>
<div class="block">Set the preferred batch size (which may be overridden by the
result set loader in order to limit vector or batch size.)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>maxRecordsPerBatch</code> - preferred number of record per batch</dd>
</dl>
</li>
</ul>
<a name="limit-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>limit</h4>
<pre>void&nbsp;limit(long&nbsp;limit)</pre>
<div class="block">Push down a LIMIT into the scan. This is a per-reader limit,
not an overall scan limit.</div>
</li>
</ul>
<a name="build--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>build</h4>
<pre><a href="../../../../../../../../org/apache/drill/exec/physical/resultSet/ResultSetLoader.html" title="interface in org.apache.drill.exec.physical.resultSet">ResultSetLoader</a>&nbsp;build()</pre>
<div class="block">Build the schema, plan the required projections and static
columns and return a loader used to populate value vectors.
If the select list includes a subset of table columns, then
the loader will be set up in table schema order, but the unneeded
column loaders will be null, meaning that the batch reader should
skip setting those columns.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the loader for the table with columns arranged in table
schema order</dd>
</dl>
</li>
</ul>
<a name="isProjectionEmpty--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isProjectionEmpty</h4>
<pre>boolean&nbsp;isProjectionEmpty()</pre>
<div class="block">Report whether the projection list is empty, as occurs in two
cases:
<ul>
<li><tt>SELECT COUNT(*) ...</tt> -- empty project.</ul>
<li><tt>SELECT a, b FROM table(c d)</tt> -- disjoint project.</li>
</ul></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if no columns are projected, and the client can
make use of <a href="../../../../../../../../org/apache/drill/exec/physical/resultSet/ResultSetLoader.html#skipRows-int-"><code>ResultSetLoader.skipRows(int)</code></a> to indicate the
row count, false if at least one column is projected and so
data must be written using the loader</dd>
</dl>
</li>
</ul>
<a name="parentErrorContext--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>parentErrorContext</h4>
<pre><a href="../../../../../../../../org/apache/drill/common/exceptions/CustomErrorContext.html" title="interface in org.apache.drill.common.exceptions">CustomErrorContext</a>&nbsp;parentErrorContext()</pre>
<div class="block">The context to use as a parent when creating a custom context.
<p>
(Obtain the error context for this reader from the
<a href="../../../../../../../../org/apache/drill/exec/physical/resultSet/ResultSetLoader.html" title="interface in org.apache.drill.exec.physical.resultSet"><code>ResultSetLoader</code></a>.</div>
</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/SchemaNegotiator.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/framework/ManagedScanFramework.ScanFrameworkBuilder.html" title="class in org.apache.drill.exec.physical.impl.scan.framework"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../../org/apache/drill/exec/physical/impl/scan/framework/SchemaNegotiatorImpl.html" title="class in org.apache.drill.exec.physical.impl.scan.framework"><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/framework/SchemaNegotiator.html" target="_top">Frames</a></li>
<li><a href="SchemaNegotiator.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>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&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>