blob: 42d592116dc83362a6f4c7c6a24297a21467cf6b [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RelOptListener (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.plan, interface: RelOptListener">
<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":6,"i1":6,"i2":6,"i3":6,"i4":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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>Constr&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>Constr&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.plan</a></div>
<h1 title="Interface RelOptListener" class="title">Interface RelOptListener</h1>
</div>
<div class="contentContainer">
<section class="description">
<dl>
<dt>All Superinterfaces:</dt>
<dd><code><a href="https://docs.oracle.com/javase/9/docs/api/java/util/EventListener.html?is-external=true" title="class or interface in java.util" class="externalLink">EventListener</a></code></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="MulticastRelOptListener.html" title="class in org.apache.calcite.plan">MulticastRelOptListener</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">RelOptListener</span>
extends <a href="https://docs.oracle.com/javase/9/docs/api/java/util/EventListener.html?is-external=true" title="class or interface in java.util" class="externalLink">EventListener</a></pre>
<div class="block">RelOptListener defines an interface for listening to events which occur
during the optimization process.</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">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptListener.RelChosenEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelChosenEvent</a></span></code></th>
<td class="colLast">
<div class="block">Event indicating that a relational expression has been chosen.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptListener.RelDiscardedEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelDiscardedEvent</a></span></code></th>
<td class="colLast">
<div class="block">Event indicating that a relational expression has been discarded.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptListener.RelEquivalenceEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelEquivalenceEvent</a></span></code></th>
<td class="colLast">
<div class="block">Event indicating that a relational expression has been found to
be equivalent to an equivalence class.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptListener.RelEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelEvent</a></span></code></th>
<td class="colLast">
<div class="block">Event class for abstract event dealing with a relational expression.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptListener.RuleAttemptedEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RuleAttemptedEvent</a></span></code></th>
<td class="colLast">
<div class="block">Event indicating that a planner rule has been attempted.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptListener.RuleEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RuleEvent</a></span></code></th>
<td class="colLast">
<div class="block">Event indicating that a planner rule has fired.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptListener.RuleProductionEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RuleProductionEvent</a></span></code></th>
<td class="colLast">
<div class="block">Event indicating that a planner rule has produced a result.</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="t3" class="tableTab" onclick="show(4);">Abstract 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>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#relChosen(org.apache.calcite.plan.RelOptListener.RelChosenEvent)">relChosen</a></span>&#8203;(<a href="RelOptListener.RelChosenEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelChosenEvent</a>&nbsp;event)</code></th>
<td class="colLast">
<div class="block">Notifies this listener that a relational expression has been chosen as
part of the final implementation of the query plan.</div>
</td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#relDiscarded(org.apache.calcite.plan.RelOptListener.RelDiscardedEvent)">relDiscarded</a></span>&#8203;(<a href="RelOptListener.RelDiscardedEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelDiscardedEvent</a>&nbsp;event)</code></th>
<td class="colLast">
<div class="block">Notifies this listener that a relational expression is no longer of
interest to the planner.</div>
</td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#relEquivalenceFound(org.apache.calcite.plan.RelOptListener.RelEquivalenceEvent)">relEquivalenceFound</a></span>&#8203;(<a href="RelOptListener.RelEquivalenceEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelEquivalenceEvent</a>&nbsp;event)</code></th>
<td class="colLast">
<div class="block">Notifies this listener that a relational expression has been registered
with a particular equivalence class after an equivalence has been either
detected or asserted.</div>
</td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ruleAttempted(org.apache.calcite.plan.RelOptListener.RuleAttemptedEvent)">ruleAttempted</a></span>&#8203;(<a href="RelOptListener.RuleAttemptedEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RuleAttemptedEvent</a>&nbsp;event)</code></th>
<td class="colLast">
<div class="block">Notifies this listener that an optimizer rule is being applied to a
particular relational expression.</div>
</td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ruleProductionSucceeded(org.apache.calcite.plan.RelOptListener.RuleProductionEvent)">ruleProductionSucceeded</a></span>&#8203;(<a href="RelOptListener.RuleProductionEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RuleProductionEvent</a>&nbsp;event)</code></th>
<td class="colLast">
<div class="block">Notifies this listener that an optimizer rule has been successfully
applied to a particular relational expression, resulting in a new
equivalent expression (relEquivalenceFound will also be called unless the
new expression is identical to an existing one).</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="blockList">
<!-- ============ 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="relEquivalenceFound(org.apache.calcite.plan.RelOptListener.RelEquivalenceEvent)">relEquivalenceFound</a></h3>
<div class="memberSignature"><span class="returnType">void</span>&nbsp;<span class="memberName">relEquivalenceFound</span>&#8203;(<span class="arguments"><a href="RelOptListener.RelEquivalenceEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelEquivalenceEvent</a>&nbsp;event)</span></div>
<div class="block">Notifies this listener that a relational expression has been registered
with a particular equivalence class after an equivalence has been either
detected or asserted. Equivalence classes may be either logical (all
expressions which yield the same result set) or physical (all expressions
which yield the same result set with a particular calling convention).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - details about the event</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ruleAttempted(org.apache.calcite.plan.RelOptListener.RuleAttemptedEvent)">ruleAttempted</a></h3>
<div class="memberSignature"><span class="returnType">void</span>&nbsp;<span class="memberName">ruleAttempted</span>&#8203;(<span class="arguments"><a href="RelOptListener.RuleAttemptedEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RuleAttemptedEvent</a>&nbsp;event)</span></div>
<div class="block">Notifies this listener that an optimizer rule is being applied to a
particular relational expression. This rule is called twice; once before
the rule is invoked, and once after. Note that the rel attribute of the
event is always the old expression.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - details about the event</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ruleProductionSucceeded(org.apache.calcite.plan.RelOptListener.RuleProductionEvent)">ruleProductionSucceeded</a></h3>
<div class="memberSignature"><span class="returnType">void</span>&nbsp;<span class="memberName">ruleProductionSucceeded</span>&#8203;(<span class="arguments"><a href="RelOptListener.RuleProductionEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RuleProductionEvent</a>&nbsp;event)</span></div>
<div class="block">Notifies this listener that an optimizer rule has been successfully
applied to a particular relational expression, resulting in a new
equivalent expression (relEquivalenceFound will also be called unless the
new expression is identical to an existing one). This rule is called
twice; once before registration of the new rel, and once after. Note that
the rel attribute of the event is always the new expression; to get the
old expression, use event.getRuleCall().rels[0].</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - details about the event</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="relDiscarded(org.apache.calcite.plan.RelOptListener.RelDiscardedEvent)">relDiscarded</a></h3>
<div class="memberSignature"><span class="returnType">void</span>&nbsp;<span class="memberName">relDiscarded</span>&#8203;(<span class="arguments"><a href="RelOptListener.RelDiscardedEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelDiscardedEvent</a>&nbsp;event)</span></div>
<div class="block">Notifies this listener that a relational expression is no longer of
interest to the planner.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - details about the event</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="relChosen(org.apache.calcite.plan.RelOptListener.RelChosenEvent)">relChosen</a></h3>
<div class="memberSignature"><span class="returnType">void</span>&nbsp;<span class="memberName">relChosen</span>&#8203;(<span class="arguments"><a href="RelOptListener.RelChosenEvent.html" title="class in org.apache.calcite.plan">RelOptListener.RelChosenEvent</a>&nbsp;event)</span></div>
<div class="block">Notifies this listener that a relational expression has been chosen as
part of the final implementation of the query plan. After the plan is
complete, this is called one more time with null for the rel.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - details about the event</dd>
</dl>
</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>Constr&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>Constr&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>