>From Janhavi Tripurwar <[email protected]>:
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 <[email protected]>
Gerrit-MessageType: newchange