<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>BeamMinusRel (Apache Beam 2.38.0-SNAPSHOT)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="BeamMinusRel (Apache Beam 2.38.0-SNAPSHOT)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamMatchRel.html" title="class in org.apache.beam.sdk.extensions.sql.impl.rel"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamPushDownIOSourceRel.html" title="class in org.apache.beam.sdk.extensions.sql.impl.rel"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../index.html?org/apache/beam/sdk/extensions/sql/impl/rel/BeamMinusRel.html" target="_top">Frames</a></li>
<li><a href="BeamMinusRel.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp">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>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.extensions.sql.impl.rel</div>
<h2 title="Class BeamMinusRel" class="title">Class BeamMinusRel</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.AbstractRelNode</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.Minus</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.extensions.sql.impl.rel.BeamMinusRel</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.lang.Cloneable, <a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html" title="interface in org.apache.beam.sdk.extensions.sql.impl.rel">BeamRelNode</a>, org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptNode, org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">BeamMinusRel</span>
extends org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.Minus
implements <a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html" title="interface in org.apache.beam.sdk.extensions.sql.impl.rel">BeamRelNode</a></pre>
<div class="block"><code>BeamRelNode</code> to replace a <code>Minus</code> node.

 <p>Corresponds to the SQL <code>EXCEPT</code> operator.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode">
