>From Ali Alsuliman <[email protected]>: Ali Alsuliman has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17867 )
Change subject: [ASTERIXDB-3259][MTD] Add metadata API to get the databases ...................................................................... [ASTERIXDB-3259][MTD] Add metadata API to get the databases - user model changes: no - storage format changes: no - interface changes: yes Details: Add metadata API to get the databases. Change-Id: Ia3767125e349d42bccabfc43e3f9fdb4506cc199 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17867 Integration-Tests: Jenkins <[email protected]> Tested-by: Ali Alsuliman <[email protected]> Reviewed-by: Ali Alsuliman <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> --- 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/MetadataManager.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java 5 files changed, 51 insertions(+), 3 deletions(-) Approvals: Murtadha Hubail: Looks good to me, approved Ali Alsuliman: Looks good to me, but someone else must approve; Verified Jenkins: Verified 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 f404ca5..a792267 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 @@ -2015,6 +2015,7 @@ } // #. prepare jobs which will drop corresponding libraries + //TODO(DB): library database List<Library> libraries = MetadataManager.INSTANCE.getDatabaseLibraries(mdTxnCtx, databaseName); for (Library library : libraries) { jobsToExecute.add(ExternalLibraryJobUtils.buildDropLibraryJobSpec(library.getDataverseName(), @@ -2214,7 +2215,7 @@ List<Library> libraries = MetadataManager.INSTANCE.getDataverseLibraries(mdTxnCtx, databaseName, dataverseName); for (Library library : libraries) { - //TODO(DB): + //TODO(DB): library database jobsToExecute.add(ExternalLibraryJobUtils.buildDropLibraryJobSpec(dataverseName, library.getName(), metadataProvider)); } @@ -2310,12 +2311,12 @@ } protected void validateDatabaseStateBeforeDrop(MetadataProvider metadataProvider, Database database, - SourceLocation sourceLoc) throws AlgebricksException { + SourceLocation sourceLoc) throws AlgebricksException, HyracksDataException { // may be overridden by product extensions for additional checks before dropping the database } protected void validateDataverseStateBeforeDrop(MetadataProvider metadataProvider, Dataverse dataverse, - SourceLocation sourceLoc) throws AlgebricksException { + SourceLocation sourceLoc) throws AlgebricksException, HyracksDataException { // may be overridden by product extensions for additional checks before dropping the dataverse } diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java index ed3474d..2c71084 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java @@ -256,6 +256,15 @@ } @Override + public List<Database> getDatabases(MetadataTransactionContext ctx) throws AlgebricksException { + try { + return metadataNode.getDatabases(ctx.getTxnId()); + } catch (RemoteException e) { + throw new MetadataException(ErrorCode.REMOTE_EXCEPTION_WHEN_CALLING_METADATA_NODE, e); + } + } + + @Override public List<Dataverse> getDataverses(MetadataTransactionContext ctx) throws AlgebricksException { try { return metadataNode.getDataverses(ctx.getTxnId()); diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java index 5383ac9..0571eff 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java @@ -1115,6 +1115,19 @@ } @Override + public List<Database> getDatabases(TxnId txnId) throws AlgebricksException, RemoteException { + try { + DatabaseTupleTranslator tupleReaderWriter = tupleTranslatorProvider.getDatabaseTupleTranslator(false); + IValueExtractor<Database> valueExtractor = new MetadataEntityValueExtractor<>(tupleReaderWriter); + List<Database> results = new ArrayList<>(); + searchIndex(txnId, mdIndexesProvider.getDatabaseEntity().getIndex(), null, valueExtractor, results); + return results; + } catch (HyracksDataException e) { + throw new AlgebricksException(e); + } + } + + @Override public List<Dataverse> getDataverses(TxnId txnId) throws AlgebricksException { try { DataverseTupleTranslator tupleReaderWriter = tupleTranslatorProvider.getDataverseTupleTranslator(false); diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java index f3cc811..d5e0157 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java @@ -108,6 +108,8 @@ */ void addDataverse(MetadataTransactionContext ctx, Dataverse dataverse) throws AlgebricksException; + List<Database> getDatabases(MetadataTransactionContext ctx) throws AlgebricksException; + /** * Retrieves all dataverses * diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java index a4f2ca7..0d753d8 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java @@ -130,6 +130,8 @@ Dataverse getDataverse(TxnId txnId, String database, DataverseName dataverseName) throws AlgebricksException, RemoteException; + List<Database> getDatabases(TxnId txnId) throws AlgebricksException, RemoteException; + /** * Retrieves all dataverses, acquiring local locks on behalf of the given * transaction id. -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17867 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: Ia3767125e349d42bccabfc43e3f9fdb4506cc199 Gerrit-Change-Number: 17867 Gerrit-PatchSet: 2 Gerrit-Owner: Ali Alsuliman <[email protected]> Gerrit-Reviewer: Ali Alsuliman <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-CC: Till Westmann <[email protected]> Gerrit-MessageType: merged
