blob: 975ce700fcce6ed0a315319cc96f7f91a176f94f [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>BatchSchema (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="BatchSchema (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":9,"i11":10};
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/BatchSchema.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/record/AbstractUnaryRecordBatch.html" title="class in org.apache.drill.exec.record"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/drill/exec/record/BatchSchema.SelectionVectorMode.html" title="enum in org.apache.drill.exec.record"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/drill/exec/record/BatchSchema.html" target="_top">Frames</a></li>
<li><a href="BatchSchema.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>Field&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>Field&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.record</div>
<h2 title="Class BatchSchema" class="title">Class BatchSchema</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.record.BatchSchema</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/drill/exec/record/MaterializedField.html" title="class in org.apache.drill.exec.record">MaterializedField</a>&gt;</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">BatchSchema</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="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/drill/exec/record/MaterializedField.html" title="class in org.apache.drill.exec.record">MaterializedField</a>&gt;</pre>
<div class="block">Historically <a href="../../../../../org/apache/drill/exec/record/BatchSchema.html" title="class in org.apache.drill.exec.record"><code>BatchSchema</code></a> is used to represent the schema of a batch. However, it does not handle complex types well. If you have a choice, use
<a href="../../../../../org/apache/drill/exec/record/metadata/TupleMetadata.html" title="interface in org.apache.drill.exec.record.metadata"><code>TupleMetadata</code></a> instead.</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/record/BatchSchema.SelectionVectorMode.html" title="enum in org.apache.drill.exec.record">BatchSchema.SelectionVectorMode</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/record/BatchSchema.html#BatchSchema-org.apache.drill.exec.record.BatchSchema.SelectionVectorMode-java.util.List-">BatchSchema</a></span>(<a href="../../../../../org/apache/drill/exec/record/BatchSchema.SelectionVectorMode.html" title="enum in org.apache.drill.exec.record">BatchSchema.SelectionVectorMode</a>&nbsp;selectionVector,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/drill/exec/record/MaterializedField.html" title="class in org.apache.drill.exec.record">MaterializedField</a>&gt;&nbsp;fields)</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/BatchSchema.html" title="class in org.apache.drill.exec.record">BatchSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#clone--">clone</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#equals-java.lang.Object-">equals</a></span>(<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>&nbsp;obj)</code>
<div class="block">DRILL-5525: the semantics of this method are badly broken.</div>
</td>
</tr>
<tr id="i2" 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/record/BatchSchema.html#format--">format</a></span>()</code>
<div class="block">Format the schema into a multi-line format.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/exec/record/MaterializedField.html" title="class in org.apache.drill.exec.record">MaterializedField</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#getColumn-int-">getColumn</a></span>(int&nbsp;index)</code>&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#getFieldCount--">getFieldCount</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/exec/record/BatchSchema.SelectionVectorMode.html" title="enum in org.apache.drill.exec.record">BatchSchema.SelectionVectorMode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#getSelectionVectorMode--">getSelectionVectorMode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#isEquivalent-org.apache.drill.exec.record.BatchSchema-">isEquivalent</a></span>(<a href="../../../../../org/apache/drill/exec/record/BatchSchema.html" title="class in org.apache.drill.exec.record">BatchSchema</a>&nbsp;other)</code>
<div class="block">Compare that two schemas are identical according to the rules defined
in <a href="../../../../../org/apache/drill/exec/record/MaterializedField.html#isEquivalent-org.apache.drill.exec.record.MaterializedField-"><code>MaterializedField.isEquivalent(MaterializedField)</code></a>.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/drill/exec/record/MaterializedField.html" title="class in org.apache.drill.exec.record">MaterializedField</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#iterator--">iterator</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html" title="class in org.apache.drill.exec.record">BatchSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#merge-org.apache.drill.exec.record.BatchSchema-">merge</a></span>(<a href="../../../../../org/apache/drill/exec/record/BatchSchema.html" title="class in org.apache.drill.exec.record">BatchSchema</a>&nbsp;otherSchema)</code>
<div class="block">Merge two schemas to produce a new, merged schema.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/drill/exec/record/SchemaBuilder.html" title="class in org.apache.drill.exec.record">SchemaBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#newBuilder--">newBuilder</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<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/record/BatchSchema.html#toString--">toString</a></span>()</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#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#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#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.java.lang.Iterable">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-" title="class or interface in java.lang">forEach</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--" title="class or interface in java.lang">spliterator</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="BatchSchema-org.apache.drill.exec.record.BatchSchema.SelectionVectorMode-java.util.List-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BatchSchema</h4>
<pre>public&nbsp;BatchSchema(<a href="../../../../../org/apache/drill/exec/record/BatchSchema.SelectionVectorMode.html" title="enum in org.apache.drill.exec.record">BatchSchema.SelectionVectorMode</a>&nbsp;selectionVector,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/drill/exec/record/MaterializedField.html" title="class in org.apache.drill.exec.record">MaterializedField</a>&gt;&nbsp;fields)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="newBuilder--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newBuilder</h4>
<pre>public static&nbsp;<a href="../../../../../org/apache/drill/exec/record/SchemaBuilder.html" title="class in org.apache.drill.exec.record">SchemaBuilder</a>&nbsp;newBuilder()</pre>
</li>
</ul>
<a name="getFieldCount--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFieldCount</h4>
<pre>public&nbsp;int&nbsp;getFieldCount()</pre>
</li>
</ul>
<a name="getColumn-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getColumn</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/record/MaterializedField.html" title="class in org.apache.drill.exec.record">MaterializedField</a>&nbsp;getColumn(int&nbsp;index)</pre>
</li>
</ul>
<a name="iterator--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>iterator</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/drill/exec/record/MaterializedField.html" title="class in org.apache.drill.exec.record">MaterializedField</a>&gt;&nbsp;iterator()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--" title="class or interface in java.lang">iterator</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/drill/exec/record/MaterializedField.html" title="class in org.apache.drill.exec.record">MaterializedField</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a name="getSelectionVectorMode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSelectionVectorMode</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/record/BatchSchema.SelectionVectorMode.html" title="enum in org.apache.drill.exec.record">BatchSchema.SelectionVectorMode</a>&nbsp;getSelectionVectorMode()</pre>
</li>
</ul>
<a name="clone--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clone</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/record/BatchSchema.html" title="class in org.apache.drill.exec.record">BatchSchema</a>&nbsp;clone()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><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></code>&nbsp;in class&nbsp;<code><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></code></dd>
</dl>
</li>
</ul>
<a name="toString--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><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></code>&nbsp;in class&nbsp;<code><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></code></dd>
</dl>
</li>
</ul>
<a name="hashCode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>public&nbsp;int&nbsp;hashCode()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><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></code>&nbsp;in class&nbsp;<code><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></code></dd>
</dl>
</li>
</ul>
<a name="equals-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(<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>&nbsp;obj)</pre>
<div class="block">DRILL-5525: the semantics of this method are badly broken.
Caveat emptor.
This check used for detecting actual schema change inside operator record batch will not work for
AbstractContainerVectors (like MapVector). In each record batch a reference to incoming batch schema is
stored (let say S:{a: int}) and then equals is called on that stored reference and current incoming batch schema.
Internally schema object has references to Materialized fields from vectors in container. If there is change in
incoming batch schema, then the upstream will create a new ValueVector in its output container with the new
detected type, which in turn will have new instance for Materialized Field. Then later a new BatchSchema object
is created for this new incoming batch (let say S":{a":varchar}). The operator calling equals will have reference
to old schema object (S) and hence first check will not be satisfied and then it will call equals on each of the
Materialized Field (a.equals(a")). Since new materialized field is created for newly created vector the equals
check on field will return false. And schema change will be detected in this case.
Now consider instead of int vector there is a MapVector such that initial schema was (let say S:{a:{b:int, c:int}}
and then later schema for Map field c changes, then in container Map vector will be found but later the children
vector for field c will be replaced. This new schema object will be created as (S":{a:{b:int, c":varchar}}). Now
when S.equals(S") is called it will eventually call a.equals(a) which will return true even though the schema of
children value vector c has changed. This is because no new vector is created for field (a) and hence it's object
reference to MaterializedField has not changed which will be reflected in both old and new schema instances.
Hence we should make use of <a href="../../../../../org/apache/drill/exec/record/BatchSchema.html#isEquivalent-org.apache.drill.exec.record.BatchSchema-"><code>isEquivalent(BatchSchema)</code></a> method instead since
<a href="../../../../../org/apache/drill/exec/record/MaterializedField.html#isEquivalent-org.apache.drill.exec.record.MaterializedField-"><code>MaterializedField.isEquivalent(MaterializedField)</code></a> method is updated to remove the reference check.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><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></code>&nbsp;in class&nbsp;<code><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></code></dd>
</dl>
</li>
</ul>
<a name="isEquivalent-org.apache.drill.exec.record.BatchSchema-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEquivalent</h4>
<pre>public&nbsp;boolean&nbsp;isEquivalent(<a href="../../../../../org/apache/drill/exec/record/BatchSchema.html" title="class in org.apache.drill.exec.record">BatchSchema</a>&nbsp;other)</pre>
<div class="block">Compare that two schemas are identical according to the rules defined
in <a href="../../../../../org/apache/drill/exec/record/MaterializedField.html#isEquivalent-org.apache.drill.exec.record.MaterializedField-"><code>MaterializedField.isEquivalent(MaterializedField)</code></a>. In particular,
this method requires that the fields have a 1:1 ordered correspondence
in the two schemas.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>other</code> - another non-null batch schema</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><tt>true</tt> if the two schemas are equivalent according to
the <a href="../../../../../org/apache/drill/exec/record/MaterializedField.html#isEquivalent-org.apache.drill.exec.record.MaterializedField-"><code>MaterializedField.isEquivalent(MaterializedField)</code></a> rules,
false otherwise</dd>
</dl>
</li>
</ul>
<a name="merge-org.apache.drill.exec.record.BatchSchema-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>merge</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/record/BatchSchema.html" title="class in org.apache.drill.exec.record">BatchSchema</a>&nbsp;merge(<a href="../../../../../org/apache/drill/exec/record/BatchSchema.html" title="class in org.apache.drill.exec.record">BatchSchema</a>&nbsp;otherSchema)</pre>
<div class="block">Merge two schemas to produce a new, merged schema. The caller is responsible
for ensuring that column names are unique. The order of the fields in the
new schema is the same as that of this schema, with the other schema's fields
appended in the order defined in the other schema.
<p>
Merging data with selection vectors is unlikely to be useful, or work well.
With a selection vector, the two record batches would have to be correlated
both in their selection vectors AND in the underlying vectors. Such a use case
is hard to imagine. So, for now, this method forbids merging schemas if either
of them carry a selection vector. If we discover a meaningful use case, we can
revisit the issue.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>otherSchema</code> - the schema to merge with this one</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the new, merged, schema</dd>
</dl>
</li>
</ul>
<a name="format--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>format</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format()</pre>
<div class="block">Format the schema into a multi-line format. Useful when debugging a query with
a very wide schema as the usual single-line format is far too hard to read.</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/BatchSchema.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/record/AbstractUnaryRecordBatch.html" title="class in org.apache.drill.exec.record"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/drill/exec/record/BatchSchema.SelectionVectorMode.html" title="enum in org.apache.drill.exec.record"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/drill/exec/record/BatchSchema.html" target="_top">Frames</a></li>
<li><a href="BatchSchema.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>Field&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>Field&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>