[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;