| <!DOCTYPE HTML> |
| <!-- NewPage --> |
| <html lang="en"> |
| <head> |
| <!-- Generated by javadoc --> |
| <title>RelOptRule (Apache Calcite API)</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> |
| <link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style"> |
| <script type="text/javascript" src="../../../../script.js"></script> |
| <script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script> |
| <script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script> |
| <!--[if IE]> |
| <script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script> |
| <![endif]--> |
| <script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script> |
| <script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script> |
| <script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script> |
| </head> |
| <body> |
| <script type="text/javascript"><!-- |
| try { |
| if (location.href.indexOf('is-external=true') == -1) { |
| parent.document.title="RelOptRule (Apache Calcite API)"; |
| } |
| } |
| catch(err) { |
| } |
| //--> |
| var data = {"i0":9,"i1":10,"i2":9,"i3":9,"i4":9,"i5":41,"i6":9,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":9,"i16":10,"i17":10,"i18":9,"i19":6,"i20":9,"i21":9,"i22":41,"i23":41,"i24":9,"i25":9,"i26":9,"i27":9,"i28":10,"i29":9}; |
| var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]}; |
| var altColor = "altColor"; |
| var rowColor = "rowColor"; |
| var tableTab = "tableTab"; |
| var activeTableTab = "activeTableTab"; |
| var pathtoroot = "../../../../"; |
| var useModuleDirectories = true; |
| loadScripts(document, 'script');</script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| <header role="banner"> |
| <nav role="navigation"> |
| <div class="fixedNav"> |
| <!-- ========= 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="class-use/RelOptRule.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../help-doc.html">Help</a></li> |
| </ul> |
| </div> |
| <div class="subNav"> |
| <ul class="navList" id="allclasses_navbar_top"> |
| <li><a href="../../../../allclasses.html">All Classes</a></li> |
| </ul> |
| <ul class="navListSearch"> |
| <li><label for="search">SEARCH:</label> |
| <input type="text" id="search" value="search" disabled="disabled"> |
| <input type="reset" id="reset" value="reset" disabled="disabled"> |
| </li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_top"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| </div> |
| <div> |
| <ul class="subNavList"> |
| <li>Summary: </li> |
| <li><a href="#nested.class.summary">Nested</a> | </li> |
| <li><a href="#field.summary">Field</a> | </li> |
| <li><a href="#constructor.summary">Constr</a> | </li> |
| <li><a href="#method.summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li><a href="#field.detail">Field</a> | </li> |
| <li><a href="#constructor.detail">Constr</a> | </li> |
| <li><a href="#method.detail">Method</a></li> |
| </ul> |
| </div> |
| <a id="skip.navbar.top"> |
| <!-- --> |
| </a></div> |
| <!-- ========= END OF TOP NAVBAR ========= --> |
| </div> |
| <div class="navPadding"> </div> |
| <script type="text/javascript"><!-- |
| $('.navPadding').css('padding-top', $('.fixedNav').css("height")); |
| //--> |
| </script> |
| </nav> |
| </header> |
| <!-- ======== START OF CLASS DATA ======== --> |
| <main role="main"> |
| <div class="header"> |
| <div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">org.apache.calcite.plan</a></div> |
| <h2 title="Class RelOptRule" class="title">Class RelOptRule</h2> |
| </div> |
| <div class="contentContainer"> |
| <ul class="inheritance"> |
| <li>java.lang.Object</li> |
| <li> |
| <ul class="inheritance"> |
| <li>org.apache.calcite.plan.RelOptRule</li> |
| </ul> |
| </li> |
| </ul> |
| <div class="description"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <dl> |
| <dt>Direct Known Subclasses:</dt> |
| <dd><code><a href="volcano/AbstractConverter.ExpandConversionRule.html" title="class in org.apache.calcite.plan.volcano">AbstractConverter.ExpandConversionRule</a></code>, <code><a href="../rel/rules/AbstractJoinExtractFilterRule.html" title="class in org.apache.calcite.rel.rules">AbstractJoinExtractFilterRule</a></code>, <code><a href="../rel/rules/AbstractMaterializedViewRule.html" title="class in org.apache.calcite.rel.rules">AbstractMaterializedViewRule</a></code>, <code><a href="../rel/rules/AggregateExpandDistinctAggregatesRule.html" title="class in org.apache.calcite.rel.rules">AggregateExpandDistinctAggregatesRule</a></code>, <code><a href="../rel/rules/AggregateExtractProjectRule.html" title="class in org.apache.calcite.rel.rules">AggregateExtractProjectRule</a></code>, <code><a href="../rel/rules/AggregateFilterTransposeRule.html" title="class in org.apache.calcite.rel.rules">AggregateFilterTransposeRule</a></code>, <code><a href="../rel/rules/AggregateJoinJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">AggregateJoinJoinRemoveRule</a></code>, <code><a href="../rel/rules/AggregateJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">AggregateJoinRemoveRule</a></code>, <code><a href="../rel/rules/AggregateJoinTransposeRule.html" title="class in org.apache.calcite.rel.rules">AggregateJoinTransposeRule</a></code>, <code><a href="../rel/rules/AggregateMergeRule.html" title="class in org.apache.calcite.rel.rules">AggregateMergeRule</a></code>, <code><a href="../rel/rules/AggregateProjectMergeRule.html" title="class in org.apache.calcite.rel.rules">AggregateProjectMergeRule</a></code>, <code><a href="../rel/rules/AggregateProjectPullUpConstantsRule.html" title="class in org.apache.calcite.rel.rules">AggregateProjectPullUpConstantsRule</a></code>, <code><a href="../rel/rules/AggregateReduceFunctionsRule.html" title="class in org.apache.calcite.rel.rules">AggregateReduceFunctionsRule</a></code>, <code><a href="../rel/rules/AggregateRemoveRule.html" title="class in org.apache.calcite.rel.rules">AggregateRemoveRule</a></code>, <code><a href="../rel/rules/AggregateStarTableRule.html" title="class in org.apache.calcite.rel.rules">AggregateStarTableRule</a></code>, <code><a href="../rel/rules/AggregateUnionAggregateRule.html" title="class in org.apache.calcite.rel.rules">AggregateUnionAggregateRule</a></code>, <code><a href="../rel/rules/AggregateUnionTransposeRule.html" title="class in org.apache.calcite.rel.rules">AggregateUnionTransposeRule</a></code>, <code><a href="../rel/rules/AggregateValuesRule.html" title="class in org.apache.calcite.rel.rules">AggregateValuesRule</a></code>, <code><a href="../interpreter/Bindables.BindableTableScanRule.html" title="class in org.apache.calcite.interpreter">Bindables.BindableTableScanRule</a></code>, <code><a href="../rel/rules/CalcMergeRule.html" title="class in org.apache.calcite.rel.rules">CalcMergeRule</a></code>, <code><a href="../rel/rules/CalcRemoveRule.html" title="class in org.apache.calcite.rel.rules">CalcRemoveRule</a></code>, <code><a href="../rel/rules/CalcSplitRule.html" title="class in org.apache.calcite.rel.rules">CalcSplitRule</a></code>, <code><a href="../adapter/cassandra/CassandraRules.CassandraFilterRule.html" title="class in org.apache.calcite.adapter.cassandra">CassandraRules.CassandraFilterRule</a></code>, <code><a href="../adapter/cassandra/CassandraRules.CassandraLimitRule.html" title="class in org.apache.calcite.adapter.cassandra">CassandraRules.CassandraLimitRule</a></code>, <code><a href="../adapter/cassandra/CassandraRules.CassandraSortRule.html" title="class in org.apache.calcite.adapter.cassandra">CassandraRules.CassandraSortRule</a></code>, <code><a href="../rel/rules/CoerceInputsRule.html" title="class in org.apache.calcite.rel.rules">CoerceInputsRule</a></code>, <code><a href="CommonRelSubExprRule.html" title="class in org.apache.calcite.plan">CommonRelSubExprRule</a></code>, <code><a href="../rel/convert/ConverterRule.html" title="class in org.apache.calcite.rel.convert">ConverterRule</a></code>, <code><a href="../adapter/csv/CsvProjectTableScanRule.html" title="class in org.apache.calcite.adapter.csv">CsvProjectTableScanRule</a></code>, <code><a href="../rel/rules/DateRangeRules.FilterDateRangeRule.html" title="class in org.apache.calcite.rel.rules">DateRangeRules.FilterDateRangeRule</a></code>, <code><a href="../adapter/druid/DruidRules.DruidAggregateProjectRule.html" title="class in org.apache.calcite.adapter.druid">DruidRules.DruidAggregateProjectRule</a></code>, <code><a href="../adapter/druid/DruidRules.DruidAggregateRule.html" title="class in org.apache.calcite.adapter.druid">DruidRules.DruidAggregateRule</a></code>, <code><a href="../adapter/druid/DruidRules.DruidFilterRule.html" title="class in org.apache.calcite.adapter.druid">DruidRules.DruidFilterRule</a></code>, <code><a href="../adapter/druid/DruidRules.DruidHavingFilterRule.html" title="class in org.apache.calcite.adapter.druid">DruidRules.DruidHavingFilterRule</a></code>, <code><a href="../adapter/druid/DruidRules.DruidPostAggregationProjectRule.html" title="class in org.apache.calcite.adapter.druid">DruidRules.DruidPostAggregationProjectRule</a></code>, <code><a href="../adapter/druid/DruidRules.DruidProjectRule.html" title="class in org.apache.calcite.adapter.druid">DruidRules.DruidProjectRule</a></code>, <code><a href="../adapter/druid/DruidRules.DruidSortRule.html" title="class in org.apache.calcite.adapter.druid">DruidRules.DruidSortRule</a></code>, <code><a href="../adapter/enumerable/EnumerableFilterToCalcRule.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableFilterToCalcRule</a></code>, <code><a href="../adapter/enumerable/EnumerableLimitRule.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableLimitRule</a></code>, <code><a href="../adapter/enumerable/EnumerableProjectToCalcRule.html" title="class in org.apache.calcite.adapter.enumerable">EnumerableProjectToCalcRule</a></code>, <code><a href="../rel/rules/ExchangeRemoveConstantKeysRule.html" title="class in org.apache.calcite.rel.rules">ExchangeRemoveConstantKeysRule</a></code>, <code><a href="../rel/rules/FilterAggregateTransposeRule.html" title="class in org.apache.calcite.rel.rules">FilterAggregateTransposeRule</a></code>, <code><a href="../rel/rules/FilterCalcMergeRule.html" title="class in org.apache.calcite.rel.rules">FilterCalcMergeRule</a></code>, <code><a href="../rel/rules/FilterCorrelateRule.html" title="class in org.apache.calcite.rel.rules">FilterCorrelateRule</a></code>, <code><a href="../rel/rules/FilterJoinRule.html" title="class in org.apache.calcite.rel.rules">FilterJoinRule</a></code>, <code><a href="../rel/rules/FilterMergeRule.html" title="class in org.apache.calcite.rel.rules">FilterMergeRule</a></code>, <code><a href="../rel/rules/FilterMultiJoinMergeRule.html" title="class in org.apache.calcite.rel.rules">FilterMultiJoinMergeRule</a></code>, <code><a href="../rel/rules/FilterProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">FilterProjectTransposeRule</a></code>, <code><a href="../rel/rules/FilterRemoveIsNotDistinctFromRule.html" title="class in org.apache.calcite.rel.rules">FilterRemoveIsNotDistinctFromRule</a></code>, <code><a href="../rel/rules/FilterSetOpTransposeRule.html" title="class in org.apache.calcite.rel.rules">FilterSetOpTransposeRule</a></code>, <code><a href="../rel/rules/FilterTableFunctionTransposeRule.html" title="class in org.apache.calcite.rel.rules">FilterTableFunctionTransposeRule</a></code>, <code><a href="../rel/rules/FilterTableScanRule.html" title="class in org.apache.calcite.rel.rules">FilterTableScanRule</a></code>, <code><a href="../rel/rules/FilterToCalcRule.html" title="class in org.apache.calcite.rel.rules">FilterToCalcRule</a></code>, <code><a href="../adapter/geode/rel/GeodeRules.GeodeFilterRule.html" title="class in org.apache.calcite.adapter.geode.rel">GeodeRules.GeodeFilterRule</a></code>, <code><a href="../adapter/geode/rel/GeodeRules.GeodeSortLimitRule.html" title="class in org.apache.calcite.adapter.geode.rel">GeodeRules.GeodeSortLimitRule</a></code>, <code><a href="../rel/rules/IntersectToDistinctRule.html" title="class in org.apache.calcite.rel.rules">IntersectToDistinctRule</a></code>, <code><a href="../rel/rules/JoinAddRedundantSemiJoinRule.html" title="class in org.apache.calcite.rel.rules">JoinAddRedundantSemiJoinRule</a></code>, <code><a href="../rel/rules/JoinAssociateRule.html" title="class in org.apache.calcite.rel.rules">JoinAssociateRule</a></code>, <code><a href="../rel/rules/JoinCommuteRule.html" title="class in org.apache.calcite.rel.rules">JoinCommuteRule</a></code>, <code><a href="../rel/rules/JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></code>, <code><a href="../rel/rules/JoinPushExpressionsRule.html" title="class in org.apache.calcite.rel.rules">JoinPushExpressionsRule</a></code>, <code><a href="../rel/rules/JoinPushThroughJoinRule.html" title="class in org.apache.calcite.rel.rules">JoinPushThroughJoinRule</a></code>, <code><a href="../rel/rules/JoinPushTransitivePredicatesRule.html" title="class in org.apache.calcite.rel.rules">JoinPushTransitivePredicatesRule</a></code>, <code><a href="../rel/rules/JoinToCorrelateRule.html" title="class in org.apache.calcite.rel.rules">JoinToCorrelateRule</a></code>, <code><a href="../rel/rules/JoinToMultiJoinRule.html" title="class in org.apache.calcite.rel.rules">JoinToMultiJoinRule</a></code>, <code><a href="../rel/rules/JoinUnionTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinUnionTransposeRule</a></code>, <code><a href="../rel/rules/LoptOptimizeJoinRule.html" title="class in org.apache.calcite.rel.rules">LoptOptimizeJoinRule</a></code>, <code><a href="../rel/rules/MaterializedViewFilterScanRule.html" title="class in org.apache.calcite.rel.rules">MaterializedViewFilterScanRule</a></code>, <code><a href="../rel/rules/MultiJoinOptimizeBushyRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinOptimizeBushyRule</a></code>, <code><a href="../rel/rules/ProjectCalcMergeRule.html" title="class in org.apache.calcite.rel.rules">ProjectCalcMergeRule</a></code>, <code><a href="../rel/rules/ProjectCorrelateTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectCorrelateTransposeRule</a></code>, <code><a href="../rel/rules/ProjectFilterTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectFilterTransposeRule</a></code>, <code><a href="../rel/rules/ProjectJoinJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">ProjectJoinJoinRemoveRule</a></code>, <code><a href="../rel/rules/ProjectJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">ProjectJoinRemoveRule</a></code>, <code><a href="../rel/rules/ProjectJoinTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectJoinTransposeRule</a></code>, <code><a href="../rel/rules/ProjectMergeRule.html" title="class in org.apache.calcite.rel.rules">ProjectMergeRule</a></code>, <code><a href="../rel/rules/ProjectMultiJoinMergeRule.html" title="class in org.apache.calcite.rel.rules">ProjectMultiJoinMergeRule</a></code>, <code><a href="../rel/rules/ProjectRemoveRule.html" title="class in org.apache.calcite.rel.rules">ProjectRemoveRule</a></code>, <code><a href="../rel/rules/ProjectSetOpTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectSetOpTransposeRule</a></code>, <code><a href="../rel/rules/ProjectSortTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectSortTransposeRule</a></code>, <code><a href="../rel/rules/ProjectTableScanRule.html" title="class in org.apache.calcite.rel.rules">ProjectTableScanRule</a></code>, <code><a href="../rel/rules/ProjectToCalcRule.html" title="class in org.apache.calcite.rel.rules">ProjectToCalcRule</a></code>, <code><a href="../rel/rules/ProjectToWindowRule.html" title="class in org.apache.calcite.rel.rules">ProjectToWindowRule</a></code>, <code><a href="../rel/rules/ProjectWindowTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectWindowTransposeRule</a></code>, <code><a href="../rel/rules/PruneEmptyRules.RemoveEmptySingleRule.html" title="class in org.apache.calcite.rel.rules">PruneEmptyRules.RemoveEmptySingleRule</a></code>, <code><a href="../rel/rules/ReduceDecimalsRule.html" title="class in org.apache.calcite.rel.rules">ReduceDecimalsRule</a></code>, <code><a href="../rel/rules/ReduceExpressionsRule.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule</a></code>, <code><a href="../sql2rel/RelDecorrelator.AdjustProjectForCountAggregateRule.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.AdjustProjectForCountAggregateRule</a></code>, <code><a href="../sql2rel/RelDecorrelator.RemoveCorrelationForScalarAggregateRule.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.RemoveCorrelationForScalarAggregateRule</a></code>, <code><a href="../sql2rel/RelDecorrelator.RemoveCorrelationForScalarProjectRule.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.RemoveCorrelationForScalarProjectRule</a></code>, <code><a href="../sql2rel/RelDecorrelator.RemoveSingleAggregateRule.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.RemoveSingleAggregateRule</a></code>, <code><a href="../rel/rules/SemiJoinFilterTransposeRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinFilterTransposeRule</a></code>, <code><a href="../rel/rules/SemiJoinJoinTransposeRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinJoinTransposeRule</a></code>, <code><a href="../rel/rules/SemiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinProjectTransposeRule</a></code>, <code><a href="../rel/rules/SemiJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinRemoveRule</a></code>, <code><a href="../rel/rules/SemiJoinRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinRule</a></code>, <code><a href="../rel/rules/SortJoinTransposeRule.html" title="class in org.apache.calcite.rel.rules">SortJoinTransposeRule</a></code>, <code><a href="../rel/rules/SortProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">SortProjectTransposeRule</a></code>, <code><a href="../rel/rules/SortRemoveConstantKeysRule.html" title="class in org.apache.calcite.rel.rules">SortRemoveConstantKeysRule</a></code>, <code><a href="../rel/rules/SortRemoveRule.html" title="class in org.apache.calcite.rel.rules">SortRemoveRule</a></code>, <code><a href="../rel/rules/SortUnionTransposeRule.html" title="class in org.apache.calcite.rel.rules">SortUnionTransposeRule</a></code>, <code><a href="../adapter/splunk/SplunkPushDownRule.html" title="class in org.apache.calcite.adapter.splunk">SplunkPushDownRule</a></code>, <code><a href="../rel/stream/StreamRules.DeltaAggregateTransposeRule.html" title="class in org.apache.calcite.rel.stream">StreamRules.DeltaAggregateTransposeRule</a></code>, <code><a href="../rel/stream/StreamRules.DeltaFilterTransposeRule.html" title="class in org.apache.calcite.rel.stream">StreamRules.DeltaFilterTransposeRule</a></code>, <code><a href="../rel/stream/StreamRules.DeltaJoinTransposeRule.html" title="class in org.apache.calcite.rel.stream">StreamRules.DeltaJoinTransposeRule</a></code>, <code><a href="../rel/stream/StreamRules.DeltaProjectTransposeRule.html" title="class in org.apache.calcite.rel.stream">StreamRules.DeltaProjectTransposeRule</a></code>, <code><a href="../rel/stream/StreamRules.DeltaSortTransposeRule.html" title="class in org.apache.calcite.rel.stream">StreamRules.DeltaSortTransposeRule</a></code>, <code><a href="../rel/stream/StreamRules.DeltaTableScanRule.html" title="class in org.apache.calcite.rel.stream">StreamRules.DeltaTableScanRule</a></code>, <code><a href="../rel/stream/StreamRules.DeltaTableScanToEmptyRule.html" title="class in org.apache.calcite.rel.stream">StreamRules.DeltaTableScanToEmptyRule</a></code>, <code><a href="../rel/stream/StreamRules.DeltaUnionTransposeRule.html" title="class in org.apache.calcite.rel.stream">StreamRules.DeltaUnionTransposeRule</a></code>, <code><a href="../rel/rules/SubQueryRemoveRule.html" title="class in org.apache.calcite.rel.rules">SubQueryRemoveRule</a></code>, <code><a href="SubstitutionVisitor.FilterOnProjectRule.html" title="class in org.apache.calcite.plan">SubstitutionVisitor.FilterOnProjectRule</a></code>, <code><a href="../rel/rules/TableScanRule.html" title="class in org.apache.calcite.rel.rules">TableScanRule</a></code>, <code><a href="../rel/convert/TraitMatchingRule.html" title="class in org.apache.calcite.rel.convert">TraitMatchingRule</a></code>, <code><a href="../rel/rules/UnionEliminatorRule.html" title="class in org.apache.calcite.rel.rules">UnionEliminatorRule</a></code>, <code><a href="../rel/rules/UnionMergeRule.html" title="class in org.apache.calcite.rel.rules">UnionMergeRule</a></code>, <code><a href="../rel/rules/UnionPullUpConstantsRule.html" title="class in org.apache.calcite.rel.rules">UnionPullUpConstantsRule</a></code>, <code><a href="../rel/rules/UnionToDistinctRule.html" title="class in org.apache.calcite.rel.rules">UnionToDistinctRule</a></code>, <code><a href="../rel/rules/ValuesReduceRule.html" title="class in org.apache.calcite.rel.rules">ValuesReduceRule</a></code></dd> |
| </dl> |
| <hr> |
| <pre>public abstract class <span class="typeNameLabel">RelOptRule</span> |
| extends java.lang.Object</pre> |
| <div class="block">A <code>RelOptRule</code> transforms an expression into another. It has a |
| list of <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan"><code>RelOptRuleOperand</code></a>s, which determine whether the rule can be |
| applied to a particular section of the tree. |
| |
| <p>The optimizer figures out which rules are applicable, then calls |
| <a href="#onMatch(org.apache.calcite.plan.RelOptRuleCall)"><code>onMatch(org.apache.calcite.plan.RelOptRuleCall)</code></a> on each of them.</p></div> |
| </li> |
| </ul> |
| </div> |
| <div class="summary"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ======== NESTED CLASS SUMMARY ======== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="nested.class.summary"> |
| <!-- --> |
| </a> |
| <h3>Nested Class Summary</h3> |
| <table class="memberSummary"> |
| <caption><span>Nested Classes</span><span class="tabEnd"> </span></caption> |
| <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> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private static class </code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptRule.ConverterRelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRule.ConverterRelOptRuleOperand</a></span></code></th> |
| <td class="colLast"> |
| <div class="block">Operand to an instance of the converter rule.</div> |
| </td> |
| </tr> |
| </table> |
| </li> |
| </ul> |
| </section> |
| <!-- =========== FIELD SUMMARY =========== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="field.summary"> |
| <!-- --> |
| </a> |
| <h3>Field Summary</h3> |
| <table class="memberSummary"> |
| <caption><span>Fields</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colSecond" scope="col">Field</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected java.lang.String</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#description">description</a></span></code></th> |
| <td class="colLast"> |
| <div class="block">Description of rule, must be unique within planner.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operand">operand</a></span></code></th> |
| <td class="colLast"> |
| <div class="block">Root of operand tree.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>java.util.List<<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operands">operands</a></span></code></th> |
| <td class="colLast"> |
| <div class="block">Flattened list of operands.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code><a href="../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#relBuilderFactory">relBuilderFactory</a></span></code></th> |
| <td class="colLast"> |
| <div class="block">Factory for a builder for relational expressions.</div> |
| </td> |
| </tr> |
| </table> |
| </li> |
| </ul> |
| </section> |
| <!-- ======== CONSTRUCTOR SUMMARY ======== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="constructor.summary"> |
| <!-- --> |
| </a> |
| <h3>Constructor Summary</h3> |
| <table class="memberSummary"> |
| <caption><span>Constructors</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Constructor</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tr class="altColor"> |
| <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.plan.RelOptRuleOperand)">RelOptRule</a></span>​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates a rule.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.plan.RelOptRuleOperand,java.lang.String)">RelOptRule</a></span>​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand, |
| java.lang.String description)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates a rule with an explicit description.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.tools.RelBuilderFactory,java.lang.String)">RelOptRule</a></span>​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand, |
| <a href="../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a> relBuilderFactory, |
| java.lang.String description)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates a rule with an explicit description.</div> |
| </td> |
| </tr> |
| </table> |
| </li> |
| </ul> |
| </section> |
| <!-- ========== METHOD SUMMARY =========== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="method.summary"> |
| <!-- --> |
| </a> |
| <h3>Method Summary</h3> |
| <table class="memberSummary"> |
| <caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </span></span></caption> |
| <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> |
| <tr id="i0" class="altColor"> |
| <td class="colFirst"><code>static <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#any()">any</a></span>()</code></th> |
| <td class="colLast"> |
| <div class="block">Creates a list of child operands that signifies that the operand matches |
| any number of child relational expressions.</div> |
| </td> |
| </tr> |
| <tr id="i1" class="rowColor"> |
| <td class="colFirst"><code>private void</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#assignSolveOrder()">assignSolveOrder</a></span>()</code></th> |
| <td class="colLast"> |
| <div class="block">Builds each operand's solve-order.</div> |
| </td> |
| </tr> |
| <tr id="i2" class="altColor"> |
| <td class="colFirst"><code>static <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#convert(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTrait)">convert</a></span>​(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a> rel, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> toTrait)</code></th> |
| <td class="colLast"> |
| <div class="block">Converts one trait of a relational expression, if it does not |
| already have that trait.</div> |
| </td> |
| </tr> |
| <tr id="i3" class="rowColor"> |
| <td class="colFirst"><code>static <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#convert(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTraitSet)">convert</a></span>​(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a> rel, |
| <a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a> toTraits)</code></th> |
| <td class="colLast"> |
| <div class="block">Converts a relation expression to a given set of traits, if it does not |
| already have those traits.</div> |
| </td> |
| </tr> |
| <tr id="i4" class="altColor"> |
| <td class="colFirst"><code>protected static java.util.List<<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#convertList(java.util.List,org.apache.calcite.plan.RelTrait)">convertList</a></span>​(java.util.List<<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> rels, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait)</code></th> |
| <td class="colLast"> |
| <div class="block">Converts a list of relational expressions.</div> |
| </td> |
| </tr> |
| <tr id="i5" class="rowColor"> |
| <td class="colFirst"><code>protected static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>><br><a href="RelOptRule.ConverterRelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRule.ConverterRelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#convertOperand(java.lang.Class,com.google.common.base.Predicate,org.apache.calcite.plan.RelTrait)">convertOperand</a></span>​(java.lang.Class<R> clazz, |
| com.google.common.base.Predicate<? super R> predicate, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait)</code></th> |
| <td class="colLast"> |
| <div class="block"><span class="deprecatedLabel">Deprecated.</span> |
| <div class="deprecationComment">Use <a href="#convertOperand(java.lang.Class,java.util.function.Predicate,org.apache.calcite.plan.RelTrait)"><code>convertOperand(Class, Predicate, RelTrait)</code></a>.</div> |
| </div> |
| </td> |
| </tr> |
| <tr id="i6" class="altColor"> |
| <td class="colFirst"><code>protected static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>><br><a href="RelOptRule.ConverterRelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRule.ConverterRelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#convertOperand(java.lang.Class,java.util.function.Predicate,org.apache.calcite.plan.RelTrait)">convertOperand</a></span>​(java.lang.Class<R> clazz, |
| java.util.function.Predicate<? super R> predicate, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates an operand for a converter rule.</div> |
| </td> |
| </tr> |
| <tr id="i7" class="rowColor"> |
| <td class="colFirst"><code>boolean</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object)">equals</a></span>​(java.lang.Object obj)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i8" class="altColor"> |
| <td class="colFirst"><code>protected boolean</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(org.apache.calcite.plan.RelOptRule)">equals</a></span>​(<a href="RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a> that)</code></th> |
| <td class="colLast"> |
| <div class="block">Returns whether this rule is equal to another rule.</div> |
| </td> |
| </tr> |
| <tr id="i9" class="rowColor"> |
| <td class="colFirst"><code>private java.util.List<<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#flattenOperands(org.apache.calcite.plan.RelOptRuleOperand)">flattenOperands</a></span>​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> rootOperand)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates a flattened list of this operand and its descendants in prefix |
| order.</div> |
| </td> |
| </tr> |
| <tr id="i10" class="altColor"> |
| <td class="colFirst"><code>private void</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#flattenRecurse(java.util.List,org.apache.calcite.plan.RelOptRuleOperand)">flattenRecurse</a></span>​(java.util.List<<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>> operandList, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> parentOperand)</code></th> |
| <td class="colLast"> |
| <div class="block">Adds the operand and its descendants to the list in prefix order.</div> |
| </td> |
| </tr> |
| <tr id="i11" class="rowColor"> |
| <td class="colFirst"><code><a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOperand()">getOperand</a></span>()</code></th> |
| <td class="colLast"> |
| <div class="block">Returns the root operand of this rule</div> |
| </td> |
| </tr> |
| <tr id="i12" class="altColor"> |
| <td class="colFirst"><code>java.util.List<<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOperands()">getOperands</a></span>()</code></th> |
| <td class="colLast"> |
| <div class="block">Returns a flattened list of operands of this rule.</div> |
| </td> |
| </tr> |
| <tr id="i13" class="rowColor"> |
| <td class="colFirst"><code><a href="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 id="i14" class="altColor"> |
| <td class="colFirst"><code><a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOutTrait()">getOutTrait</a></span>()</code></th> |
| <td class="colLast"> |
| <div class="block">Returns the trait which will be modified as a result of firing this rule, |
| or null if the rule is not a converter rule.</div> |
| </td> |
| </tr> |
| <tr id="i15" class="rowColor"> |
| <td class="colFirst"><code>(package private) static java.lang.String</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#guessDescription(java.lang.String)">guessDescription</a></span>​(java.lang.String className)</code></th> |
| <td class="colLast"> |
| <div class="block">Deduces a name for a rule by taking the name of its class and returning |
| the segment after the last '.' or '$'.</div> |
| </td> |
| </tr> |
| <tr id="i16" class="altColor"> |
| <td class="colFirst"><code>int</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i17" class="rowColor"> |
| <td class="colFirst"><code>boolean</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#matches(org.apache.calcite.plan.RelOptRuleCall)">matches</a></span>​(<a href="RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a> call)</code></th> |
| <td class="colLast"> |
| <div class="block">Returns whether this rule could possibly match the given operands.</div> |
| </td> |
| </tr> |
| <tr id="i18" class="altColor"> |
| <td class="colFirst"><code>static <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#none()">none</a></span>()</code></th> |
| <td class="colLast"> |
| <div class="block">Creates an empty list of child operands.</div> |
| </td> |
| </tr> |
| <tr id="i19" class="rowColor"> |
| <td class="colFirst"><code>abstract void</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMatch(org.apache.calcite.plan.RelOptRuleCall)">onMatch</a></span>​(<a href="RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a> call)</code></th> |
| <td class="colLast"> |
| <div class="block">Receives notification about a rule match.</div> |
| </td> |
| </tr> |
| <tr id="i20" class="altColor"> |
| <td class="colFirst"><code>static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>><br><a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operand(java.lang.Class,org.apache.calcite.plan.RelOptRuleOperandChildren)">operand</a></span>​(java.lang.Class<R> clazz, |
| <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> operandList)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates an operand that matches a relational expression that has no |
| children.</div> |
| </td> |
| </tr> |
| <tr id="i21" class="rowColor"> |
| <td class="colFirst"><code>static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>><br><a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operand(java.lang.Class,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">operand</a></span>​(java.lang.Class<R> clazz, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates an operand that matches a relational expression with a given |
| list of children.</div> |
| </td> |
| </tr> |
| <tr id="i22" class="altColor"> |
| <td class="colFirst"><code>static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>><br><a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operand(java.lang.Class,org.apache.calcite.plan.RelTrait,com.google.common.base.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)">operand</a></span>​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| com.google.common.base.Predicate<? super R> predicate, |
| <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> operandList)</code></th> |
| <td class="colLast"> |
| <div class="block"><span class="deprecatedLabel">Deprecated.</span> |
| <div class="deprecationComment">Use <a href="#operandJ(java.lang.Class,org.apache.calcite.plan.RelTrait,java.util.function.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)"><code>operandJ(java.lang.Class<R>, org.apache.calcite.plan.RelTrait, java.util.function.Predicate<? super R>, org.apache.calcite.plan.RelOptRuleOperandChildren)</code></a></div> |
| </div> |
| </td> |
| </tr> |
| <tr id="i23" class="rowColor"> |
| <td class="colFirst"><code>static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>><br><a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#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></span>​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| com.google.common.base.Predicate<? super R> predicate, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</code></th> |
| <td class="colLast"> |
| <div class="block"><span class="deprecatedLabel">Deprecated.</span></div> |
| </td> |
| </tr> |
| <tr id="i24" class="altColor"> |
| <td class="colFirst"><code>static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>><br><a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operand(java.lang.Class,org.apache.calcite.plan.RelTrait,org.apache.calcite.plan.RelOptRuleOperandChildren)">operand</a></span>​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> operandList)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates an operand that matches a relational expression that has no |
| children.</div> |
| </td> |
| </tr> |
| <tr id="i25" class="rowColor"> |
| <td class="colFirst"><code>static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>><br><a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operandJ(java.lang.Class,org.apache.calcite.plan.RelTrait,java.util.function.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)">operandJ</a></span>​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| java.util.function.Predicate<? super R> predicate, |
| <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> operandList)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates an operand that matches a relational expression that has a |
| particular trait and predicate.</div> |
| </td> |
| </tr> |
| <tr id="i26" class="altColor"> |
| <td class="colFirst"><code>static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>><br><a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#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></span>​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| java.util.function.Predicate<? super R> predicate, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates an operand that matches a relational expression that has no |
| children.</div> |
| </td> |
| </tr> |
| <tr id="i27" class="rowColor"> |
| <td class="colFirst"><code>static <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#some(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">some</a></span>​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates a list of child operands that matches child relational |
| expressions in the order they appear.</div> |
| </td> |
| </tr> |
| <tr id="i28" class="altColor"> |
| <td class="colFirst"><code>java.lang.String</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th> |
| <td class="colLast"> |
| <div class="block">Returns the description of this rule.</div> |
| </td> |
| </tr> |
| <tr id="i29" class="rowColor"> |
| <td class="colFirst"><code>static <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unordered(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">unordered</a></span>​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</code></th> |
| <td class="colLast"> |
| <div class="block">Creates a list of child operands that matches child relational |
| expressions in any order.</div> |
| </td> |
| </tr> |
| </table> |
| <ul class="blockList"> |
| <li class="blockList"><a id="methods.inherited.from.class.java.lang.Object"> |
| <!-- --> |
| </a> |
| <h3>Methods inherited from class java.lang.Object</h3> |
| <code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| </li> |
| </ul> |
| </div> |
| <div class="details"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ============ FIELD DETAIL =========== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="field.detail"> |
| <!-- --> |
| </a> |
| <h3>Field Detail</h3> |
| <a id="description"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>description</h4> |
| <pre>protected final java.lang.String description</pre> |
| <div class="block">Description of rule, must be unique within planner. Default is the name |
| of the class sans package name, but derived classes are encouraged to |
| override.</div> |
| </li> |
| </ul> |
| <a id="operand"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>operand</h4> |
| <pre>private final <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand</pre> |
| <div class="block">Root of operand tree.</div> |
| </li> |
| </ul> |
| <a id="relBuilderFactory"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>relBuilderFactory</h4> |
| <pre>public final <a href="../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a> relBuilderFactory</pre> |
| <div class="block">Factory for a builder for relational expressions. |
| |
| <p>The actual builder is available via <a href="RelOptRuleCall.html#builder()"><code>RelOptRuleCall.builder()</code></a>.</div> |
| </li> |
| </ul> |
| <a id="operands"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>operands</h4> |
| <pre>public final java.util.List<<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>> operands</pre> |
| <div class="block">Flattened list of operands.</div> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| <!-- ========= CONSTRUCTOR DETAIL ======== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="constructor.detail"> |
| <!-- --> |
| </a> |
| <h3>Constructor Detail</h3> |
| <a id="<init>(org.apache.calcite.plan.RelOptRuleOperand)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>RelOptRule</h4> |
| <pre>public RelOptRule​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand)</pre> |
| <div class="block">Creates a rule.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>operand</code> - root operand, must not be null</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="<init>(org.apache.calcite.plan.RelOptRuleOperand,java.lang.String)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>RelOptRule</h4> |
| <pre>public RelOptRule​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand, |
| java.lang.String description)</pre> |
| <div class="block">Creates a rule with an explicit description.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>operand</code> - root operand, must not be null</dd> |
| <dd><code>description</code> - Description, or null to guess description</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="<init>(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.tools.RelBuilderFactory,java.lang.String)"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>RelOptRule</h4> |
| <pre>public RelOptRule​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand, |
| <a href="../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a> relBuilderFactory, |
| java.lang.String description)</pre> |
| <div class="block">Creates a rule with an explicit description.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>operand</code> - root operand, must not be null</dd> |
| <dd><code>description</code> - Description, or null to guess description</dd> |
| <dd><code>relBuilderFactory</code> - Builder for relational expressions</dd> |
| </dl> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| <!-- ============ METHOD DETAIL ========== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="method.detail"> |
| <!-- --> |
| </a> |
| <h3>Method Detail</h3> |
| <a id="operand(java.lang.Class,org.apache.calcite.plan.RelOptRuleOperandChildren)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>operand</h4> |
| <pre class="methodSignature">public static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand​(java.lang.Class<R> clazz, |
| <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> operandList)</pre> |
| <div class="block">Creates an operand that matches a relational expression that has no |
| children.</div> |
| <dl> |
| <dt><span class="paramLabel">Type Parameters:</span></dt> |
| <dd><code>R</code> - Class of relational expression to match</dd> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>clazz</code> - Class of relational expression to match (must not be null)</dd> |
| <dd><code>operandList</code> - Child operands</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Operand that matches a relational expression that has no |
| children</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="operand(java.lang.Class,org.apache.calcite.plan.RelTrait,org.apache.calcite.plan.RelOptRuleOperandChildren)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>operand</h4> |
| <pre class="methodSignature">public static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> operandList)</pre> |
| <div class="block">Creates an operand that matches a relational expression that has no |
| children.</div> |
| <dl> |
| <dt><span class="paramLabel">Type Parameters:</span></dt> |
| <dd><code>R</code> - Class of relational expression to match</dd> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>clazz</code> - Class of relational expression to match (must not be null)</dd> |
| <dd><code>trait</code> - Trait to match, or null to match any trait</dd> |
| <dd><code>operandList</code> - Child operands</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Operand that matches a relational expression that has no |
| children</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="operandJ(java.lang.Class,org.apache.calcite.plan.RelTrait,java.util.function.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>operandJ</h4> |
| <pre class="methodSignature">public static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operandJ​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| java.util.function.Predicate<? super R> predicate, |
| <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> operandList)</pre> |
| <div class="block">Creates an operand that matches a relational expression that has a |
| particular trait and predicate.</div> |
| <dl> |
| <dt><span class="paramLabel">Type Parameters:</span></dt> |
| <dd><code>R</code> - Class of relational expression to match</dd> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>clazz</code> - Class of relational expression to match (must not be null)</dd> |
| <dd><code>trait</code> - Trait to match, or null to match any trait</dd> |
| <dd><code>predicate</code> - Additional match predicate</dd> |
| <dd><code>operandList</code> - Child operands</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Operand that matches a relational expression that has a |
| particular trait and predicate</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="operand(java.lang.Class,org.apache.calcite.plan.RelTrait,com.google.common.base.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>operand</h4> |
| <pre class="methodSignature">@Deprecated |
| public static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| com.google.common.base.Predicate<? super R> predicate, |
| <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> operandList)</pre> |
| <div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span> |
| <div class="deprecationComment">Use <a href="#operandJ(java.lang.Class,org.apache.calcite.plan.RelTrait,java.util.function.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)"><code>operandJ(java.lang.Class<R>, org.apache.calcite.plan.RelTrait, java.util.function.Predicate<? super R>, org.apache.calcite.plan.RelOptRuleOperandChildren)</code></a></div> |
| </div> |
| </li> |
| </ul> |
| <a id="operandJ(java.lang.Class,org.apache.calcite.plan.RelTrait,java.util.function.Predicate,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>operandJ</h4> |
| <pre class="methodSignature">public static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operandJ​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| java.util.function.Predicate<? super R> predicate, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</pre> |
| <div class="block">Creates an operand that matches a relational expression that has no |
| children.</div> |
| <dl> |
| <dt><span class="paramLabel">Type Parameters:</span></dt> |
| <dd><code>R</code> - Class of relational expression to match</dd> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>clazz</code> - Class of relational expression to match (must not be null)</dd> |
| <dd><code>trait</code> - Trait to match, or null to match any trait</dd> |
| <dd><code>predicate</code> - Additional match predicate</dd> |
| <dd><code>first</code> - First operand</dd> |
| <dd><code>rest</code> - Rest operands</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Operand</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="operand(java.lang.Class,org.apache.calcite.plan.RelTrait,com.google.common.base.Predicate,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>operand</h4> |
| <pre class="methodSignature">@Deprecated |
| public static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand​(java.lang.Class<R> clazz, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait, |
| com.google.common.base.Predicate<? super R> predicate, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</pre> |
| <div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div> |
| </li> |
| </ul> |
| <a id="operand(java.lang.Class,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>operand</h4> |
| <pre class="methodSignature">public static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> operand​(java.lang.Class<R> clazz, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</pre> |
| <div class="block">Creates an operand that matches a relational expression with a given |
| list of children. |
| |
| <p>Shorthand for <code>operand(clazz, some(...))</code>. |
| |
| <p>If you wish to match a relational expression that has no children |
| (that is, a leaf node), write <code>operand(clazz, none())</code></p>. |
| |
| <p>If you wish to match a relational expression that has any number of |
| children, write <code>operand(clazz, any())</code></p>.</div> |
| <dl> |
| <dt><span class="paramLabel">Type Parameters:</span></dt> |
| <dd><code>R</code> - Class of relational expression to match</dd> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>clazz</code> - Class of relational expression to match (must not be null)</dd> |
| <dd><code>first</code> - First operand</dd> |
| <dd><code>rest</code> - Rest operands</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Operand that matches a relational expression with a given |
| list of children</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="convertOperand(java.lang.Class,java.util.function.Predicate,org.apache.calcite.plan.RelTrait)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>convertOperand</h4> |
| <pre class="methodSignature">protected static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> <a href="RelOptRule.ConverterRelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRule.ConverterRelOptRuleOperand</a> convertOperand​(java.lang.Class<R> clazz, |
| java.util.function.Predicate<? super R> predicate, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait)</pre> |
| <div class="block">Creates an operand for a converter rule.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>clazz</code> - Class of relational expression to match (must not be null)</dd> |
| <dd><code>trait</code> - Trait to match, or null to match any trait</dd> |
| <dd><code>predicate</code> - Predicate to apply to relational expression</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="convertOperand(java.lang.Class,com.google.common.base.Predicate,org.apache.calcite.plan.RelTrait)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>convertOperand</h4> |
| <pre class="methodSignature">@Deprecated |
| protected static <R extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> <a href="RelOptRule.ConverterRelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRule.ConverterRelOptRuleOperand</a> convertOperand​(java.lang.Class<R> clazz, |
| com.google.common.base.Predicate<? super R> predicate, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait)</pre> |
| <div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span> |
| <div class="deprecationComment">Use <a href="#convertOperand(java.lang.Class,java.util.function.Predicate,org.apache.calcite.plan.RelTrait)"><code>convertOperand(Class, Predicate, RelTrait)</code></a>.</div> |
| </div> |
| </li> |
| </ul> |
| <a id="some(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>some</h4> |
| <pre class="methodSignature">public static <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> some​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</pre> |
| <div class="block">Creates a list of child operands that matches child relational |
| expressions in the order they appear.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>first</code> - First child operand</dd> |
| <dd><code>rest</code> - Remaining child operands (may be empty)</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>List of child operands that matches child relational |
| expressions in the order</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="unordered(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>unordered</h4> |
| <pre class="methodSignature">public static <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> unordered​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> first, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>... rest)</pre> |
| <div class="block">Creates a list of child operands that matches child relational |
| expressions in any order. |
| |
| <p>This is useful when matching a relational expression which |
| can have a variable number of children. For example, the rule to |
| eliminate empty children of a Union would have operands</p> |
| |
| <blockquote>Operand(Union, true, Operand(Empty))</blockquote> |
| |
| <p>and given the relational expressions</p> |
| |
| <blockquote>Union(LogicalFilter, Empty, LogicalProject)</blockquote> |
| |
| <p>would fire the rule with arguments</p> |
| |
| <blockquote>{Union, Empty}</blockquote> |
| |
| <p>It is up to the rule to deduce the other children, or indeed the |
| position of the matched child.</p></div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>first</code> - First child operand</dd> |
| <dd><code>rest</code> - Remaining child operands (may be empty)</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>List of child operands that matches child relational |
| expressions in any order</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="none()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>none</h4> |
| <pre class="methodSignature">public static <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> none()</pre> |
| <div class="block">Creates an empty list of child operands.</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Empty list of child operands</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="any()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>any</h4> |
| <pre class="methodSignature">public static <a href="RelOptRuleOperandChildren.html" title="class in org.apache.calcite.plan">RelOptRuleOperandChildren</a> any()</pre> |
| <div class="block">Creates a list of child operands that signifies that the operand matches |
| any number of child relational expressions.</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>List of child operands that signifies that the operand matches |
| any number of child relational expressions</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="flattenOperands(org.apache.calcite.plan.RelOptRuleOperand)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>flattenOperands</h4> |
| <pre class="methodSignature">private java.util.List<<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>> flattenOperands​(<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> rootOperand)</pre> |
| <div class="block">Creates a flattened list of this operand and its descendants in prefix |
| order.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>rootOperand</code> - Root operand</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Flattened list of operands</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="flattenRecurse(java.util.List,org.apache.calcite.plan.RelOptRuleOperand)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>flattenRecurse</h4> |
| <pre class="methodSignature">private void flattenRecurse​(java.util.List<<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>> operandList, |
| <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> parentOperand)</pre> |
| <div class="block">Adds the operand and its descendants to the list in prefix order.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>operandList</code> - Flattened list of operands</dd> |
| <dd><code>parentOperand</code> - Parent of this operand</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="assignSolveOrder()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>assignSolveOrder</h4> |
| <pre class="methodSignature">private void assignSolveOrder()</pre> |
| <div class="block">Builds each operand's solve-order. Start with itself, then its parent, up |
| to the root, then the remaining operands in prefix order.</div> |
| </li> |
| </ul> |
| <a id="getOperand()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>getOperand</h4> |
| <pre class="methodSignature">public <a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a> getOperand()</pre> |
| <div class="block">Returns the root operand of this rule</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>the root operand of this rule</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="getOperands()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>getOperands</h4> |
| <pre class="methodSignature">public java.util.List<<a href="RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>> getOperands()</pre> |
| <div class="block">Returns a flattened list of operands of this rule.</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>flattened list of operands</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="hashCode()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>hashCode</h4> |
| <pre class="methodSignature">public int hashCode()</pre> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Overrides:</span></dt> |
| <dd><code>hashCode</code> in class <code>java.lang.Object</code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="equals(java.lang.Object)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>equals</h4> |
| <pre class="methodSignature">public boolean equals​(java.lang.Object obj)</pre> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Overrides:</span></dt> |
| <dd><code>equals</code> in class <code>java.lang.Object</code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="equals(org.apache.calcite.plan.RelOptRule)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>equals</h4> |
| <pre class="methodSignature">protected boolean equals​(<a href="RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a> that)</pre> |
| <div class="block">Returns whether this rule is equal to another rule. |
| |
| <p>The base implementation checks that the rules have the same class and |
| that the operands are equal; derived classes can override.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>that</code> - Another rule</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Whether this rule is equal to another rule</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="matches(org.apache.calcite.plan.RelOptRuleCall)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>matches</h4> |
| <pre class="methodSignature">public boolean matches​(<a href="RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a> call)</pre> |
| <div class="block">Returns whether this rule could possibly match the given operands. |
| |
| <p>This method is an opportunity to apply side-conditions to a rule. The |
| <a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan"><code>RelOptPlanner</code></a> calls this method after matching all operands of |
| the rule, and before calling <a href="#onMatch(org.apache.calcite.plan.RelOptRuleCall)"><code>onMatch(RelOptRuleCall)</code></a>. |
| |
| <p>In implementations of <a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan"><code>RelOptPlanner</code></a> which may queue up a |
| matched <a href="RelOptRuleCall.html" title="class in org.apache.calcite.plan"><code>RelOptRuleCall</code></a> for a long time before calling |
| <a href="#onMatch(org.apache.calcite.plan.RelOptRuleCall)"><code>onMatch(RelOptRuleCall)</code></a>, this method is beneficial because it |
| allows the planner to discard rules earlier in the process. |
| |
| <p>The default implementation of this method returns <code>true</code>. |
| It is acceptable for any implementation of this method to give a false |
| positives, that is, to say that the rule matches the operands but have |
| <a href="#onMatch(org.apache.calcite.plan.RelOptRuleCall)"><code>onMatch(RelOptRuleCall)</code></a> subsequently not generate any |
| successors. |
| |
| <p>The following script is useful to identify rules which commonly |
| produce no successors. You should override this method for these rules: |
| |
| <blockquote> |
| <pre><code>awk ' |
| /Apply rule/ {rule=$4; ruleCount[rule]++;} |
| /generated 0 successors/ {ruleMiss[rule]++;} |
| END { |
| printf "%-30s %s %s\n", "Rule", "Fire", "Miss"; |
| for (i in ruleCount) { |
| printf "%-30s %5d %5d\n", i, ruleCount[i], ruleMiss[i]; |
| } |
| } ' FarragoTrace.log</code></pre> |
| </blockquote></div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>call</code> - Rule call which has been determined to match all operands of |
| this rule</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>whether this RelOptRule matches a given RelOptRuleCall</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="onMatch(org.apache.calcite.plan.RelOptRuleCall)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>onMatch</h4> |
| <pre class="methodSignature">public abstract void onMatch​(<a href="RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a> call)</pre> |
| <div class="block">Receives notification about a rule match. At the time that this method is |
| called, <a href="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="RelOptRuleCall.html#transformTo(org.apache.calcite.rel.RelNode,java.util.Map)"><code>RelOptRuleCall.transformTo(org.apache.calcite.rel.RelNode, java.util.Map<org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode>)</code></a> to |
| register the expression.</p></div> |
| <dl> |
| <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="#matches(org.apache.calcite.plan.RelOptRuleCall)"><code>matches(RelOptRuleCall)</code></a></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="getOutConvention()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>getOutConvention</h4> |
| <pre class="methodSignature">public <a href="Convention.html" title="interface in org.apache.calcite.plan">Convention</a> getOutConvention()</pre> |
| <div class="block">Returns the convention of the result of firing this rule, null if |
| not known.</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Convention of the result of firing this rule, null if |
| not known</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="getOutTrait()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>getOutTrait</h4> |
| <pre class="methodSignature">public <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> getOutTrait()</pre> |
| <div class="block">Returns the trait which will be modified as a result of firing this rule, |
| or null if the rule is not a converter rule.</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Trait which will be modified as a result of firing this rule, |
| or null if the rule is not a converter rule</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="toString()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>toString</h4> |
| <pre class="methodSignature">public final java.lang.String toString()</pre> |
| <div class="block">Returns the description of this rule. |
| |
| <p>It must be unique (for rules that are not equal) and must consist of |
| only the characters A-Z, a-z, 0-9, '_', '.', '(', ')'. It must start with |
| a letter.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Overrides:</span></dt> |
| <dd><code>toString</code> in class <code>java.lang.Object</code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="convert(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTraitSet)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>convert</h4> |
| <pre class="methodSignature">public static <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a> convert​(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a> rel, |
| <a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a> toTraits)</pre> |
| <div class="block">Converts a relation expression to a given set of traits, if it does not |
| already have those traits.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>rel</code> - Relational expression to convert</dd> |
| <dd><code>toTraits</code> - desired traits</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>a relational expression with the desired traits; never null</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="convert(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTrait)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>convert</h4> |
| <pre class="methodSignature">public static <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a> convert​(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a> rel, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> toTrait)</pre> |
| <div class="block">Converts one trait of a relational expression, if it does not |
| already have that trait.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>rel</code> - Relational expression to convert</dd> |
| <dd><code>toTrait</code> - Desired trait</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>a relational expression with the desired trait; never null</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="convertList(java.util.List,org.apache.calcite.plan.RelTrait)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>convertList</h4> |
| <pre class="methodSignature">protected static java.util.List<<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> convertList​(java.util.List<<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>> rels, |
| <a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a> trait)</pre> |
| <div class="block">Converts a list of relational expressions.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>rels</code> - Relational expressions</dd> |
| <dd><code>trait</code> - Trait to add to each relational expression</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>List of converted relational expressions, never null</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="guessDescription(java.lang.String)"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>guessDescription</h4> |
| <pre class="methodSignature">static java.lang.String guessDescription​(java.lang.String className)</pre> |
| <div class="block">Deduces a name for a rule by taking the name of its class and returning |
| the segment after the last '.' or '$'. |
| |
| <p>Examples: |
| <ul> |
| <li>"com.foo.Bar" yields "Bar";</li> |
| <li>"com.flatten.Bar$Baz" yields "Baz";</li> |
| <li>"com.foo.Bar$1" yields "1" (which as an integer is an invalid |
| name, and writer of the rule is encouraged to give it an |
| explicit name).</li> |
| </ul></div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>className</code> - Name of the rule's class</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>Last segment of the class</dd> |
| </dl> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </main> |
| <!-- ========= END OF CLASS DATA ========= --> |
| <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="class-use/RelOptRule.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../help-doc.html">Help</a></li> |
| </ul> |
| </div> |
| <div class="subNav"> |
| <ul class="navList" id="allclasses_navbar_bottom"> |
| <li><a href="../../../../allclasses.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_bottom"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| </div> |
| <div> |
| <ul class="subNavList"> |
| <li>Summary: </li> |
| <li><a href="#nested.class.summary">Nested</a> | </li> |
| <li><a href="#field.summary">Field</a> | </li> |
| <li><a href="#constructor.summary">Constr</a> | </li> |
| <li><a href="#method.summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li><a href="#field.detail">Field</a> | </li> |
| <li><a href="#constructor.detail">Constr</a> | </li> |
| <li><a href="#method.detail">Method</a></li> |
| </ul> |
| </div> |
| <a id="skip.navbar.bottom"> |
| <!-- --> |
| </a></div> |
| <!-- ======== END OF BOTTOM NAVBAR ======= --> |
| </nav> |
| <p class="legalCopy"><small>Copyright © 2012–2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p> |
| </footer> |
| </body> |
| </html> |