blob: 2a41f85e8de233caa5bc3fc14022239a6e037221 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RelTraitSet (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="RelTraitSet (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":9,"i7":9,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":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";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/RelTraitSet.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" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</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 id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.plan</a></div>
<h2 title="Class RelTraitSet" class="title">Class RelTraitSet</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.util.AbstractCollection&lt;E&gt;</li>
<li>
<ul class="inheritance">
<li>java.util.AbstractList&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.plan.RelTraitSet</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>java.lang.Iterable&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code>, <code>java.util.Collection&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code>, <code>java.util.List&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
</dl>
<hr>
<pre>public final class <span class="typeNameLabel">RelTraitSet</span>
extends java.util.AbstractList&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</pre>
<div class="block">RelTraitSet represents an ordered set of <a href="RelTrait.html" title="interface in org.apache.calcite.plan"><code>RelTrait</code></a>s.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelTraitSet.Cache.html" title="class in org.apache.calcite.plan">RelTraitSet.Cache</a></span></code></th>
<td class="colLast">
<div class="block">Cache of trait sets.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="RelTraitSet.Cache.html" title="class in org.apache.calcite.plan">RelTraitSet.Cache</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#cache">cache</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#EMPTY_TRAITS">EMPTY_TRAITS</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#string">string</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#traits">traits</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.java.util.AbstractList">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;java.util.AbstractList</h3>
<code>modCount</code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.plan.RelTraitSet.Cache,org.apache.calcite.plan.RelTrait%5B%5D)">RelTraitSet</a></span>&#8203;(<a href="RelTraitSet.Cache.html" title="class in org.apache.calcite.plan">RelTraitSet.Cache</a>&nbsp;cache,
<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>[]&nbsp;traits)</code></th>
<td class="colLast">
<div class="block">Constructs a RelTraitSet with the given set of RelTraits.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<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="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#allSimple()">allSimple</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether there are any composite traits in this set.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>&lt;T extends <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;<br>T</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#canonize(T)">canonize</a></span>&#8203;(T&nbsp;trait)</code></th>
<td class="colLast">
<div class="block">Converts a trait to canonical form.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#comprises(org.apache.calcite.plan.RelTrait...)">comprises</a></span>&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>...&nbsp;relTraits)</code></th>
<td class="colLast">
<div class="block">Returns whether this trait set comprises precisely the list of given
traits.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeString()">computeString</a></span>()</code></th>
<td class="colLast">
<div class="block">Outputs the traits of this set as a String.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#contains(org.apache.calcite.plan.RelTrait)">contains</a></span>&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</code></th>
<td class="colLast">
<div class="block">Returns whether this trait set contains a given trait.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsIfApplicable(org.apache.calcite.plan.RelTrait)">containsIfApplicable</a></span>&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</code></th>
<td class="colLast">
<div class="block">Returns whether this trait set contains the given trait, or whether the
trait is not present because its <a href="RelTraitDef.html" title="class in org.apache.calcite.plan"><code>RelTraitDef</code></a> is not enabled.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>private static &lt;T&gt;&nbsp;boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsShallow(T%5B%5D,org.apache.calcite.plan.RelTrait)">containsShallow</a></span>&#8203;(T[]&nbsp;ts,
<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;seek)</code></th>
<td class="colLast">
<div class="block">Returns whether an element occurs within an array.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static <a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createEmpty()">createEmpty</a></span>()</code></th>
<td class="colLast">
<div class="block">Creates an empty trait set.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>com.google.common.collect.ImmutableList&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#difference(org.apache.calcite.plan.RelTraitSet)">difference</a></span>&#8203;(<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traitSet)</code></th>
<td class="colLast">
<div class="block">Returns a list of traits that are in <code>traitSet</code> but not in this
RelTraitSet.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object)">equals</a></span>&#8203;(java.lang.Object&nbsp;obj)</code></th>
<td class="colLast">
<div class="block">Compares two RelTraitSet objects for equality.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>private int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findIndex(org.apache.calcite.plan.RelTraitDef)">findIndex</a></span>&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&nbsp;traitDef)</code></th>
<td class="colLast">
<div class="block">Finds the index of a trait of a given type in this set.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#get(int)">get</a></span>&#8203;(int&nbsp;index)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTrait(int)">getTrait</a></span>&#8203;(int&nbsp;index)</code></th>
<td class="colLast">
<div class="block">Retrieves a RelTrait from the set.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>&lt;T extends <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;<br>T</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTrait(org.apache.calcite.plan.RelTraitDef)">getTrait</a></span>&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;traitDef)</code></th>
<td class="colLast">
<div class="block">Retrieves a RelTrait of the given type from the set.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>&lt;E extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;<br>java.util.List&lt;E&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTraits(int)">getTraits</a></span>&#8203;(int&nbsp;index)</code></th>
<td class="colLast">
<div class="block">Retrieves a list of traits from the set.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>&lt;T extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;<br>java.util.List&lt;T&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTraits(org.apache.calcite.plan.RelTraitDef)">getTraits</a></span>&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;traitDef)</code></th>
<td class="colLast">
<div class="block">Retrieves a list of traits of the given type from the set.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>&lt;T extends <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;<br>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isEnabled(org.apache.calcite.plan.RelTraitDef)">isEnabled</a></span>&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;traitDef)</code></th>
<td class="colLast">
<div class="block">Returns whether a given kind of trait is enabled.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#matches(org.apache.calcite.plan.RelTraitSet)">matches</a></span>&#8203;(<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;that)</code></th>
<td class="colLast">
<div class="block">Compares two RelTraitSet objects to see if they match for the purposes of
firing a rule.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#merge(org.apache.calcite.plan.RelTraitSet)">merge</a></span>&#8203;(<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;additionalTraits)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#plus(org.apache.calcite.plan.RelTrait)">plus</a></span>&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</code></th>
<td class="colLast">
<div class="block">Returns this trait set with a given trait added or overridden.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#plusAll(org.apache.calcite.plan.RelTrait%5B%5D)">plusAll</a></span>&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>[]&nbsp;traits)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#replace(int,org.apache.calcite.plan.RelTrait)">replace</a></span>&#8203;(int&nbsp;index,
<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</code></th>
<td class="colLast">
<div class="block">Replaces an existing RelTrait in the set.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>&lt;T extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;<br><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#replace(java.util.List)">replace</a></span>&#8203;(java.util.List&lt;T&gt;&nbsp;traits)</code></th>
<td class="colLast">
<div class="block">Replaces the trait(s) of a given type with a list of traits of the same
type.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#replace(org.apache.calcite.plan.RelTrait)">replace</a></span>&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</code></th>
<td class="colLast">
<div class="block">Returns a trait set consisting of the current set plus a new trait.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>&lt;T extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;<br><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#replace(org.apache.calcite.plan.RelTraitDef,java.util.List)">replace</a></span>&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;def,
java.util.List&lt;T&gt;&nbsp;traits)</code></th>
<td class="colLast">
<div class="block">Replaces the trait(s) of a given type with a list of traits of the same
type.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>&lt;T extends <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;<br><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#replaceIf(org.apache.calcite.plan.RelTraitDef,java.util.function.Supplier)">replaceIf</a></span>&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;def,
java.util.function.Supplier&lt;T&gt;&nbsp;traitSupplier)</code></th>
<td class="colLast">
<div class="block">If a given trait is enabled, replaces it by calling the given function.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>&lt;T extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;<br><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#replaceIfs(org.apache.calcite.plan.RelTraitDef,java.util.function.Supplier)">replaceIfs</a></span>&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;def,
java.util.function.Supplier&lt;java.util.List&lt;T&gt;&gt;&nbsp;traitSupplier)</code></th>
<td class="colLast">
<div class="block">If a given multiple trait is enabled, replaces it by calling the given
function.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#satisfies(org.apache.calcite.plan.RelTraitSet)">satisfies</a></span>&#8203;(<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;that)</code></th>
<td class="colLast">
<div class="block">Returns whether this trait set satisfies another trait set.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplify()">simplify</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a trait set similar to this one but with all composite traits
flattened.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#size()">size</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the size of the RelTraitSet.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.util.AbstractList">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.util.AbstractList</h3>
<code>add, add, addAll, clear, indexOf, iterator, lastIndexOf, listIterator, listIterator, remove, removeRange, set, subList</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.util.AbstractCollection">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.util.AbstractCollection</h3>
<code>addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.util.Collection">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;java.util.Collection</h3>
<code>parallelStream, removeIf, stream, toArray</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Iterable">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;java.lang.Iterable</h3>
<code>forEach</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.util.List">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;java.util.List</h3>
<code>addAll, contains, containsAll, isEmpty, remove, removeAll, replaceAll, retainAll, sort, spliterator, toArray, toArray</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="EMPTY_TRAITS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EMPTY_TRAITS</h4>
<pre>private static final&nbsp;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>[] EMPTY_TRAITS</pre>
</li>
</ul>
<a id="cache">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cache</h4>
<pre>private final&nbsp;<a href="RelTraitSet.Cache.html" title="class in org.apache.calcite.plan">RelTraitSet.Cache</a> cache</pre>
</li>
</ul>
<a id="traits">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>traits</h4>
<pre>private final&nbsp;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>[] traits</pre>
</li>
</ul>
<a id="string">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>string</h4>
<pre>private final&nbsp;java.lang.String string</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.apache.calcite.plan.RelTraitSet.Cache,org.apache.calcite.plan.RelTrait[])">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RelTraitSet</h4>
<pre>private&nbsp;RelTraitSet&#8203;(<a href="RelTraitSet.Cache.html" title="class in org.apache.calcite.plan">RelTraitSet.Cache</a>&nbsp;cache,
<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>[]&nbsp;traits)</pre>
<div class="block">Constructs a RelTraitSet with the given set of RelTraits.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cache</code> - Trait set cache (and indirectly cluster) that this set
belongs to</dd>
<dd><code>traits</code> - Traits</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="createEmpty()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createEmpty</h4>
<pre class="methodSignature">public static&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;createEmpty()</pre>
<div class="block">Creates an empty trait set.
<p>It has a new cache, which will be shared by any trait set created from
it. Thus each empty trait set is the start of a new ancestral line.</div>
</li>
</ul>
<a id="getTrait(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTrait</h4>
<pre class="methodSignature">public&nbsp;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;getTrait&#8203;(int&nbsp;index)</pre>
<div class="block">Retrieves a RelTrait from the set.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>index</code> - 0-based index into ordered RelTraitSet</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the RelTrait</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.ArrayIndexOutOfBoundsException</code> - if index greater than or equal to
<a href="#size()"><code>size()</code></a> or less than 0.</dd>
</dl>
</li>
</ul>
<a id="getTraits(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTraits</h4>
<pre class="methodSignature">public&nbsp;&lt;E extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;&nbsp;java.util.List&lt;E&gt;&nbsp;getTraits&#8203;(int&nbsp;index)</pre>
<div class="block">Retrieves a list of traits from the set.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>index</code> - 0-based index into ordered RelTraitSet</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the RelTrait</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.ArrayIndexOutOfBoundsException</code> - if index greater than or equal to
<a href="#size()"><code>size()</code></a> or less than 0.</dd>
</dl>
</li>
</ul>
<a id="get(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre class="methodSignature">public&nbsp;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;get&#8203;(int&nbsp;index)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>get</code>&nbsp;in interface&nbsp;<code>java.util.List&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>get</code>&nbsp;in class&nbsp;<code>java.util.AbstractList&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a id="isEnabled(org.apache.calcite.plan.RelTraitDef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEnabled</h4>
<pre class="methodSignature">public&nbsp;&lt;T extends <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;&nbsp;boolean&nbsp;isEnabled&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;traitDef)</pre>
<div class="block">Returns whether a given kind of trait is enabled.</div>
</li>
</ul>
<a id="getTrait(org.apache.calcite.plan.RelTraitDef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTrait</h4>
<pre class="methodSignature">public&nbsp;&lt;T extends <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;&nbsp;T&nbsp;getTrait&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;traitDef)</pre>
<div class="block">Retrieves a RelTrait of the given type from the set.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>traitDef</code> - the type of RelTrait to retrieve</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the RelTrait, or null if not found</dd>
</dl>
</li>
</ul>
<a id="getTraits(org.apache.calcite.plan.RelTraitDef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTraits</h4>
<pre class="methodSignature">public&nbsp;&lt;T extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;&nbsp;java.util.List&lt;T&gt;&nbsp;getTraits&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;traitDef)</pre>
<div class="block">Retrieves a list of traits of the given type from the set.
<p>Only valid for traits that support multiple entries. (E.g. collation.)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>traitDef</code> - the type of RelTrait to retrieve</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the RelTrait, or null if not found</dd>
</dl>
</li>
</ul>
<a id="replace(int,org.apache.calcite.plan.RelTrait)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre class="methodSignature">public&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;replace&#8203;(int&nbsp;index,
<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</pre>
<div class="block">Replaces an existing RelTrait in the set.
Returns a different trait set; does not modify this trait set.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>index</code> - 0-based index into ordered RelTraitSet</dd>
<dd><code>trait</code> - the new RelTrait</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the old RelTrait at the index</dd>
</dl>
</li>
</ul>
<a id="replace(org.apache.calcite.plan.RelTrait)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre class="methodSignature">public&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;replace&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</pre>
<div class="block">Returns a trait set consisting of the current set plus a new trait.
<p>If the set does not contain a trait of the same <a href="RelTraitDef.html" title="class in org.apache.calcite.plan"><code>RelTraitDef</code></a>,
the trait is ignored, and this trait set is returned.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>trait</code> - the new trait</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>New set</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#plus(org.apache.calcite.plan.RelTrait)"><code>plus(RelTrait)</code></a></dd>
</dl>
</li>
</ul>
<a id="containsShallow(java.lang.Object[],org.apache.calcite.plan.RelTrait)">
<!-- -->
</a><a id="containsShallow(T[],org.apache.calcite.plan.RelTrait)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsShallow</h4>
<pre class="methodSignature">private static&nbsp;&lt;T&gt;&nbsp;boolean&nbsp;containsShallow&#8203;(T[]&nbsp;ts,
<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;seek)</pre>
<div class="block">Returns whether an element occurs within an array.
<p>Uses <code>==</code>, not <a href="#equals(java.lang.Object)"><code>equals(java.lang.Object)</code></a>. Nulls are allowed.</div>
</li>
</ul>
<a id="replace(java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre class="methodSignature">public&nbsp;&lt;T extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;replace&#8203;(java.util.List&lt;T&gt;&nbsp;traits)</pre>
<div class="block">Replaces the trait(s) of a given type with a list of traits of the same
type.
<p>The list must not be empty, and all traits must be of the same type.</div>
</li>
</ul>
<a id="replace(org.apache.calcite.plan.RelTraitDef,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre class="methodSignature">public&nbsp;&lt;T extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;replace&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;def,
java.util.List&lt;T&gt;&nbsp;traits)</pre>
<div class="block">Replaces the trait(s) of a given type with a list of traits of the same
type.
<p>The list must not be empty, and all traits must be of the same type.</div>
</li>
</ul>
<a id="replaceIfs(org.apache.calcite.plan.RelTraitDef,java.util.function.Supplier)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replaceIfs</h4>
<pre class="methodSignature">public&nbsp;&lt;T extends <a href="RelMultipleTrait.html" title="interface in org.apache.calcite.plan">RelMultipleTrait</a>&gt;&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;replaceIfs&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;def,
java.util.function.Supplier&lt;java.util.List&lt;T&gt;&gt;&nbsp;traitSupplier)</pre>
<div class="block">If a given multiple trait is enabled, replaces it by calling the given
function.</div>
</li>
</ul>
<a id="replaceIf(org.apache.calcite.plan.RelTraitDef,java.util.function.Supplier)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replaceIf</h4>
<pre class="methodSignature">public&nbsp;&lt;T extends <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;replaceIf&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&lt;T&gt;&nbsp;def,
java.util.function.Supplier&lt;T&gt;&nbsp;traitSupplier)</pre>
<div class="block">If a given trait is enabled, replaces it by calling the given function.</div>
</li>
</ul>
<a id="size()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>size</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;size()</pre>
<div class="block">Returns the size of the RelTraitSet.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>size</code>&nbsp;in interface&nbsp;<code>java.util.Collection&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>size</code>&nbsp;in interface&nbsp;<code>java.util.List&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>size</code>&nbsp;in class&nbsp;<code>java.util.AbstractCollection&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the size of the RelTraitSet.</dd>
</dl>
</li>
</ul>
<a id="canonize(org.apache.calcite.plan.RelTrait)">
<!-- -->
</a><a id="canonize(T)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canonize</h4>
<pre class="methodSignature">public&nbsp;&lt;T extends <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;&nbsp;T&nbsp;canonize&#8203;(T&nbsp;trait)</pre>
<div class="block">Converts a trait to canonical form.
<p>After canonization, t1.equals(t2) if and only if t1 == t2.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>trait</code> - Trait</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Trait in canonical form</dd>
</dl>
</li>
</ul>
<a id="equals(java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;equals&#8203;(java.lang.Object&nbsp;obj)</pre>
<div class="block">Compares two RelTraitSet objects for equality.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>equals</code>&nbsp;in interface&nbsp;<code>java.util.Collection&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>equals</code>&nbsp;in interface&nbsp;<code>java.util.List&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>equals</code>&nbsp;in class&nbsp;<code>java.util.AbstractList&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>obj</code> - another RelTraitSet</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if traits are equal and in the same order, false otherwise</dd>
</dl>
</li>
</ul>
<a id="hashCode()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;hashCode()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>hashCode</code>&nbsp;in interface&nbsp;<code>java.util.Collection&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>hashCode</code>&nbsp;in interface&nbsp;<code>java.util.List&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>hashCode</code>&nbsp;in class&nbsp;<code>java.util.AbstractList&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a id="satisfies(org.apache.calcite.plan.RelTraitSet)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>satisfies</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;satisfies&#8203;(<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;that)</pre>
<div class="block">Returns whether this trait set satisfies another trait set.
<p>For that to happen, each trait satisfies the corresponding trait in the
other set. In particular, each trait set satisfies itself, because each
trait subsumes itself.
<p>Intuitively, if a relational expression is needed that has trait set
S (A, B), and trait set S1 (A1, B1) subsumes S, then any relational
expression R in S1 meets that need.
<p>For example, if we need a relational expression that has
trait set S = {enumerable convention, sorted on [C1 asc]}, and R
has {enumerable convention, sorted on [C3], [C1, C2]}. R has two
sort keys, but one them [C1, C2] satisfies S [C1], and that is enough.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>that</code> - another RelTraitSet</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether this trait set satisfies other trait set</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="RelTrait.html#satisfies(org.apache.calcite.plan.RelTrait)"><code>RelTrait.satisfies(RelTrait)</code></a></dd>
</dl>
</li>
</ul>
<a id="matches(org.apache.calcite.plan.RelTraitSet)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>matches</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;matches&#8203;(<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;that)</pre>
<div class="block">Compares two RelTraitSet objects to see if they match for the purposes of
firing a rule. A null RelTrait within a RelTraitSet indicates a wildcard:
any RelTrait in the other RelTraitSet will match. If one RelTraitSet is
smaller than the other, comparison stops when the last RelTrait from the
smaller set has been examined and the remaining RelTraits in the larger
set are assumed to match.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>that</code> - another RelTraitSet</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the RelTraitSets match, false otherwise</dd>
</dl>
</li>
</ul>
<a id="contains(org.apache.calcite.plan.RelTrait)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>contains</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;contains&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</pre>
<div class="block">Returns whether this trait set contains a given trait.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>trait</code> - Sought trait</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether set contains given trait</dd>
</dl>
</li>
</ul>
<a id="containsIfApplicable(org.apache.calcite.plan.RelTrait)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsIfApplicable</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;containsIfApplicable&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</pre>
<div class="block">Returns whether this trait set contains the given trait, or whether the
trait is not present because its <a href="RelTraitDef.html" title="class in org.apache.calcite.plan"><code>RelTraitDef</code></a> is not enabled.
Returns false if another trait of the same <code>RelTraitDef</code> is
present.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>trait</code> - Trait</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether trait is present, or is absent because disabled</dd>
</dl>
</li>
</ul>
<a id="comprises(org.apache.calcite.plan.RelTrait...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>comprises</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;comprises&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>...&nbsp;relTraits)</pre>
<div class="block">Returns whether this trait set comprises precisely the list of given
traits.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>relTraits</code> - Traits</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether this trait set's traits are the same as the argument</dd>
</dl>
</li>
</ul>
<a id="toString()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.util.AbstractCollection&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a id="computeString()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeString</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;computeString()</pre>
<div class="block">Outputs the traits of this set as a String. Traits are output in order,
separated by periods.</div>
</li>
</ul>
<a id="findIndex(org.apache.calcite.plan.RelTraitDef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findIndex</h4>
<pre class="methodSignature">private&nbsp;int&nbsp;findIndex&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&nbsp;traitDef)</pre>
<div class="block">Finds the index of a trait of a given type in this set.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>traitDef</code> - Sought trait definition</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>index of trait, or -1 if not found</dd>
</dl>
</li>
</ul>
<a id="plus(org.apache.calcite.plan.RelTrait)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>plus</h4>
<pre class="methodSignature">public&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;plus&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</pre>
<div class="block">Returns this trait set with a given trait added or overridden. Does not
modify this trait set.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>trait</code> - Trait</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Trait set with given trait</dd>
</dl>
</li>
</ul>
<a id="plusAll(org.apache.calcite.plan.RelTrait[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>plusAll</h4>
<pre class="methodSignature">public&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;plusAll&#8203;(<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>[]&nbsp;traits)</pre>
</li>
</ul>
<a id="merge(org.apache.calcite.plan.RelTraitSet)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>merge</h4>
<pre class="methodSignature">public&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;merge&#8203;(<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;additionalTraits)</pre>
</li>
</ul>
<a id="difference(org.apache.calcite.plan.RelTraitSet)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>difference</h4>
<pre class="methodSignature">public&nbsp;com.google.common.collect.ImmutableList&lt;<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&gt;&nbsp;difference&#8203;(<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traitSet)</pre>
<div class="block">Returns a list of traits that are in <code>traitSet</code> but not in this
RelTraitSet.</div>
</li>
</ul>
<a id="allSimple()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allSimple</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;allSimple()</pre>
<div class="block">Returns whether there are any composite traits in this set.</div>
</li>
</ul>
<a id="simplify()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>simplify</h4>
<pre class="methodSignature">public&nbsp;<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;simplify()</pre>
<div class="block">Returns a trait set similar to this one but with all composite traits
flattened.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/RelTraitSet.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" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</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 id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>