>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