<!--   -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode</h3>
<code>org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode.Context</code></li>
</ul>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp">
<!--   -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp</h3>
<code>all, inputs, kind</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.AbstractRelNode">
<!--   -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.AbstractRelNode</h3>
<code>digest, id, rowType, traitSet</code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamMinusRel.html#BeamMinusRel-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptCluster-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelTraitSet-java.util.List-boolean-">BeamMinusRel</a></span>(org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptCluster&nbsp;cluster,
            org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelTraitSet&nbsp;traits,
            java.util.List&lt;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode&gt;&nbsp;inputs,
            boolean&nbsp;all)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/planner/BeamCostModel.html" title="class in org.apache.beam.sdk.extensions.sql.impl.planner">BeamCostModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamMinusRel.html#beamComputeSelfCost-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptPlanner-org.apache.beam.sdk.extensions.sql.impl.planner.BeamRelMetadataQuery-">beamComputeSelfCost</a></span>(org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptPlanner&nbsp;planner,
                   <a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/planner/BeamRelMetadataQuery.html" title="class in org.apache.beam.sdk.extensions.sql.impl.planner">BeamRelMetadataQuery</a>&nbsp;mq)</code>
<div class="block">This method is called by <code>org.apache.beam.sdk.extensions.sql.impl.CalciteQueryPlanner.NonCumulativeCostImpl</code>.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../org/apache/beam/sdk/transforms/PTransform.html" title="class in org.apache.beam.sdk.transforms">PTransform</a>&lt;<a href="../../../../../../../../org/apache/beam/sdk/values/PCollectionList.html" title="class in org.apache.beam.sdk.values">PCollectionList</a>&lt;<a href="../../../../../../../../org/apache/beam/sdk/values/Row.html" title="class in org.apache.beam.sdk.values">Row</a>&gt;,<a href="../../../../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values">PCollection</a>&lt;<a href="../../../../../../../../org/apache/beam/sdk/values/Row.html" title="class in org.apache.beam.sdk.values">Row</a>&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamMinusRel.html#buildPTransform--">buildPTransform</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamMinusRel.html#copy-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelTraitSet-java.util.List-boolean-">copy</a></span>(org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelTraitSet&nbsp;traitSet,
    java.util.List&lt;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode&gt;&nbsp;inputs,
    boolean&nbsp;all)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/planner/NodeStats.html" title="class in org.apache.beam.sdk.extensions.sql.impl.planner">NodeStats</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamMinusRel.html#estimateNodeStats-org.apache.beam.sdk.extensions.sql.impl.planner.BeamRelMetadataQuery-">estimateNodeStats</a></span>(<a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/planner/BeamRelMetadataQuery.html" title="class in org.apache.beam.sdk.extensions.sql.impl.planner">BeamRelMetadataQuery</a>&nbsp;mq)</code>
<div class="block">This method is called by <code>org.apache.beam.sdk.extensions.sql.impl.planner.RelMdNodeStats</code>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.Minus">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.Minus</h3>
<code>estimateRowCount</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp</h3>
<code>copy, deriveRowType, explainTerms, getInputs, isHomogeneous, replaceInput</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.AbstractRelNode">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.AbstractRelNode</h3>
<code>accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, deepEquals, deepHashCode, equals, explain, getCluster, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getRelDigest, getRelTypeName, getRowType, getTable, getTraitSet, getVariablesSet, hashCode, isEnforcer, isValid, metadata, onRegister, recomputeDigest, register, sole, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="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 name="methods.inherited.from.class.org.apache.beam.sdk.extensions.sql.impl.rel.BeamRelNode">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.beam.sdk.extensions.sql.impl.rel.<a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html" title="interface in org.apache.beam.sdk.extensions.sql.impl.rel">BeamRelNode</a></h3>
<code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#buildPTransform-org.apache.beam.sdk.transforms.PTransform-">buildPTransform</a>, <a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#getPCollectionInputs--">getPCollectionInputs</a>, <a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#getPipelineOptions--">getPipelineOptions</a>, <a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#isBounded--">isBounded</a>, <a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#withErrorsTransformer-org.apache.beam.sdk.transforms.PTransform-">withErrorsTransformer</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode</h3>
<code>accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, copy, deepEquals, deepHashCode, estimateRowCount, explain, explain, fieldIsNullable, getConvention, getCorrelVariable, getDigest, getExpectedInputRowType, getInput, getInputs, getRelDigest, getRelTypeName, getRowType, getTable, getVariablesSet, isEnforcer, isValid, metadata, onRegister, recomputeDigest, register, replaceInput</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptNode">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptNode</h3>
<code>getCluster, getDescription, getId, getTraitSet</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="BeamMinusRel-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptCluster-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelTraitSet-java.util.List-boolean-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BeamMinusRel</h4>
<pre>public&nbsp;BeamMinusRel(org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptCluster&nbsp;cluster,
                    org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelTraitSet&nbsp;traits,
                    java.util.List&lt;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode&gt;&nbsp;inputs,
                    boolean&nbsp;all)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="beamComputeSelfCost-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptPlanner-org.apache.beam.sdk.extensions.sql.impl.planner.BeamRelMetadataQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beamComputeSelfCost</h4>
<pre>public&nbsp;<a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/planner/BeamCostModel.html" title="class in org.apache.beam.sdk.extensions.sql.impl.planner">BeamCostModel</a>&nbsp;beamComputeSelfCost(org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptPlanner&nbsp;planner,
                                         <a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/planner/BeamRelMetadataQuery.html" title="class in org.apache.beam.sdk.extensions.sql.impl.planner">BeamRelMetadataQuery</a>&nbsp;mq)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#beamComputeSelfCost-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptPlanner-org.apache.beam.sdk.extensions.sql.impl.planner.BeamRelMetadataQuery-">BeamRelNode</a></code></span></div>
<div class="block">This method is called by <code>org.apache.beam.sdk.extensions.sql.impl.CalciteQueryPlanner.NonCumulativeCostImpl</code>. This is
 currently only used in SQLTransform Path (and not JDBC path). This is needed when Calcite Query
 Planner wants to get the cost of a plan. Instead of calling this directly for a node, if we
 needed that it should be obtained by calling mq.getNonCumulativeCost. This way RelMetadataQuery
 will call this method instead of ComputeSelfCost if the handler is set correctly (see <code>org.apache.beam.sdk.extensions.sql.impl.CalciteQueryPlanner#convertToBeamRel(String)</code>)</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#beamComputeSelfCost-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelOptPlanner-org.apache.beam.sdk.extensions.sql.impl.planner.BeamRelMetadataQuery-">beamComputeSelfCost</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html" title="interface in org.apache.beam.sdk.extensions.sql.impl.rel">BeamRelNode</a></code></dd>
</dl>
</li>
</ul>
<a name="copy-org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelTraitSet-java.util.List-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>copy</h4>
<pre>public&nbsp;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp&nbsp;copy(org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.plan.RelTraitSet&nbsp;traitSet,
                                                                                     java.util.List&lt;org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode&gt;&nbsp;inputs,
                                                                                     boolean&nbsp;all)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>copy</code>&nbsp;in class&nbsp;<code>org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp</code></dd>
</dl>
</li>
</ul>
<a name="buildPTransform--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildPTransform</h4>
<pre>public&nbsp;<a href="../../../../../../../../org/apache/beam/sdk/transforms/PTransform.html" title="class in org.apache.beam.sdk.transforms">PTransform</a>&lt;<a href="../../../../../../../../org/apache/beam/sdk/values/PCollectionList.html" title="class in org.apache.beam.sdk.values">PCollectionList</a>&lt;<a href="../../../../../../../../org/apache/beam/sdk/values/Row.html" title="class in org.apache.beam.sdk.values">Row</a>&gt;,<a href="../../../../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values">PCollection</a>&lt;<a href="../../../../../../../../org/apache/beam/sdk/values/Row.html" title="class in org.apache.beam.sdk.values">Row</a>&gt;&gt;&nbsp;buildPTransform()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#buildPTransform--">buildPTransform</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html" title="interface in org.apache.beam.sdk.extensions.sql.impl.rel">BeamRelNode</a></code></dd>
</dl>
</li>
</ul>
<a name="estimateNodeStats-org.apache.beam.sdk.extensions.sql.impl.planner.BeamRelMetadataQuery-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>estimateNodeStats</h4>
<pre>public&nbsp;<a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/planner/NodeStats.html" title="class in org.apache.beam.sdk.extensions.sql.impl.planner">NodeStats</a>&nbsp;estimateNodeStats(<a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/planner/BeamRelMetadataQuery.html" title="class in org.apache.beam.sdk.extensions.sql.impl.planner">BeamRelMetadataQuery</a>&nbsp;mq)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#estimateNodeStats-org.apache.beam.sdk.extensions.sql.impl.planner.BeamRelMetadataQuery-">BeamRelNode</a></code></span></div>
<div class="block">This method is called by <code>org.apache.beam.sdk.extensions.sql.impl.planner.RelMdNodeStats</code>. This is currently only used in
 SQLTransform Path (and not JDBC path). When a RelNode wants to calculate its BeamCost or
 estimate its NodeStats, it may need NodeStat of its inputs. However, it should not call this
 directly (because maybe its inputs are not physical yet). It should call <code>org.apache.beam.sdk.extensions.sql.impl.rel.BeamSqlRelUtils#getNodeStats(
 org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.RelNode,
 org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.metadata.RelMetadataQuery)</code>
 instead.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html#estimateNodeStats-org.apache.beam.sdk.extensions.sql.impl.planner.BeamRelMetadataQuery-">estimateNodeStats</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamRelNode.html" title="interface in org.apache.beam.sdk.extensions.sql.impl.rel">BeamRelNode</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamMatchRel.html" title="class in org.apache.beam.sdk.extensions.sql.impl.rel"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/rel/BeamPushDownIOSourceRel.html" title="class in org.apache.beam.sdk.extensions.sql.impl.rel"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../index.html?org/apache/beam/sdk/extensions/sql/impl/rel/BeamMinusRel.html" target="_top">Frames</a></li>
<li><a href="BeamMinusRel.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.rel.core.SetOp">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>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
