blob: 61ab74d12dbe477e4d410d6c2887d269b44c2e7e [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>ReduceDecimalsRule (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.rel.rules, class: ReduceDecimalsRule">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../script-dir/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../script-dir/jquery-3.4.1.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.js"></script>
</head>
<body class="class-declaration">
<script type="text/javascript">var data = {"i0":10,"i1":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flexBox">
<header role="banner" class="flexHeader">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<div class="navListSearch"><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="skipNav"><a id="skip.navbar.top">
<!-- -->
</a></div>
</nav>
</header>
<div class="flexContent">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.rel.rules</a></div>
<h1 title="Class ReduceDecimalsRule" class="title">Class ReduceDecimalsRule</h1>
</div>
<div class="contentContainer">
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a>
<div class="inheritance"><a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">org.apache.calcite.plan.RelOptRule</a>
<div class="inheritance"><a href="../../plan/RelRule.html" title="class in org.apache.calcite.plan">org.apache.calcite.plan.RelRule</a>&lt;<a href="ReduceDecimalsRule.Config.html" title="interface in org.apache.calcite.rel.rules">ReduceDecimalsRule.Config</a>&gt;
<div class="inheritance">org.apache.calcite.rel.rules.ReduceDecimalsRule</div>
</div>
</div>
</div>
<section class="description">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="TransformationRule.html" title="interface in org.apache.calcite.rel.rules">TransformationRule</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">ReduceDecimalsRule</span>
extends <a href="../../plan/RelRule.html" title="class in org.apache.calcite.plan">RelRule</a>&lt;<a href="ReduceDecimalsRule.Config.html" title="interface in org.apache.calcite.rel.rules">ReduceDecimalsRule.Config</a>&gt;
implements <a href="TransformationRule.html" title="interface in org.apache.calcite.rel.rules">TransformationRule</a></pre>
<div class="block">Rule that reduces decimal operations (such as casts
or arithmetic) into operations involving more primitive types (such as longs
and doubles). The rule allows Calcite implementations to deal with decimals
in a consistent manner, while saving the effort of implementing them.
<p>The rule can be applied to a
<a href="../logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a> with a program for which
<a href="../../rex/RexUtil.html#requiresDecimalExpansion(org.apache.calcite.rex.RexNode,boolean)"><code>RexUtil.requiresDecimalExpansion(org.apache.calcite.rex.RexNode, boolean)</code></a> returns true. The rule relies on a
<a href="../../rex/RexShuttle.html" title="class in org.apache.calcite.rex"><code>RexShuttle</code></a> to walk over relational expressions and replace them.
<p>While decimals are generally not implemented by the Calcite runtime, the
rule is optionally applied, in order to support the situation in which we
would like to push down decimal operations to an external database.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="CoreRules.html#CALC_REDUCE_DECIMALS"><code>CoreRules.CALC_REDUCE_DECIMALS</code></a></dd>
</dl>
</section>
<section class="summary">
<ul class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li class="blockList">
<section class="nestedClassSummary"><a id="nested.class.summary">
<!-- -->
</a>
<h2>Nested Class Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ReduceDecimalsRule.Config.html" title="interface in org.apache.calcite.rel.rules">ReduceDecimalsRule.Config</a></span></code></th>
<td class="colLast">
<div class="block">Rule configuration.</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="ReduceDecimalsRule.DecimalShuttle.html" title="class in org.apache.calcite.rel.rules">ReduceDecimalsRule.DecimalShuttle</a></span></code></th>
<td class="colLast">
<div class="block">A shuttle which converts decimal expressions to expressions based on
longs.</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="ReduceDecimalsRule.RexExpander.html" title="class in org.apache.calcite.rel.rules">ReduceDecimalsRule.RexExpander</a></span></code></th>
<td class="colLast">
<div class="block">Rewrites a decimal expression for a specific set of SqlOperator's.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="inheritedList">
<h2>Nested classes/interfaces inherited from class&nbsp;org.apache.calcite.plan.<a href="../../plan/RelRule.html" title="class in org.apache.calcite.plan">RelRule</a></h2>
<a id="nested.classes.inherited.from.class.org.apache.calcite.plan.RelRule">
<!-- -->
</a><code><a href="../../plan/RelRule.Done.html" title="interface in org.apache.calcite.plan">RelRule.Done</a>, <a href="../../plan/RelRule.MatchHandler.html" title="interface in org.apache.calcite.plan">RelRule.MatchHandler</a>&lt;<a href="../../plan/RelRule.MatchHandler.html" title="type parameter in RelRule.MatchHandler">R</a> extends <a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&gt;, <a href="../../plan/RelRule.OperandBuilder.html" title="interface in org.apache.calcite.plan">RelRule.OperandBuilder</a>, <a href="../../plan/RelRule.OperandDetailBuilder.html" title="interface in org.apache.calcite.plan">RelRule.OperandDetailBuilder</a>&lt;<a href="../../plan/RelRule.OperandDetailBuilder.html" title="type parameter in RelRule.OperandDetailBuilder">R</a> extends <a href="../RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&gt;, <a href="../../plan/RelRule.OperandTransform.html" title="interface in org.apache.calcite.plan">RelRule.OperandTransform</a></code></div>
<div class="inheritedList">
<h2>Nested classes/interfaces inherited from class&nbsp;org.apache.calcite.plan.<a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a></h2>
<a id="nested.classes.inherited.from.class.org.apache.calcite.plan.RelOptRule">
<!-- -->
</a><code><a href="../../plan/RelOptRule.ConverterRelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRule.ConverterRelOptRuleOperand</a></code></div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li class="blockList">
<section class="fieldSummary"><a id="field.summary">
<!-- -->
</a>
<h2>Field Summary</h2>
<div class="inheritedList">
<h3>Fields inherited from class&nbsp;org.apache.calcite.plan.<a href="../../plan/RelRule.html" title="class in org.apache.calcite.plan">RelRule</a></h3>
<a id="fields.inherited.from.class.org.apache.calcite.plan.RelRule">
<!-- -->
</a><code><a href="../../plan/RelRule.html#config">config</a></code></div>
<div class="inheritedList">
<h3>Fields inherited from class&nbsp;org.apache.calcite.plan.<a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a></h3>
<a id="fields.inherited.from.class.org.apache.calcite.plan.RelOptRule">
<!-- -->
</a><code><a href="../../plan/RelOptRule.html#description">description</a>, <a href="../../plan/RelOptRule.html#operands">operands</a>, <a href="../../plan/RelOptRule.html#relBuilderFactory">relBuilderFactory</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li class="blockList">
<section class="constructorSummary"><a id="constructor.summary">
<!-- -->
</a>
<h2>Constructor Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.rel.rules.ReduceDecimalsRule.Config)">ReduceDecimalsRule</a></span>&#8203;(<a href="ReduceDecimalsRule.Config.html" title="interface in org.apache.calcite.rel.rules">ReduceDecimalsRule.Config</a>&nbsp;config)</code></th>
<td class="colLast">
<div class="block">Creates a ReduceDecimalsRule.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>&nbsp;</code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.tools.RelBuilderFactory)">ReduceDecimalsRule</a></span>&#8203;(<a href="../../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a>&nbsp;relBuilderFactory)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li class="blockList">
<section class="methodSummary"><a id="method.summary">
<!-- -->
</a>
<h2>Method Summary</h2>
<div class="memberSummary">
<div role="tablist" aria-orientation="horizontal"><button role="tab" aria-selected="true" aria-controls="memberSummary_tabpanel" tabindex="0" onkeydown="switchTab(event)" id="t0" class="activeTableTab">All Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t2" class="tableTab" onclick="show(2);">Instance Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t4" class="tableTab" onclick="show(8);">Concrete Methods</button></div>
<div id="memberSummary_tabpanel" role="tabpanel">
<table aria-labelledby="t0">
<thead>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor" id="i0">
<td class="colFirst"><code><a href="../../plan/Convention.html" title="interface in org.apache.calcite.plan">Convention</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOutConvention()">getOutConvention</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the convention of the result of firing this rule, null if
not known.</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="#onMatch(org.apache.calcite.plan.RelOptRuleCall)">onMatch</a></span>&#8203;(<a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</code></th>
<td class="colLast">
<div class="block">Receives notification about a rule match.</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="inheritedList">
<h3>Methods inherited from class&nbsp;org.apache.calcite.plan.<a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a></h3>
<a id="methods.inherited.from.class.org.apache.calcite.plan.RelOptRule">
<!-- -->
</a><code><a href="../../plan/RelOptRule.html#any()">any</a>, <a href="../../plan/RelOptRule.html#convert(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTrait)">convert</a>, <a href="../../plan/RelOptRule.html#convert(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTraitSet)">convert</a>, <a href="../../plan/RelOptRule.html#convertList(java.util.List,org.apache.calcite.plan.RelTrait)">convertList</a>, <a href="../../plan/RelOptRule.html#convertOperand(java.lang.Class,com.google.common.base.Predicate,org.apache.calcite.plan.RelTrait)">convertOperand</a>, <a href="../../plan/RelOptRule.html#convertOperand(java.lang.Class,java.util.function.Predicate,org.apache.calcite.plan.RelTrait)">convertOperand</a>, <a href="../../plan/RelOptRule.html#equals(java.lang.Object)">equals</a>, <a href="../../plan/RelOptRule.html#equals(org.apache.calcite.plan.RelOptRule)">equals</a>, <a href="../../plan/RelOptRule.html#getOperand()">getOperand</a>, <a href="../../plan/RelOptRule.html#getOperands()">getOperands</a>, <a href="../../plan/RelOptRule.html#getOutTrait()">getOutTrait</a>, <a href="../../plan/RelOptRule.html#hashCode()">hashCode</a>, <a href="../../plan/RelOptRule.html#matches(org.apache.calcite.plan.RelOptRuleCall)">matches</a>, <a href="../../plan/RelOptRule.html#none()">none</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelOptRuleOperandChildren)">operand</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">operand</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelTrait,com.google.common.base.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)">operand</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelTrait,com.google.common.base.Predicate,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">operand</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelTrait,org.apache.calcite.plan.RelOptRuleOperandChildren)">operand</a>, <a href="../../plan/RelOptRule.html#operandJ(java.lang.Class,org.apache.calcite.plan.RelTrait,java.util.function.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)">operandJ</a>, <a href="../../plan/RelOptRule.html#operandJ(java.lang.Class,org.apache.calcite.plan.RelTrait,java.util.function.Predicate,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">operandJ</a>, <a href="../../plan/RelOptRule.html#some(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">some</a>, <a href="../../plan/RelOptRule.html#toString()">toString</a>, <a href="../../plan/RelOptRule.html#unordered(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">unordered</a></code></div>
<div class="inheritedList">
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a><code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li class="blockList">
<section class="constructorDetails"><a id="constructor.detail">
<!-- -->
</a>
<h2>Constructor Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="&lt;init&gt;(org.apache.calcite.rel.rules.ReduceDecimalsRule.Config)">ReduceDecimalsRule</a></h3>
<div class="memberSignature"><span class="modifiers">protected</span>&nbsp;<span class="memberName">ReduceDecimalsRule</span>&#8203;(<span class="arguments"><a href="ReduceDecimalsRule.Config.html" title="interface in org.apache.calcite.rel.rules">ReduceDecimalsRule.Config</a>&nbsp;config)</span></div>
<div class="block">Creates a ReduceDecimalsRule.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="&lt;init&gt;(org.apache.calcite.tools.RelBuilderFactory)">ReduceDecimalsRule</a></h3>
<div class="memberSignature"><span class="annotations"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang" class="externalLink">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="memberName">ReduceDecimalsRule</span>&#8203;(<span class="arguments"><a href="../../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a>&nbsp;relBuilderFactory)</span></div>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li class="blockList">
<section class="methodDetails"><a id="method.detail">
<!-- -->
</a>
<h2>Method Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="getOutConvention()">getOutConvention</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="../../plan/Convention.html" title="interface in org.apache.calcite.plan">Convention</a></span>&nbsp;<span class="memberName">getOutConvention</span>()</div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../plan/RelOptRule.html#getOutConvention()">RelOptRule</a></code></span></div>
<div class="block">Returns the convention of the result of firing this rule, null if
not known.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../plan/RelOptRule.html#getOutConvention()">getOutConvention</a></code>&nbsp;in class&nbsp;<code><a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Convention of the result of firing this rule, null if
not known</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="onMatch(org.apache.calcite.plan.RelOptRuleCall)">onMatch</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType">void</span>&nbsp;<span class="memberName">onMatch</span>&#8203;(<span class="arguments"><a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</span></div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../plan/RelOptRule.html#onMatch(org.apache.calcite.plan.RelOptRuleCall)">RelOptRule</a></code></span></div>
<div class="block">Receives notification about a rule match. At the time that this method is
called, <a href="../../plan/RelOptRuleCall.html#rels"><code>call.rels</code></a> holds the set of relational
expressions which match the operands to the rule; <code>
call.rels[0]</code> is the root expression.
<p>Typically a rule would check that the nodes are valid matches, creates
a new expression, then calls back <a href="../../plan/RelOptRuleCall.html#transformTo(org.apache.calcite.rel.RelNode,java.util.Map,org.apache.calcite.plan.RelHintsPropagator)"><code>RelOptRuleCall.transformTo(org.apache.calcite.rel.RelNode, java.util.Map&lt;org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode&gt;, org.apache.calcite.plan.RelHintsPropagator)</code></a> to
register the expression.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../plan/RelOptRule.html#onMatch(org.apache.calcite.plan.RelOptRuleCall)">onMatch</a></code>&nbsp;in class&nbsp;<code><a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - Rule call</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../plan/RelOptRule.html#matches(org.apache.calcite.plan.RelOptRuleCall)"><code>RelOptRule.matches(RelOptRuleCall)</code></a></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><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &copy; 2012-2020 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>