>From Preetham Poluparthi <[email protected]>:
Preetham Poluparthi has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20589?usp=email )
Change subject: [ASTERIXDB-3632]: Fix self-join query parsing in index advisor
......................................................................
[ASTERIXDB-3632]: Fix self-join query parsing in index advisor
- user model changes: no
- storage format changes: no
- interface changes: no
Ext-ref: MB-69430
Details:
Earlier, queries containing self joins were not processed properly by the
advisor. This update adds proper parsing and handling for self-join queries so
index recommendations are generated accurately.
Change-Id: Idf20b4c16d729c225798398e5985fc88f07e6bd0
---
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndexProvider.java
1 file changed, 11 insertions(+), 8 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/89/20589/1
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndexProvider.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndexProvider.java
index cda2c02..35a8358 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndexProvider.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndexProvider.java
@@ -40,7 +40,6 @@
import org.apache.asterix.om.constants.AsterixConstantValue;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.utils.Pair;
import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
import
org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
import
org.apache.hyracks.algebricks.core.algebra.expressions.IAlgebricksConstantValue;
@@ -119,7 +118,7 @@
}
private void addSingleDataSourceIndexes(List<AdvisorScanPlanNode>
scanPlanNodes) {
- Map<DatasetFullyQualifiedName, Pair<DataSourceScanOperator,
Set<List<String>>>> singleDataSourceFieldNamesMap =
+ Map< DataSourceScanOperator, Set<List<String>>>
singleDataSourceFieldNamesMap =
new HashMap<>();
for (AdvisorScanPlanNode scanPlanNode : scanPlanNodes) {
DataSourceScanOperator scanOperator =
scanPlanNode.getScanOperator();
@@ -138,20 +137,24 @@
}
}
- singleDataSourceFieldNamesMap.put(fullyQualifiedName, new
Pair<>(scanOperator, datasetFieldNames));
+ singleDataSourceFieldNamesMap.put(scanOperator, datasetFieldNames);
}
- for (Map.Entry<DatasetFullyQualifiedName, Pair<DataSourceScanOperator,
Set<List<String>>>> entry : singleDataSourceFieldNamesMap
+ for (Map.Entry<DataSourceScanOperator, Set<List<String>>> entry :
singleDataSourceFieldNamesMap
.entrySet()) {
- DatasetFullyQualifiedName qualifiedName = entry.getKey();
- Set<List<String>> fieldNames = entry.getValue().getSecond();
- DataSourceScanOperator scanOperator = entry.getValue().getFirst();
+ DataSourceScanOperator scanOperator = entry.getKey();
+ Set<List<String>> fieldNames = entry.getValue();
+ if (!(scanOperator.getDataSource() instanceof DatasetDataSource
dataSource)) {
+ continue;
+ }
- if (((DatasetDataSource)
scanOperator.getDataSource()).getDataset().getDatasetDetails()
+ if (dataSource.getDataset().getDatasetDetails()
.getDatasetType() != DatasetConfig.DatasetType.INTERNAL) {
continue;
}
+ DatasetFullyQualifiedName qualifiedName =
dataSource.getDataset().getDatasetFullyQualifiedName();
+
List<List<String>> primaryKeys =
((InternalDatasetDetails) ((DatasetDataSource)
scanOperator.getDataSource()).getDataset()
.getDatasetDetails()).getPrimaryKey();
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20589?usp=email
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: Idf20b4c16d729c225798398e5985fc88f07e6bd0
Gerrit-Change-Number: 20589
Gerrit-PatchSet: 1
Gerrit-Owner: Preetham Poluparthi <[email protected]>