blob: 8f6f23681c09d655bf432c342f99cabc491838a4 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RelFieldTrimmer (Apache Calcite calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.sql2rel, class: RelFieldTrimmer">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../script-dir/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../script-dir/jquery-3.4.1.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.js"></script>
</head>
<body class="class-declaration">
<script type="text/javascript">var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"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};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flexBox">
<header role="banner" class="flexHeader">
<nav role="navigation">
<!-- ========= 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="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 class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<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>
<div class="navListSearch"><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="skipNav"><a id="skip.navbar.top">
<!-- -->
</a></div>
</nav>
</header>
<div class="flexContent">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.sql2rel</a></div>
<h1 title="Class RelFieldTrimmer" class="title">Class RelFieldTrimmer</h1>
</div>
<div class="contentContainer">
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a>
<div class="inheritance">org.apache.calcite.sql2rel.RelFieldTrimmer</div>
</div>
<section class="description">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../util/ReflectiveVisitor.html" title="interface in org.apache.calcite.util">ReflectiveVisitor</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">RelFieldTrimmer</span>
extends <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>
implements <a href="../util/ReflectiveVisitor.html" title="interface in org.apache.calcite.util">ReflectiveVisitor</a></pre>
<div class="block">Transformer that walks over a tree of relational expressions, replacing each
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel"><code>RelNode</code></a> with a 'slimmed down' relational expression that projects
only the columns required by its consumer.
<p>Uses multi-methods to fire the right rule for each type of relational
expression. This allows the transformer to be extended without having to
add a new method to RelNode, and without requiring a collection of rule
classes scattered to the four winds.
<p>REVIEW: jhyde, 2009/7/28: Is sql2rel the correct package for this class?
Trimming fields is not an essential part of SQL-to-Rel translation, and
arguably belongs in the optimization phase. But this transformer does not
obey the usual pattern for planner rules; it is difficult to do so, because
each <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel"><code>RelNode</code></a> needs to return a different set of fields after
trimming.
<p>TODO: Change 2nd arg of the <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(org.apache.calcite.rel.RelNode, org.apache.calcite.util.ImmutableBitSet, java.util.Set&lt;org.apache.calcite.rel.type.RelDataTypeField&gt;)</code></a> method from BitSet to
Mapping. Sometimes it helps the consumer if you return the columns in a
particular order. For instance, it may avoid a project at the top of the
tree just for reordering. Could ease the transition by writing methods that
convert BitSet to Mapping and vice versa.</div>
</section>
<section class="summary">
<ul class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li class="blockList">
<section class="nestedClassSummary"><a id="nested.class.summary">
<!-- -->
</a>
<h2>Nested Class Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<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>
</thead>
<tbody>
<tr class="altColor">
<td class="colFirst"><code>protected static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span></code></th>
<td class="colLast">
<div class="block">Result of an attempt to trim columns from a relational expression.</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li class="blockList">
<section class="constructorSummary"><a id="constructor.summary">
<!-- -->
</a>
<h2>Constructor Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.plan.RelOptCluster,org.apache.calcite.rel.core.RelFactories.ProjectFactory,org.apache.calcite.rel.core.RelFactories.FilterFactory,org.apache.calcite.rel.core.RelFactories.JoinFactory,org.apache.calcite.rel.core.RelFactories.SortFactory,org.apache.calcite.rel.core.RelFactories.AggregateFactory,org.apache.calcite.rel.core.RelFactories.SetOpFactory)">RelFieldTrimmer</a></span>&#8203;(@Nullable <a href="../sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../plan/RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory,
<a href="../rel/core/RelFactories.FilterFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.FilterFactory</a>&nbsp;filterFactory,
<a href="../rel/core/RelFactories.JoinFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.JoinFactory</a>&nbsp;joinFactory,
<a href="../rel/core/RelFactories.SortFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.SortFactory</a>&nbsp;sortFactory,
<a href="../rel/core/RelFactories.AggregateFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.AggregateFactory</a>&nbsp;aggregateFactory,
<a href="../rel/core/RelFactories.SetOpFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.SetOpFactory</a>&nbsp;setOpFactory)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.tools.RelBuilder)">RelFieldTrimmer</a></span>&#8203;(@Nullable <a href="../sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</code></th>
<td class="colLast">
<div class="block">Creates a RelFieldTrimmer.</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li class="blockList">
<section class="methodSummary"><a id="method.summary">
<!-- -->
</a>
<h2>Method Summary</h2>
<div class="memberSummary">
<div role="tablist" aria-orientation="horizontal"><button role="tab" aria-selected="true" aria-controls="memberSummary_tabpanel" tabindex="0" onkeydown="switchTab(event)" id="t0" class="activeTableTab">All Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t2" class="tableTab" onclick="show(2);">Instance Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t4" class="tableTab" onclick="show(8);">Concrete Methods</button></div>
<div id="memberSummary_tabpanel" role="tabpanel">
<table aria-labelledby="t0">
<thead>
<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>
</thead>
<tbody>
<tr class="altColor" id="i0">
<td class="colFirst"><code>protected <a href="../util/mapping/Mapping.html" title="interface in org.apache.calcite.util.mapping">Mapping</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createMapping(org.apache.calcite.util.ImmutableBitSet,int)">createMapping</a></span>&#8203;(<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
int&nbsp;fieldCount)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>protected <a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dispatchTrimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">dispatchTrimFields</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Invokes <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(org.apache.calcite.rel.RelNode, org.apache.calcite.util.ImmutableBitSet, java.util.Set&lt;org.apache.calcite.rel.type.RelDataTypeField&gt;)</code></a>, or the appropriate method for the type
of the rel parameter, using multi-method dispatch.</div>
</td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>protected <a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dummyProject(int,org.apache.calcite.rel.RelNode)">dummyProject</a></span>&#8203;(int&nbsp;fieldCount,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input)</code></th>
<td class="colLast">
<div class="block">Creates a project with a dummy column, to protect the parts of the system
that cannot handle a relational expression with no columns.</div>
</td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>protected <a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dummyProject(int,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">dummyProject</a></span>&#8203;(int&nbsp;fieldCount,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input,
@Nullable <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;originalRelNode)</code></th>
<td class="colLast">
<div class="block">Creates a project with a dummy column, to protect the parts of the system
that cannot handle a relational expression with no columns.</div>
</td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code>protected <a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#result(org.apache.calcite.rel.RelNode,org.apache.calcite.util.mapping.Mapping)">result</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r,
<a href="../util/mapping/Mapping.html" title="interface in org.apache.calcite.util.mapping">Mapping</a>&nbsp;mapping)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trim(org.apache.calcite.rel.RelNode)">trim</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;root)</code></th>
<td class="colLast">
<div class="block">Trims unused fields from a relational expression.</div>
</td>
</tr>
<tr class="altColor" id="i6">
<td class="colFirst"><code>protected <a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimChild(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimChild</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Trims the fields of an input relational expression.</div>
</td>
</tr>
<tr class="rowColor" id="i7">
<td class="colFirst"><code>protected <a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimChildRestore(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimChildRestore</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Trims a child relational expression, then adds back a dummy project to
restore the fields that were removed.</div>
</td>
</tr>
<tr class="altColor" id="i8">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.Aggregate,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/Aggregate.html" title="class in org.apache.calcite.rel.core">Aggregate</a>&nbsp;aggregate,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalAggregate.html" title="class in org.apache.calcite.rel.logical"><code>LogicalAggregate</code></a>.</div>
</td>
</tr>
<tr class="rowColor" id="i9">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.Calc,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/Calc.html" title="class in org.apache.calcite.rel.core">Calc</a>&nbsp;calc,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="altColor" id="i10">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.Exchange,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/Exchange.html" title="class in org.apache.calcite.rel.core">Exchange</a>&nbsp;exchange,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor" id="i11">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.Filter,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;filter,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical"><code>LogicalFilter</code></a>.</div>
</td>
</tr>
<tr class="altColor" id="i12">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.Join,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;join,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>LogicalJoin</code></a>.</div>
</td>
</tr>
<tr class="rowColor" id="i13">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.Project,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a>.</div>
</td>
</tr>
<tr class="altColor" id="i14">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.SetOp,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/SetOp.html" title="class in org.apache.calcite.rel.core">SetOp</a>&nbsp;setOp,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/core/SetOp.html" title="class in org.apache.calcite.rel.core"><code>SetOp</code></a> (Only UNION ALL is supported).</div>
</td>
</tr>
<tr class="rowColor" id="i15">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.SortExchange,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/SortExchange.html" title="class in org.apache.calcite.rel.core">SortExchange</a>&nbsp;sortExchange,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor" id="i16">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.Sort,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/Sort.html" title="class in org.apache.calcite.rel.core">Sort</a>&nbsp;sort,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/core/Sort.html" title="class in org.apache.calcite.rel.core"><code>Sort</code></a>.</div>
</td>
</tr>
<tr class="rowColor" id="i17">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.core.TableScan,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/core/TableScan.html" title="class in org.apache.calcite.rel.core">TableScan</a>&nbsp;tableAccessRel,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalTableScan.html" title="class in org.apache.calcite.rel.logical"><code>LogicalTableScan</code></a>.</div>
</td>
</tr>
<tr class="altColor" id="i18">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.logical.LogicalTableFunctionScan,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/logical/LogicalTableFunctionScan.html" title="class in org.apache.calcite.rel.logical">LogicalTableFunctionScan</a>&nbsp;tabFun,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalTableFunctionScan.html" title="class in org.apache.calcite.rel.logical"><code>LogicalTableFunctionScan</code></a>.</div>
</td>
</tr>
<tr class="rowColor" id="i19">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.logical.LogicalTableModify,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/logical/LogicalTableModify.html" title="class in org.apache.calcite.rel.logical">LogicalTableModify</a>&nbsp;modifier,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalTableModify.html" title="class in org.apache.calcite.rel.logical"><code>LogicalTableModify</code></a>.</div>
</td>
</tr>
<tr class="altColor" id="i20">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.logical.LogicalValues,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/logical/LogicalValues.html" title="class in org.apache.calcite.rel.logical">LogicalValues</a>&nbsp;values,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalValues.html" title="class in org.apache.calcite.rel.logical"><code>LogicalValues</code></a>.</div>
</td>
</tr>
<tr class="rowColor" id="i21">
<td class="colFirst"><code><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</code></th>
<td class="colLast">
<div class="block">Visit method, per <a href="../util/ReflectiveVisitor.html" title="interface in org.apache.calcite.util"><code>ReflectiveVisitor</code></a>.</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="inheritedList">
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a><code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li class="blockList">
<section class="constructorDetails"><a id="constructor.detail">
<!-- -->
</a>
<h2>Constructor Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="&lt;init&gt;(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.tools.RelBuilder)">RelFieldTrimmer</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="memberName">RelFieldTrimmer</span>&#8203;(<span class="arguments">@Nullable <a href="../sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</span></div>
<div class="block">Creates a RelFieldTrimmer.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>validator</code> - Validator</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="&lt;init&gt;(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.plan.RelOptCluster,org.apache.calcite.rel.core.RelFactories.ProjectFactory,org.apache.calcite.rel.core.RelFactories.FilterFactory,org.apache.calcite.rel.core.RelFactories.JoinFactory,org.apache.calcite.rel.core.RelFactories.SortFactory,org.apache.calcite.rel.core.RelFactories.AggregateFactory,org.apache.calcite.rel.core.RelFactories.SetOpFactory)">RelFieldTrimmer</a></h3>
<div class="memberSignature"><span class="annotations"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang" class="externalLink">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="memberName">RelFieldTrimmer</span>&#8203;(<span class="arguments">@Nullable <a href="../sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../plan/RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory,
<a href="../rel/core/RelFactories.FilterFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.FilterFactory</a>&nbsp;filterFactory,
<a href="../rel/core/RelFactories.JoinFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.JoinFactory</a>&nbsp;joinFactory,
<a href="../rel/core/RelFactories.SortFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.SortFactory</a>&nbsp;sortFactory,
<a href="../rel/core/RelFactories.AggregateFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.AggregateFactory</a>&nbsp;aggregateFactory,
<a href="../rel/core/RelFactories.SetOpFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.SetOpFactory</a>&nbsp;setOpFactory)</span></div>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li class="blockList">
<section class="methodDetails"><a id="method.detail">
<!-- -->
</a>
<h2>Method Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="trim(org.apache.calcite.rel.RelNode)">trim</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></span>&nbsp;<span class="memberName">trim</span>&#8203;(<span class="arguments"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;root)</span></div>
<div class="block">Trims unused fields from a relational expression.
<p>We presume that all fields of the relational expression are wanted by
its consumer, so only trim fields that are not used within the tree.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>root</code> - Root node of relational expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Trimmed relational expression</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimChild(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimChild</a></h3>
<div class="memberSignature"><span class="modifiers">protected</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimChild</span>&#8203;(<span class="arguments"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Trims the fields of an input relational expression.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dd><code>input</code> - Input relational expression, whose fields to trim</dd>
<dd><code>fieldsUsed</code> - Bitmap of fields needed by the consumer</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>New relational expression and its field mapping</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimChildRestore(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimChildRestore</a></h3>
<div class="memberSignature"><span class="modifiers">protected</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimChildRestore</span>&#8203;(<span class="arguments"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Trims a child relational expression, then adds back a dummy project to
restore the fields that were removed.
<p>Sounds pointless? It causes unused fields to be removed
further down the tree (towards the leaves), but it ensure that the
consuming relational expression continues to see the same fields.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dd><code>input</code> - Input relational expression, whose fields to trim</dd>
<dd><code>fieldsUsed</code> - Bitmap of fields needed by the consumer</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>New relational expression and its field mapping</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="dispatchTrimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">dispatchTrimFields</a></h3>
<div class="memberSignature"><span class="modifiers">protected final</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">dispatchTrimFields</span>&#8203;(<span class="arguments"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Invokes <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(org.apache.calcite.rel.RelNode, org.apache.calcite.util.ImmutableBitSet, java.util.Set&lt;org.apache.calcite.rel.type.RelDataTypeField&gt;)</code></a>, or the appropriate method for the type
of the rel parameter, using multi-method dispatch.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dd><code>fieldsUsed</code> - Bitmap of fields needed by the consumer</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>New relational expression and its field mapping</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="result(org.apache.calcite.rel.RelNode,org.apache.calcite.util.mapping.Mapping)">result</a></h3>
<div class="memberSignature"><span class="modifiers">protected</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">result</span>&#8203;(<span class="arguments"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r,
<a href="../util/mapping/Mapping.html" title="interface in org.apache.calcite.util.mapping">Mapping</a>&nbsp;mapping)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Visit method, per <a href="../util/ReflectiveVisitor.html" title="interface in org.apache.calcite.util"><code>ReflectiveVisitor</code></a>.
<p>This method is invoked reflectively, so there may not be any apparent
calls to it. The class (or derived classes) may contain overloads of
this method with more specific types for the <code>rel</code> parameter.
<p>Returns a pair: the relational expression created, and the mapping
between the original fields and the fields of the newly created
relational expression.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dd><code>fieldsUsed</code> - Fields needed by the consumer</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>relational expression and mapping</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.Calc,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/Calc.html" title="class in org.apache.calcite.rel.core">Calc</a>&nbsp;calc,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.Project,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="dummyProject(int,org.apache.calcite.rel.RelNode)">dummyProject</a></h3>
<div class="memberSignature"><span class="modifiers">protected</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">dummyProject</span>&#8203;(<span class="arguments">int&nbsp;fieldCount,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input)</span></div>
<div class="block">Creates a project with a dummy column, to protect the parts of the system
that cannot handle a relational expression with no columns.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>fieldCount</code> - Number of fields in the original relational expression</dd>
<dd><code>input</code> - Trimmed input</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Dummy project</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="dummyProject(int,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">dummyProject</a></h3>
<div class="memberSignature"><span class="modifiers">protected</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">dummyProject</span>&#8203;(<span class="arguments">int&nbsp;fieldCount,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input,
@Nullable <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;originalRelNode)</span></div>
<div class="block">Creates a project with a dummy column, to protect the parts of the system
that cannot handle a relational expression with no columns.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>fieldCount</code> - Number of fields in the original relational expression</dd>
<dd><code>input</code> - Trimmed input</dd>
<dd><code>originalRelNode</code> - Source RelNode for hint propagation (or null if no propagation needed)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Dummy project</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.Filter,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;filter,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical"><code>LogicalFilter</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.Sort,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/Sort.html" title="class in org.apache.calcite.rel.core">Sort</a>&nbsp;sort,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/core/Sort.html" title="class in org.apache.calcite.rel.core"><code>Sort</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.Exchange,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/Exchange.html" title="class in org.apache.calcite.rel.core">Exchange</a>&nbsp;exchange,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.SortExchange,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/SortExchange.html" title="class in org.apache.calcite.rel.core">SortExchange</a>&nbsp;sortExchange,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.Join,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;join,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>LogicalJoin</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.SetOp,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/SetOp.html" title="class in org.apache.calcite.rel.core">SetOp</a>&nbsp;setOp,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/core/SetOp.html" title="class in org.apache.calcite.rel.core"><code>SetOp</code></a> (Only UNION ALL is supported).</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.Aggregate,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/Aggregate.html" title="class in org.apache.calcite.rel.core">Aggregate</a>&nbsp;aggregate,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalAggregate.html" title="class in org.apache.calcite.rel.logical"><code>LogicalAggregate</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.logical.LogicalTableModify,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/logical/LogicalTableModify.html" title="class in org.apache.calcite.rel.logical">LogicalTableModify</a>&nbsp;modifier,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalTableModify.html" title="class in org.apache.calcite.rel.logical"><code>LogicalTableModify</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.logical.LogicalTableFunctionScan,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/logical/LogicalTableFunctionScan.html" title="class in org.apache.calcite.rel.logical">LogicalTableFunctionScan</a>&nbsp;tabFun,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalTableFunctionScan.html" title="class in org.apache.calcite.rel.logical"><code>LogicalTableFunctionScan</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.logical.LogicalValues,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/logical/LogicalValues.html" title="class in org.apache.calcite.rel.logical">LogicalValues</a>&nbsp;values,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalValues.html" title="class in org.apache.calcite.rel.logical"><code>LogicalValues</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="createMapping(org.apache.calcite.util.ImmutableBitSet,int)">createMapping</a></h3>
<div class="memberSignature"><span class="modifiers">protected</span>&nbsp;<span class="returnType"><a href="../util/mapping/Mapping.html" title="interface in org.apache.calcite.util.mapping">Mapping</a></span>&nbsp;<span class="memberName">createMapping</span>&#8203;(<span class="arguments"><a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
int&nbsp;fieldCount)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="trimFields(org.apache.calcite.rel.core.TableScan,org.apache.calcite.util.ImmutableBitSet,java.util.Set)">trimFields</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="RelFieldTrimmer.TrimResult.html" title="class in org.apache.calcite.sql2rel">RelFieldTrimmer.TrimResult</a></span>&nbsp;<span class="memberName">trimFields</span>&#8203;(<span class="arguments"><a href="../rel/core/TableScan.html" title="class in org.apache.calcite.rel.core">TableScan</a>&nbsp;tableAccessRel,
<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldsUsed,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util" class="externalLink">Set</a>&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extraFields)</span></div>
<div class="block">Variant of <a href="#trimFields(org.apache.calcite.rel.RelNode,org.apache.calcite.util.ImmutableBitSet,java.util.Set)"><code>trimFields(RelNode, ImmutableBitSet, Set)</code></a> for
<a href="../rel/logical/LogicalTableScan.html" title="class in org.apache.calcite.rel.logical"><code>LogicalTableScan</code></a>.</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
</div>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<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="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 class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<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>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &copy; 2012-2021 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>