>From Janhavi Tripurwar <janhavi.tripur...@couchbase.com>:

Janhavi Tripurwar has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20134 )


Change subject: [NO ISSUE]: accessedEntity
......................................................................

[NO ISSUE]: accessedEntity

Change-Id: I4b89112152e7bc53c2987e7fb249b3e3e2c49f46
---
M 
asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppLoadAccessedDataset.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/EntityDetails.java
M 
asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/ExpressionUtils.java
4 files changed, 40 insertions(+), 4 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/34/20134/1

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index 30c1b8b..9af0e10 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -3441,7 +3441,8 @@
                 MetadataManager.INSTANCE.updateFunction(mdTxnCtx, function);
             }

-            beforeTxnCommit(metadataProvider, creator, 
EntityDetails.newFunction(functionSignature));
+            beforeTxnCommit(metadataProvider, creator,
+                    EntityDetails.newFunction(functionSignature, 
Collections.emptyList()));
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             if (LOGGER.isInfoEnabled()) {
                 LOGGER.info("Installed function: " + functionSignature);
diff --git 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/ExpressionUtils.java
 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/ExpressionUtils.java
index a7de541..99fd54a 100644
--- 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/ExpressionUtils.java
+++ 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/ExpressionUtils.java
@@ -315,7 +315,7 @@
     }

     private static void addFunctionAccessedEntity(MetadataProvider 
metadataProvider, FunctionSignature signature) {
-        
metadataProvider.addAccessedEntity(EntityDetails.newFunction(signature));
+        
metadataProvider.addAccessedEntity(EntityDetails.newFunction(signature, 
Collections.emptyList()));
     }

     public static boolean hasFunctionOrViewRecursion(Map<FunctionSignature, 
FunctionDecl> functionDeclMap,
diff --git 
a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppLoadAccessedDataset.java
 
b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppLoadAccessedDataset.java
index 986c3d1..120848d 100644
--- 
a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppLoadAccessedDataset.java
+++ 
b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppLoadAccessedDataset.java
@@ -18,6 +18,7 @@
  */
 package org.apache.asterix.lang.sqlpp.rewrites.visitor;

+import java.util.Collections;
 import java.util.List;
 import java.util.Map;

@@ -98,7 +99,17 @@
             if (declaredFunctions.containsKey(signature)) {
                 return;
             }
-            
context.getMetadataProvider().addAccessedEntity(EntityDetails.newFunction(signature));
+            List<String> entityNameParts = 
signature.getName().equals("storage-size")
+                    ? getFunctionEntityNameParts(expression) : 
Collections.emptyList();
+            
context.getMetadataProvider().addAccessedEntity(EntityDetails.newFunction(signature,
 entityNameParts));
         }
     }
+
+    private List<String> getFunctionEntityNameParts(CallExpr expression) {
+        String databaseName = 
ExpressionUtils.getStringLiteral(expression.getExprList().get(0));
+        String dataverseName = 
ExpressionUtils.getStringLiteral(expression.getExprList().get(1));
+        String datasetName = 
ExpressionUtils.getStringLiteral(expression.getExprList().get(2));
+
+        return List.of(databaseName, dataverseName, datasetName);
+    }
 }
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/EntityDetails.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/EntityDetails.java
index 068fb20..8d2d05b 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/EntityDetails.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/EntityDetails.java
@@ -18,8 +18,10 @@
  */
 package org.apache.asterix.metadata.entities;

+import java.util.List;
 import java.util.Objects;

+import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.common.functions.FunctionConstants;
 import org.apache.asterix.common.functions.FunctionSignature;
 import org.apache.asterix.common.metadata.DataverseName;
@@ -81,14 +83,27 @@
         return new EntityDetails(databaseName, dataverseName, viewName, 
EntityType.VIEW);
     }

-    public static EntityDetails newFunction(FunctionSignature fs) {
+    public static EntityDetails newFunction(FunctionSignature fs, List<String> 
entityNameParts) {
         boolean isBuiltInFunc = isBuiltinFunctionSignature(fs);
+        boolean isStorageSizeFunc = fs.getName().equals("storage-size");
         String databaseName = fs.getDatabaseName();
         String functionName = fs.getName();
         Integer functionArity = fs.getArity();
         DataverseName dataverseName = fs.getDataverseName();
         String functionNameWithArity = getFunctionNameWithArity(functionName, 
functionArity);
         if (isBuiltInFunc) {
+            if (isStorageSizeFunc) {
+                DataverseName dataverseNameForDataset;
+                String databaseNameForDataset = entityNameParts.getFirst();
+                try {
+                    dataverseNameForDataset = 
DataverseName.createFromCanonicalForm(entityNameParts.get(1));
+                } catch (AsterixException e) {
+                    throw new IllegalStateException(e);
+                }
+                String datasetName = entityNameParts.get(2);
+                return new EntityDetails(databaseNameForDataset, 
dataverseNameForDataset, datasetName,
+                        EntityType.DATASET, 3);
+            }
             return new EntityDetails(databaseName, dataverseName, 
functionNameWithArity, EntityType.BUILT_IN_FUNCTION,
                     functionArity);
         }

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20134
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I4b89112152e7bc53c2987e7fb249b3e3e2c49f46
Gerrit-Change-Number: 20134
Gerrit-PatchSet: 1
Gerrit-Owner: Janhavi Tripurwar <janhavi.tripur...@couchbase.com>
Gerrit-MessageType: newchange

Reply via email to