[NO ISSUE][COMP] Remove accessed dataset tracking
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Remove accessed dataset tracking from metadata provider
Change-Id: I0872330f4645d35a7db21c67cd22c255168c2ec9
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9523
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
index c459547..974cd9e 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
@@ -71,14 +71,7 @@
}
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
- Pair<DataverseName, String> datasetReference = FunctionUtil.parseDatasetFunctionArguments(f);
- DataverseName dataverseName = datasetReference.first;
- String datasetName = datasetReference.second;
- Dataset dataset = metadataProvider.findDataset(dataverseName, datasetName);
- if (dataset == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, unnest.getSourceLocation(),
- datasetName, dataverseName);
- }
+ Dataset dataset = fetchDataset(metadataProvider, f);
DataSourceId dsid = new DataSourceId(dataset.getDataverseName(), dataset.getDatasetName());
List<LogicalVariable> variables = new ArrayList<>();
if (dataset.getDatasetType() == DatasetType.INTERNAL) {
@@ -123,21 +116,35 @@
@Override
public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env, IMetadataProvider<?, ?> mp)
throws AlgebricksException {
- AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expression;
+ AbstractFunctionCallExpression datasetFnCall = (AbstractFunctionCallExpression) expression;
MetadataProvider metadata = (MetadataProvider) mp;
- Pair<DataverseName, String> datasetInfo = FunctionUtil.parseDatasetFunctionArguments(f);
- DataverseName dataverseName = datasetInfo.first;
- String datasetName = datasetInfo.second;
- Dataset dataset = metadata.findDataset(dataverseName, datasetName);
+ Dataset dataset = fetchDataset(metadata, datasetFnCall);
+ IAType type = metadata.findType(dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
+ if (type == null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, datasetFnCall.getSourceLocation(),
+ "No type for dataset " + dataset.getDatasetName());
+ }
+ return type;
+ }
+
+ public static Dataset fetchDataset(MetadataProvider metadataProvider, AbstractFunctionCallExpression datasetFnCall)
+ throws CompilationException {
+ Pair<DataverseName, String> datasetReference = FunctionUtil.parseDatasetFunctionArguments(datasetFnCall);
+ DataverseName dataverseName = datasetReference.first;
+ String datasetName = datasetReference.second;
+ Dataset dataset;
+ try {
+ dataset = metadataProvider.findDataset(dataverseName, datasetName);
+ } catch (CompilationException e) {
+ throw e;
+ } catch (AlgebricksException e) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, e, datasetFnCall.getSourceLocation(),
+ e.getMessage());
+ }
if (dataset == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, f.getSourceLocation(), datasetName,
- dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, datasetFnCall.getSourceLocation(),
+ datasetName, dataverseName);
}
- String tn = dataset.getItemTypeName();
- IAType t2 = metadata.findType(dataset.getItemTypeDataverseName(), tn);
- if (t2 == null) {
- throw new AlgebricksException("No type for dataset " + datasetName);
- }
- return t2;
+ return dataset;
}
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
index cf8469f..291bcd0 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
@@ -159,7 +159,6 @@
if (dataset == null) {
throw createUnresolvableError(dataverseName, datasetName, sourceLoc);
}
- metadataProvider.addAccessedDataset(dataset);
List<Expression> argList = new ArrayList<>(2);
argList.add(new LiteralExpr(new StringLiteral(dataset.getDataverseName().getCanonicalForm())));
argList.add(new LiteralExpr(new StringLiteral(dataset.getDatasetName())));
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
index 075c2a8..e2505b7 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
@@ -22,14 +22,11 @@
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.Set;
import org.apache.asterix.common.cluster.IClusterStateManager;
import org.apache.asterix.common.config.DatasetConfig.DatasetType;
@@ -171,7 +168,6 @@
private final IFunctionManager functionManager;
private final LockList locks;
private final Map<String, Object> config;
- private final Set<Dataset> txnAccessedDatasets;
private Dataverse defaultDataverse;
private MetadataTransactionContext mdTxnCtx;
@@ -201,7 +197,6 @@
functionManager = ((IFunctionExtensionManager) appCtx.getExtensionManager()).getFunctionManager();
locks = new LockList();
config = new HashMap<>();
- txnAccessedDatasets = new HashSet<>();
}
@SuppressWarnings("unchecked")
@@ -262,7 +257,6 @@
public void setMetadataTxnContext(MetadataTransactionContext mdTxnCtx) {
this.mdTxnCtx = mdTxnCtx;
- txnAccessedDatasets.clear();
}
public MetadataTransactionContext getMetadataTxnContext() {
@@ -1750,14 +1744,6 @@
return appCtx.getCompressionManager();
}
- public void addAccessedDataset(Dataset dataset) {
- txnAccessedDatasets.add(dataset);
- }
-
- public Set<Dataset> getAccessedDatasets() {
- return Collections.unmodifiableSet(txnAccessedDatasets);
- }
-
public void validateDataverseName(DataverseName dataverseName, SourceLocation sourceLoc)
throws AlgebricksException {
int totalLengthUTF8 = 0;