blob: 82d336e47bd6f2bd2e74490070346a6bfc251997 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>EnumerableMergeJoin (Apache Calcite API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.adapter.enumerable, class: EnumerableMergeJoin">
<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.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><b>Apache Calcite</b></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">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#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<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="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.adapter.enumerable</a></div>
<h1 title="Class EnumerableMergeJoin" class="title">Class EnumerableMergeJoin</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../../rel/AbstractRelNode.html" title="class in org.apache.calcite.rel">org.apache.calcite.rel.AbstractRelNode</a>
<div class="inheritance"><a href="../../rel/BiRel.html" title="class in org.apache.calcite.rel">org.apache.calcite.rel.BiRel</a>
<div class="inheritance"><a href="../../rel/core/Join.html" title="class in org.apache.calcite.rel.core">org.apache.calcite.rel.core.Join</a>
<div class="inheritance">org.apache.calcite.adapter.enumerable.EnumerableMergeJoin</div>
</div>
</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Cloneable.html" title="class or interface in java.lang" class="external-link">Cloneable</a></code>, <code><a href="EnumerableRel.html" title="interface in org.apache.calcite.adapter.enumerable">EnumerableRel</a></code>, <code><a href="../../plan/RelOptNode.html" title="interface in org.apache.calcite.plan">RelOptNode</a></code>, <code><a href="../../rel/hint/Hintable.html" title="interface in org.apache.calcite.rel.hint">Hintable</a></code>, <code><a href="../../rel/PhysicalNode.html" title="interface in org.apache.calcite.rel">PhysicalNode</a></code>, <code><a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">EnumerableMergeJoin</span>
<span class="extends-implements">extends <a href="../../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>
implements <a href="EnumerableRel.html" title="interface in org.apache.calcite.adapter.enumerable">EnumerableRel</a></span></div>
<div class="block">Implementation of <a href="../../rel/core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a> in
<a href="EnumerableConvention.html" title="enum in org.apache.calcite.adapter.enumerable"><code>enumerable calling convention</code></a> using
a merge algorithm.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="inherited-list">
<h2 id="nested-classes-inherited-from-class-org.apache.calcite.adapter.enumerable.EnumerableRel">Nested classes/interfaces inherited from interface&nbsp;org.apache.calcite.adapter.enumerable.<a href="EnumerableRel.html" title="interface in org.apache.calcite.adapter.enumerable">EnumerableRel</a></h2>
<code><a href="EnumerableRel.Prefer.html" title="enum in org.apache.calcite.adapter.enumerable">EnumerableRel.Prefer</a>, <a href="EnumerableRel.Result.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableRel.Result</a></code></div>
<div class="inherited-list">
<h2 id="nested-classes-inherited-from-class-org.apache.calcite.rel.RelNode">Nested classes/interfaces inherited from interface&nbsp;org.apache.calcite.rel.<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></h2>
<code><a href="../../rel/RelNode.Context.html" title="interface in org.apache.calcite.rel">RelNode.Context</a></code></div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-org.apache.calcite.rel.core.Join">Fields inherited from class&nbsp;org.apache.calcite.rel.core.<a href="../../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a></h3>
<code><a href="../../rel/core/Join.html#condition">condition</a>, <a href="../../rel/core/Join.html#hints">hints</a>, <a href="../../rel/core/Join.html#joinInfo">joinInfo</a>, <a href="../../rel/core/Join.html#joinType">joinType</a>, <a href="../../rel/core/Join.html#variablesSet">variablesSet</a></code></div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-org.apache.calcite.rel.BiRel">Fields inherited from class&nbsp;org.apache.calcite.rel.<a href="../../rel/BiRel.html" title="class in org.apache.calcite.rel">BiRel</a></h3>
<code><a href="../../rel/BiRel.html#left">left</a>, <a href="../../rel/BiRel.html#right">right</a></code></div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-org.apache.calcite.rel.AbstractRelNode">Fields inherited from class&nbsp;org.apache.calcite.rel.<a href="../../rel/AbstractRelNode.html" title="class in org.apache.calcite.rel">AbstractRelNode</a></h3>
<code><a href="../../rel/AbstractRelNode.html#digest">digest</a>, <a href="../../rel/AbstractRelNode.html#id">id</a>, <a href="../../rel/AbstractRelNode.html#rowType">rowType</a>, <a href="../../rel/AbstractRelNode.html#traitSet">traitSet</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected </code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.calcite.plan.RelOptCluster,org.apache.calcite.plan.RelTraitSet,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.Set,org.apache.calcite.rel.core.JoinRelType)" class="member-name-link">EnumerableMergeJoin</a><wbr>(<a href="../../plan/RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster,
<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traits,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&gt;&nbsp;variablesSet,
<a href="../../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="../../plan/RelOptCost.html" title="interface in org.apache.calcite.plan">RelOptCost</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#computeSelfCost(org.apache.calcite.plan.RelOptPlanner,org.apache.calcite.rel.metadata.RelMetadataQuery)" class="member-name-link">computeSelfCost</a><wbr>(<a href="../../plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner,
<a href="../../rel/metadata/RelMetadataQuery.html" title="class in org.apache.calcite.rel.metadata">RelMetadataQuery</a>&nbsp;mq)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the cost of this plan (not including children).</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="EnumerableMergeJoin.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableMergeJoin</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#copy(org.apache.calcite.plan.RelTraitSet,org.apache.calcite.rex.RexNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.JoinRelType,boolean)" class="member-name-link">copy</a><wbr>(<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traitSet,
<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType,
boolean&nbsp;semiJoinDone)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a copy of this join, overriding condition, system fields and
inputs.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="EnumerableMergeJoin.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableMergeJoin</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#create(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,org.apache.calcite.util.ImmutableIntList,org.apache.calcite.util.ImmutableIntList,org.apache.calcite.rel.core.JoinRelType)" class="member-name-link">create</a><wbr>(<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
<a href="../../util/ImmutableIntList.html" title="class in org.apache.calcite.util">ImmutableIntList</a>&nbsp;leftKeys,
<a href="../../util/ImmutableIntList.html" title="class in org.apache.calcite.util">ImmutableIntList</a>&nbsp;rightKeys,
<a href="../../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="../../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&gt;&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deriveTraits(org.apache.calcite.plan.RelTraitSet,int)" class="member-name-link">deriveTraits</a><wbr>(<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;childTraits,
int&nbsp;childId)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Derive traitset from child node, returns a pair of traits after
traits derivation.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../plan/DeriveMode.html" title="enum in org.apache.calcite.plan">DeriveMode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDeriveMode()" class="member-name-link">getDeriveMode</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns mode of derivation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="EnumerableRel.Result.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableRel.Result</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#implement(org.apache.calcite.adapter.enumerable.EnumerableRelImplementor,org.apache.calcite.adapter.enumerable.EnumerableRel.Prefer)" class="member-name-link">implement</a><wbr>(<a href="EnumerableRelImplementor.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableRelImplementor</a>&nbsp;implementor,
<a href="EnumerableRel.Prefer.html" title="enum in org.apache.calcite.adapter.enumerable">EnumerableRel.Prefer</a>&nbsp;pref)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a plan for this expression according to a calling convention.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isMergeJoinSupported(org.apache.calcite.rel.core.JoinRelType)" class="member-name-link">isMergeJoinSupported</a><wbr>(<a href="../../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="../../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&gt;&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#passThroughTraits(org.apache.calcite.plan.RelTraitSet)" class="member-name-link">passThroughTraits</a><wbr>(<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;required)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Pass collations through can have three cases:
1.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.calcite.rel.core.Join">Methods inherited from class&nbsp;org.apache.calcite.rel.core.<a href="../../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a></h3>
<code><a href="../../rel/core/Join.html#accept(org.apache.calcite.rex.RexShuttle)">accept</a>, <a href="../../rel/core/Join.html#analyzeCondition()">analyzeCondition</a>, <a href="../../rel/core/Join.html#copy(org.apache.calcite.plan.RelTraitSet,java.util.List)">copy</a>, <a href="../../rel/core/Join.html#createJoinType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,java.util.List,java.util.List)">createJoinType</a>, <a href="../../rel/core/Join.html#deepEquals0(java.lang.Object)">deepEquals0</a>, <a href="../../rel/core/Join.html#deepHashCode0()">deepHashCode0</a>, <a href="../../rel/core/Join.html#deriveJoinRowType(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.core.JoinRelType,org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List,java.util.List)">deriveJoinRowType</a>, <a href="../../rel/core/Join.html#deriveRowType()">deriveRowType</a>, <a href="../../rel/core/Join.html#estimateJoinedRows(org.apache.calcite.rel.core.Join,org.apache.calcite.rex.RexNode)">estimateJoinedRows</a>, <a href="../../rel/core/Join.html#estimateRowCount(org.apache.calcite.rel.metadata.RelMetadataQuery)">estimateRowCount</a>, <a href="../../rel/core/Join.html#explainTerms(org.apache.calcite.rel.RelWriter)">explainTerms</a>, <a href="../../rel/core/Join.html#getCondition()">getCondition</a>, <a href="../../rel/core/Join.html#getHints()">getHints</a>, <a href="../../rel/core/Join.html#getJoinType()">getJoinType</a>, <a href="../../rel/core/Join.html#getSystemFieldList()">getSystemFieldList</a>, <a href="../../rel/core/Join.html#getVariablesSet()">getVariablesSet</a>, <a href="../../rel/core/Join.html#isSemiJoin()">isSemiJoin</a>, <a href="../../rel/core/Join.html#isSemiJoinDone()">isSemiJoinDone</a>, <a href="../../rel/core/Join.html#isValid(org.apache.calcite.util.Litmus,org.apache.calcite.rel.RelNode.Context)">isValid</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.calcite.rel.BiRel">Methods inherited from class&nbsp;org.apache.calcite.rel.<a href="../../rel/BiRel.html" title="class in org.apache.calcite.rel">BiRel</a></h3>
<code><a href="../../rel/BiRel.html#childrenAccept(org.apache.calcite.rel.RelVisitor)">childrenAccept</a>, <a href="../../rel/BiRel.html#getInputs()">getInputs</a>, <a href="../../rel/BiRel.html#getLeft()">getLeft</a>, <a href="../../rel/BiRel.html#getRight()">getRight</a>, <a href="../../rel/BiRel.html#replaceInput(int,org.apache.calcite.rel.RelNode)">replaceInput</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.calcite.rel.AbstractRelNode">Methods inherited from class&nbsp;org.apache.calcite.rel.<a href="../../rel/AbstractRelNode.html" title="class in org.apache.calcite.rel">AbstractRelNode</a></h3>
<code><a href="../../rel/AbstractRelNode.html#accept(org.apache.calcite.rel.RelShuttle)">accept</a>, <a href="../../rel/AbstractRelNode.html#collectVariablesSet(java.util.Set)">collectVariablesSet</a>, <a href="../../rel/AbstractRelNode.html#collectVariablesUsed(java.util.Set)">collectVariablesUsed</a>, <a href="../../rel/AbstractRelNode.html#deepEquals(java.lang.Object)">deepEquals</a>, <a href="../../rel/AbstractRelNode.html#deepHashCode()">deepHashCode</a>, <a href="../../rel/AbstractRelNode.html#equals(java.lang.Object)">equals</a>, <a href="../../rel/AbstractRelNode.html#explain(org.apache.calcite.rel.RelWriter)">explain</a>, <a href="../../rel/AbstractRelNode.html#getCluster()">getCluster</a>, <a href="../../rel/AbstractRelNode.html#getConvention()">getConvention</a>, <a href="../../rel/AbstractRelNode.html#getCorrelVariable()">getCorrelVariable</a>, <a href="../../rel/AbstractRelNode.html#getDescription()">getDescription</a>, <a href="../../rel/AbstractRelNode.html#getDigest()">getDigest</a>, <a href="../../rel/AbstractRelNode.html#getExpectedInputRowType(int)">getExpectedInputRowType</a>, <a href="../../rel/AbstractRelNode.html#getId()">getId</a>, <a href="../../rel/AbstractRelNode.html#getInput(int)">getInput</a>, <a href="../../rel/AbstractRelNode.html#getRelDigest()">getRelDigest</a>, <a href="../../rel/AbstractRelNode.html#getRelTypeName()">getRelTypeName</a>, <a href="../../rel/AbstractRelNode.html#getRowType()">getRowType</a>, <a href="../../rel/AbstractRelNode.html#getTable()">getTable</a>, <a href="../../rel/AbstractRelNode.html#getTraitSet()">getTraitSet</a>, <a href="../../rel/AbstractRelNode.html#hashCode()">hashCode</a>, <a href="../../rel/AbstractRelNode.html#isEnforcer()">isEnforcer</a>, <a href="../../rel/AbstractRelNode.html#metadata(java.lang.Class,org.apache.calcite.rel.metadata.RelMetadataQuery)">metadata</a>, <a href="../../rel/AbstractRelNode.html#onRegister(org.apache.calcite.plan.RelOptPlanner)">onRegister</a>, <a href="../../rel/AbstractRelNode.html#recomputeDigest()">recomputeDigest</a>, <a href="../../rel/AbstractRelNode.html#register(org.apache.calcite.plan.RelOptPlanner)">register</a>, <a href="../../rel/AbstractRelNode.html#sole(java.util.List)">sole</a>, <a href="../../rel/AbstractRelNode.html#toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.calcite.rel.hint.Hintable">Methods inherited from interface&nbsp;org.apache.calcite.rel.hint.<a href="../../rel/hint/Hintable.html" title="interface in org.apache.calcite.rel.hint">Hintable</a></h3>
<code><a href="../../rel/hint/Hintable.html#attachHints(java.util.List)">attachHints</a>, <a href="../../rel/hint/Hintable.html#withHints(java.util.List)">withHints</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.calcite.rel.PhysicalNode">Methods inherited from interface&nbsp;org.apache.calcite.rel.<a href="../../rel/PhysicalNode.html" title="interface in org.apache.calcite.rel">PhysicalNode</a></h3>
<code><a href="../../rel/PhysicalNode.html#derive(java.util.List)">derive</a>, <a href="../../rel/PhysicalNode.html#derive(org.apache.calcite.plan.RelTraitSet,int)">derive</a>, <a href="../../rel/PhysicalNode.html#passThrough(org.apache.calcite.plan.RelTraitSet)">passThrough</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.calcite.rel.RelNode">Methods inherited from interface&nbsp;org.apache.calcite.rel.<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></h3>
<code><a href="../../rel/RelNode.html#accept(org.apache.calcite.rel.RelShuttle)">accept</a>, <a href="../../rel/RelNode.html#accept(org.apache.calcite.rex.RexShuttle)">accept</a>, <a href="../../rel/RelNode.html#childrenAccept(org.apache.calcite.rel.RelVisitor)">childrenAccept</a>, <a href="../../rel/RelNode.html#collectVariablesSet(java.util.Set)">collectVariablesSet</a>, <a href="../../rel/RelNode.html#collectVariablesUsed(java.util.Set)">collectVariablesUsed</a>, <a href="../../rel/RelNode.html#copy(org.apache.calcite.plan.RelTraitSet,java.util.List)">copy</a>, <a href="../../rel/RelNode.html#deepEquals(java.lang.Object)">deepEquals</a>, <a href="../../rel/RelNode.html#deepHashCode()">deepHashCode</a>, <a href="../../rel/RelNode.html#estimateRowCount(org.apache.calcite.rel.metadata.RelMetadataQuery)">estimateRowCount</a>, <a href="../../rel/RelNode.html#explain()">explain</a>, <a href="../../rel/RelNode.html#explain(org.apache.calcite.rel.RelWriter)">explain</a>, <a href="../../rel/RelNode.html#fieldIsNullable(int)">fieldIsNullable</a>, <a href="../../rel/RelNode.html#getConvention()">getConvention</a>, <a href="../../rel/RelNode.html#getCorrelVariable()">getCorrelVariable</a>, <a href="../../rel/RelNode.html#getDigest()">getDigest</a>, <a href="../../rel/RelNode.html#getExpectedInputRowType(int)">getExpectedInputRowType</a>, <a href="../../rel/RelNode.html#getInput(int)">getInput</a>, <a href="../../rel/RelNode.html#getInputs()">getInputs</a>, <a href="../../rel/RelNode.html#getRelDigest()">getRelDigest</a>, <a href="../../rel/RelNode.html#getRelTypeName()">getRelTypeName</a>, <a href="../../rel/RelNode.html#getRowType()">getRowType</a>, <a href="../../rel/RelNode.html#getTable()">getTable</a>, <a href="../../rel/RelNode.html#getVariablesSet()">getVariablesSet</a>, <a href="../../rel/RelNode.html#isEnforcer()">isEnforcer</a>, <a href="../../rel/RelNode.html#isValid(org.apache.calcite.util.Litmus,org.apache.calcite.rel.RelNode.Context)">isValid</a>, <a href="../../rel/RelNode.html#metadata(java.lang.Class,org.apache.calcite.rel.metadata.RelMetadataQuery)">metadata</a>, <a href="../../rel/RelNode.html#onRegister(org.apache.calcite.plan.RelOptPlanner)">onRegister</a>, <a href="../../rel/RelNode.html#recomputeDigest()">recomputeDigest</a>, <a href="../../rel/RelNode.html#register(org.apache.calcite.plan.RelOptPlanner)">register</a>, <a href="../../rel/RelNode.html#replaceInput(int,org.apache.calcite.rel.RelNode)">replaceInput</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.calcite.plan.RelOptNode">Methods inherited from interface&nbsp;org.apache.calcite.plan.<a href="../../plan/RelOptNode.html" title="interface in org.apache.calcite.plan">RelOptNode</a></h3>
<code><a href="../../plan/RelOptNode.html#getCluster()">getCluster</a>, <a href="../../plan/RelOptNode.html#getDescription()">getDescription</a>, <a href="../../plan/RelOptNode.html#getId()">getId</a>, <a href="../../plan/RelOptNode.html#getTraitSet()">getTraitSet</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.apache.calcite.plan.RelOptCluster,org.apache.calcite.plan.RelTraitSet,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.Set,org.apache.calcite.rel.core.JoinRelType)">
<h3>EnumerableMergeJoin</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">EnumerableMergeJoin</span><wbr><span class="parameters">(<a href="../../plan/RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster,
<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traits,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&gt;&nbsp;variablesSet,
<a href="../../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="isMergeJoinSupported(org.apache.calcite.rel.core.JoinRelType)">
<h3>isMergeJoinSupported</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isMergeJoinSupported</span><wbr><span class="parameters">(<a href="../../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType)</span></div>
</section>
</li>
<li>
<section class="detail" id="passThroughTraits(org.apache.calcite.plan.RelTraitSet)">
<h3>passThroughTraits</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="../../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&gt;&gt;</span>&nbsp;<span class="element-name">passThroughTraits</span><wbr><span class="parameters">(<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;required)</span></div>
<div class="block">Pass collations through can have three cases:
1. If sort keys are equal to either left join keys, or right join keys,
collations can be pushed to both join sides with correct mappings.
For example, for the query
select * from foo join bar on foo.a=bar.b order by foo.a desc
after traits pass through it will be equivalent to
select * from
(select * from foo order by foo.a desc)
join
(select * from bar order by bar.b desc)
2. If sort keys are sub-set of either left join keys, or right join keys,
collations have to be extended to cover all joins keys before passing through,
because merge join requires all join keys are sorted.
For example, for the query
select * from foo join bar
on foo.a=bar.b and foo.c=bar.d
order by foo.a desc
after traits pass through it will be equivalent to
select * from
(select * from foo order by foo.a desc, foo.c)
join
(select * from bar order by bar.b desc, bar.d)
3. If sort keys are super-set of either left join keys, or right join keys,
but not both, collations can be completely passed to the join key whose join
keys match the prefix of collations. Meanwhile, partial mapped collations can
be passed to another join side to make sure join keys are sorted.
For example, for the query
select * from foo join bar
on foo.a=bar.b and foo.c=bar.d
order by foo.a desc, foo.c desc, foo.e
after traits pass through it will be equivalent to
select * from
(select * from foo order by foo.a desc, foo.c desc, foo.e)
join
(select * from bar order by bar.b desc, bar.d desc)</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="EnumerableRel.html#passThroughTraits(org.apache.calcite.plan.RelTraitSet)">passThroughTraits</a></code>&nbsp;in interface&nbsp;<code><a href="EnumerableRel.html" title="interface in org.apache.calcite.adapter.enumerable">EnumerableRel</a></code></dd>
<dt>Specified by:</dt>
<dd><code><a href="../../rel/PhysicalNode.html#passThroughTraits(org.apache.calcite.plan.RelTraitSet)">passThroughTraits</a></code>&nbsp;in interface&nbsp;<code><a href="../../rel/PhysicalNode.html" title="interface in org.apache.calcite.rel">PhysicalNode</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="deriveTraits(org.apache.calcite.plan.RelTraitSet,int)">
<h3>deriveTraits</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="../../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&gt;&gt;</span>&nbsp;<span class="element-name">deriveTraits</span><wbr><span class="parameters">(<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;childTraits,
int&nbsp;childId)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../../rel/PhysicalNode.html#deriveTraits(org.apache.calcite.plan.RelTraitSet,int)">PhysicalNode</a></code></span></div>
<div class="block">Derive traitset from child node, returns a pair of traits after
traits derivation.
<p>Pair.left: the new traitset
<p>Pair.right: the list of required traitsets for child nodes</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="EnumerableRel.html#deriveTraits(org.apache.calcite.plan.RelTraitSet,int)">deriveTraits</a></code>&nbsp;in interface&nbsp;<code><a href="EnumerableRel.html" title="interface in org.apache.calcite.adapter.enumerable">EnumerableRel</a></code></dd>
<dt>Specified by:</dt>
<dd><code><a href="../../rel/PhysicalNode.html#deriveTraits(org.apache.calcite.plan.RelTraitSet,int)">deriveTraits</a></code>&nbsp;in interface&nbsp;<code><a href="../../rel/PhysicalNode.html" title="interface in org.apache.calcite.rel">PhysicalNode</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getDeriveMode()">
<h3>getDeriveMode</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../plan/DeriveMode.html" title="enum in org.apache.calcite.plan">DeriveMode</a></span>&nbsp;<span class="element-name">getDeriveMode</span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../../rel/PhysicalNode.html#getDeriveMode()">PhysicalNode</a></code></span></div>
<div class="block">Returns mode of derivation.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="EnumerableRel.html#getDeriveMode()">getDeriveMode</a></code>&nbsp;in interface&nbsp;<code><a href="EnumerableRel.html" title="interface in org.apache.calcite.adapter.enumerable">EnumerableRel</a></code></dd>
<dt>Specified by:</dt>
<dd><code><a href="../../rel/PhysicalNode.html#getDeriveMode()">getDeriveMode</a></code>&nbsp;in interface&nbsp;<code><a href="../../rel/PhysicalNode.html" title="interface in org.apache.calcite.rel">PhysicalNode</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="create(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,org.apache.calcite.util.ImmutableIntList,org.apache.calcite.util.ImmutableIntList,org.apache.calcite.rel.core.JoinRelType)">
<h3>create</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="EnumerableMergeJoin.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableMergeJoin</a></span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
<a href="../../util/ImmutableIntList.html" title="class in org.apache.calcite.util">ImmutableIntList</a>&nbsp;leftKeys,
<a href="../../util/ImmutableIntList.html" title="class in org.apache.calcite.util">ImmutableIntList</a>&nbsp;rightKeys,
<a href="../../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType)</span></div>
</section>
</li>
<li>
<section class="detail" id="copy(org.apache.calcite.plan.RelTraitSet,org.apache.calcite.rex.RexNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.JoinRelType,boolean)">
<h3>copy</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="EnumerableMergeJoin.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableMergeJoin</a></span>&nbsp;<span class="element-name">copy</span><wbr><span class="parameters">(<a href="../../plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traitSet,
<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType,
boolean&nbsp;semiJoinDone)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="../../rel/core/Join.html#copy(org.apache.calcite.plan.RelTraitSet,org.apache.calcite.rex.RexNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.JoinRelType,boolean)">Join</a></code></span></div>
<div class="block">Creates a copy of this join, overriding condition, system fields and
inputs.
<p>General contract as <a href="../../rel/RelNode.html#copy(org.apache.calcite.plan.RelTraitSet,java.util.List)"><code>RelNode.copy(org.apache.calcite.plan.RelTraitSet, java.util.List&lt;org.apache.calcite.rel.RelNode&gt;)</code></a>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../rel/core/Join.html#copy(org.apache.calcite.plan.RelTraitSet,org.apache.calcite.rex.RexNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.JoinRelType,boolean)">copy</a></code>&nbsp;in class&nbsp;<code><a href="../../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a></code></dd>
<dt>Parameters:</dt>
<dd><code>traitSet</code> - Traits</dd>
<dd><code>condition</code> - Condition</dd>
<dd><code>left</code> - Left input</dd>
<dd><code>right</code> - Right input</dd>
<dd><code>joinType</code> - Join type</dd>
<dd><code>semiJoinDone</code> - Whether this join has been translated to a
semi-join</dd>
<dt>Returns:</dt>
<dd>Copy of this join</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="computeSelfCost(org.apache.calcite.plan.RelOptPlanner,org.apache.calcite.rel.metadata.RelMetadataQuery)">
<h3>computeSelfCost</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="../../plan/RelOptCost.html" title="interface in org.apache.calcite.plan">RelOptCost</a></span>&nbsp;<span class="element-name">computeSelfCost</span><wbr><span class="parameters">(<a href="../../plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner,
<a href="../../rel/metadata/RelMetadataQuery.html" title="class in org.apache.calcite.rel.metadata">RelMetadataQuery</a>&nbsp;mq)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="../../rel/RelNode.html#computeSelfCost(org.apache.calcite.plan.RelOptPlanner,org.apache.calcite.rel.metadata.RelMetadataQuery)">RelNode</a></code></span></div>
<div class="block">Returns the cost of this plan (not including children). The base
implementation throws an error; derived classes should override.
<p>NOTE jvs 29-Mar-2006: Don't call this method directly. Instead, use
<a href="../../rel/metadata/RelMetadataQuery.html#getNonCumulativeCost(org.apache.calcite.rel.RelNode)"><code>RelMetadataQuery.getNonCumulativeCost(org.apache.calcite.rel.RelNode)</code></a>, which gives plugins a
chance to override the rel's default ideas about cost.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../rel/RelNode.html#computeSelfCost(org.apache.calcite.plan.RelOptPlanner,org.apache.calcite.rel.metadata.RelMetadataQuery)">computeSelfCost</a></code>&nbsp;in interface&nbsp;<code><a href="../../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></dd>
<dt>Overrides:</dt>
<dd><code><a href="../../rel/core/Join.html#computeSelfCost(org.apache.calcite.plan.RelOptPlanner,org.apache.calcite.rel.metadata.RelMetadataQuery)">computeSelfCost</a></code>&nbsp;in class&nbsp;<code><a href="../../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a></code></dd>
<dt>Parameters:</dt>
<dd><code>planner</code> - Planner for cost calculation</dd>
<dd><code>mq</code> - Metadata query</dd>
<dt>Returns:</dt>
<dd>Cost of this plan (not including children)</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="implement(org.apache.calcite.adapter.enumerable.EnumerableRelImplementor,org.apache.calcite.adapter.enumerable.EnumerableRel.Prefer)">
<h3>implement</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="EnumerableRel.Result.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableRel.Result</a></span>&nbsp;<span class="element-name">implement</span><wbr><span class="parameters">(<a href="EnumerableRelImplementor.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableRelImplementor</a>&nbsp;implementor,
<a href="EnumerableRel.Prefer.html" title="enum in org.apache.calcite.adapter.enumerable">EnumerableRel.Prefer</a>&nbsp;pref)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="EnumerableRel.html#implement(org.apache.calcite.adapter.enumerable.EnumerableRelImplementor,org.apache.calcite.adapter.enumerable.EnumerableRel.Prefer)">EnumerableRel</a></code></span></div>
<div class="block">Creates a plan for this expression according to a calling convention.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="EnumerableRel.html#implement(org.apache.calcite.adapter.enumerable.EnumerableRelImplementor,org.apache.calcite.adapter.enumerable.EnumerableRel.Prefer)">implement</a></code>&nbsp;in interface&nbsp;<code><a href="EnumerableRel.html" title="interface in org.apache.calcite.adapter.enumerable">EnumerableRel</a></code></dd>
<dt>Parameters:</dt>
<dd><code>implementor</code> - Implementor</dd>
<dd><code>pref</code> - Preferred representation for rows in result expression</dd>
<dt>Returns:</dt>
<dd>Plan for this expression according to a calling convention</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &copy; 2012-2023 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>