blob: 4892df6be7196d32ff724cc3d5a1d6d35b02dd8f [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>org.apache.drill.exec.planner.index (Drill : 1.20.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="org.apache.drill.exec.planner.index (Drill : 1.20.3 API)";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.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">
<li><a href="../../../../../../org/apache/drill/exec/planner/fragment/contrib/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../../../org/apache/drill/exec/planner/index/generators/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/drill/exec/planner/index/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Package" class="title">Package&nbsp;org.apache.drill.exec.planner.index</h1>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation">
<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/FunctionalIndexInfo.html" title="interface in org.apache.drill.exec.planner.index">FunctionalIndexInfo</a></td>
<td class="colLast">
<div class="block">FunctionalIndexInfo is to collect Functional fields in IndexDescriptor, derive information needed for index plan,
e.g.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexCallContext.html" title="interface in org.apache.drill.exec.planner.index">IndexCallContext</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexCollection.html" title="interface in org.apache.drill.exec.planner.index">IndexCollection</a></td>
<td class="colLast">
<div class="block">Interface used to describe an index collection</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexDefinition.html" title="interface in org.apache.drill.exec.planner.index">IndexDefinition</a></td>
<td class="colLast">
<div class="block">Top level interface used to define an index.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexDescriptor.html" title="interface in org.apache.drill.exec.planner.index">IndexDescriptor</a></td>
<td class="colLast">
<div class="block">IndexDefinition + functions to access materialized index(index table/scan, etc)</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexDiscover.html" title="interface in org.apache.drill.exec.planner.index">IndexDiscover</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexDiscoverable.html" title="interface in org.apache.drill.exec.planner.index">IndexDiscoverable</a></td>
<td class="colLast">
<div class="block">SchemaFactory of a storage plugin that can used to store index tables should expose this interface to allow
IndexDiscovers discovering the index table without adding dependency to the storage plugin.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexProperties.html" title="interface in org.apache.drill.exec.planner.index">IndexProperties</a></td>
<td class="colLast">
<div class="block">IndexProperties encapsulates the various metrics of a single index that are related to
the current query.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexStatistics.html" title="interface in org.apache.drill.exec.planner.index">IndexStatistics</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/Statistics.html" title="interface in org.apache.drill.exec.planner.index">Statistics</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/StatisticsPayload.html" title="interface in org.apache.drill.exec.planner.index">StatisticsPayload</a></td>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/AbstractIndexCollection.html" title="class in org.apache.drill.exec.planner.index">AbstractIndexCollection</a></td>
<td class="colLast">
<div class="block">Abstract base class for Index collection (collection of Index descriptors)</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/AbstractIndexDescriptor.html" title="class in org.apache.drill.exec.planner.index">AbstractIndexDescriptor</a></td>
<td class="colLast">
<div class="block">Abstract base class for an Index descriptor</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/AbstractIndexStatistics.html" title="class in org.apache.drill.exec.planner.index">AbstractIndexStatistics</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/CollationContext.html" title="class in org.apache.drill.exec.planner.index">CollationContext</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/DrillIndexCollection.html" title="class in org.apache.drill.exec.planner.index">DrillIndexCollection</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/DrillIndexDefinition.html" title="class in org.apache.drill.exec.planner.index">DrillIndexDefinition</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/DrillIndexDescriptor.html" title="class in org.apache.drill.exec.planner.index">DrillIndexDescriptor</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/ExprToRex.html" title="class in org.apache.drill.exec.planner.index">ExprToRex</a></td>
<td class="colLast">
<div class="block">Convert a logicalExpression to RexNode, notice the inputRel could be in an old plan, but newRowType is the newly built rowType
that the new RexNode will be applied upon, so when reference fields, use newRowType, when need cluster, plannerSetting, etc, use old inputRel</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/FindFiltersForCollation.html" title="class in org.apache.drill.exec.planner.index">FindFiltersForCollation</a></td>
<td class="colLast">
<div class="block">A visitor class that analyzes a filter condition (typically an index condition)
and a supplied input collation and determines what the output collation would be
after applying the filter.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/FunctionalIndexHelper.html" title="class in org.apache.drill.exec.planner.index">FunctionalIndexHelper</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexableExprMarker.html" title="class in org.apache.drill.exec.planner.index">IndexableExprMarker</a></td>
<td class="colLast">
<div class="block">The filter expressions that could be indexed
Other than SchemaPaths, which represent columns of a table and could be indexed,
we consider only function expressions, and specifically, CAST function.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexConditionInfo.html" title="class in org.apache.drill.exec.planner.index">IndexConditionInfo</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexConditionInfo.Builder.html" title="class in org.apache.drill.exec.planner.index">IndexConditionInfo.Builder</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexDiscoverBase.html" title="class in org.apache.drill.exec.planner.index">IndexDiscoverBase</a></td>
<td class="colLast">
<div class="block">IndexDiscoverBase is the layer to read index configurations of tables on storage plugins,
then based on the properties it collected, get the StoragePlugin from StoragePluginRegistry,
together with indexes information, build an IndexCollection</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexDiscoverFactory.html" title="class in org.apache.drill.exec.planner.index">IndexDiscoverFactory</a></td>
<td class="colLast">
<div class="block">With this factory, we allow user to load a different indexDiscover class to obtain index information</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexGroup.html" title="class in org.apache.drill.exec.planner.index">IndexGroup</a></td>
<td class="colLast">
<div class="block">Encapsulates one or more IndexProperties representing (non)covering or intersecting indexes.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexLogicalPlanCallContext.html" title="class in org.apache.drill.exec.planner.index">IndexLogicalPlanCallContext</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexPhysicalPlanCallContext.html" title="class in org.apache.drill.exec.planner.index">IndexPhysicalPlanCallContext</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexPlanUtils.html" title="class in org.apache.drill.exec.planner.index">IndexPlanUtils</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexSelector.html" title="class in org.apache.drill.exec.planner.index">IndexSelector</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexSelector.DrillIndexProperties.html" title="class in org.apache.drill.exec.planner.index">IndexSelector.DrillIndexProperties</a></td>
<td class="colLast">
<div class="block">IndexProperties encapsulates the various metrics of a single index that are related to
the current query.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexSelector.IndexComparator.html" title="class in org.apache.drill.exec.planner.index">IndexSelector.IndexComparator</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/MapRDBFunctionalIndexInfo.html" title="class in org.apache.drill.exec.planner.index">MapRDBFunctionalIndexInfo</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/MapRDBIndexDescriptor.html" title="class in org.apache.drill.exec.planner.index">MapRDBIndexDescriptor</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/MapRDBIndexDiscover.html" title="class in org.apache.drill.exec.planner.index">MapRDBIndexDiscover</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/MapRDBStatistics.html" title="class in org.apache.drill.exec.planner.index">MapRDBStatistics</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/MapRDBStatisticsPayload.html" title="class in org.apache.drill.exec.planner.index">MapRDBStatisticsPayload</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/PathInExpr.html" title="class in org.apache.drill.exec.planner.index">PathInExpr</a></td>
<td class="colLast">
<div class="block">Class PathInExpr is to recursively analyze a expression trees with a map of
indexed expression collected from indexDescriptor, e.g.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/RexSeparator.html" title="class in org.apache.drill.exec.planner.index">RexSeparator</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/RexToExpression.html" title="class in org.apache.drill.exec.planner.index">RexToExpression</a></td>
<td class="colLast">
<div class="block">This class is an enhanced version for DrillOptiq,
1, it can convert expressions in one more layer(project that have expression) above project-scan,
while DrillOptiq can only convert expressions directly reference scan's row type,
2, it can record the generated LogicalExpression of each rexNode in the rexNode tree for future reference
this result can serve future rewrite that need to locate particular LogicalExpressions</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/RexToExpression.RexToDrillExt.html" title="class in org.apache.drill.exec.planner.index">RexToExpression.RexToDrillExt</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/SimpleRexRemap.html" title="class in org.apache.drill.exec.planner.index">SimpleRexRemap</a></td>
<td class="colLast">
<div class="block">Rewrite RexNode with these policies:
1) field renamed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/SimpleRexRemap.FieldsMarker.html" title="class in org.apache.drill.exec.planner.index">SimpleRexRemap.FieldsMarker</a></td>
<td class="colLast">
<div class="block">This class go through the RexNode, collect all the fieldNames, mark starting positions(RexNode) of fields
so this information can be used later e,.g.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/SimpleRexRemap.RexReplace.html" title="class in org.apache.drill.exec.planner.index">SimpleRexRemap.RexReplace</a></td>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Summary table, listing enums, and an explanation">
<caption><span>Enum Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Enum</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexCollection.IndexCollectionType.html" title="enum in org.apache.drill.exec.planner.index">IndexCollection.IndexCollectionType</a></td>
<td class="colLast">
<div class="block">Types of an index collections: NATIVE_SECONDARY_INDEX_COLLECTION, EXTERNAL_SECONDARY_INDEX_COLLECTION</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexDefinition.IndexType.html" title="enum in org.apache.drill.exec.planner.index">IndexDefinition.IndexType</a></td>
<td class="colLast">
<div class="block">Types of an index: PRIMARY_KEY_INDEX, NATIVE_SECONDARY_INDEX, EXTERNAL_SECONDARY_INDEX</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/IndexPlanUtils.ConditionIndexed.html" title="enum in org.apache.drill.exec.planner.index">IndexPlanUtils.ConditionIndexed</a></td>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Exception Summary table, listing exceptions, and an explanation">
<caption><span>Exception Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Exception</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/drill/exec/planner/index/InvalidIndexDefinitionException.html" title="class in org.apache.drill.exec.planner.index">InvalidIndexDefinitionException</a></td>
<td class="colLast">
<div class="block">An InvalidIndexDefinitionException may be thrown if Drill does not recognize the
type or expression of the index during the index discovery phase</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.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">
<li><a href="../../../../../../org/apache/drill/exec/planner/fragment/contrib/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../../../org/apache/drill/exec/planner/index/generators/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/drill/exec/planner/index/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 1970 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>