This is an automated email from the ASF dual-hosted git repository.

alsuliman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new e590d040a4 [ASTERIXDB-3259][MTD] Add metadata API to get the databases
e590d040a4 is described below

commit e590d040a4fec75d3d1f41ece8e09beebc982498
Author: Ali Alsuliman <[email protected]>
AuthorDate: Sun Oct 15 15:39:18 2023 -0700

    [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]>
---
 .../org/apache/asterix/app/translator/QueryTranslator.java  |  7 ++++---
 .../java/org/apache/asterix/metadata/MetadataManager.java   |  9 +++++++++
 .../main/java/org/apache/asterix/metadata/MetadataNode.java | 13 +++++++++++++
 .../org/apache/asterix/metadata/api/IMetadataManager.java   |  2 ++
 .../java/org/apache/asterix/metadata/api/IMetadataNode.java |  2 ++
 5 files changed, 30 insertions(+), 3 deletions(-)

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 f404ca5f6a..a79226792b 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 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
             }
 
             // #. 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 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
             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 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
     }
 
     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 ed3474d777..2c71084cc3 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
@@ -255,6 +255,15 @@ public abstract class MetadataManager implements 
IMetadataManager {
         }
     }
 
+    @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 {
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 5383ac96ba..0571eff339 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
@@ -1114,6 +1114,19 @@ public class MetadataNode implements IMetadataNode {
         modifyMetadataIndex(Operation.DELETE, txnId, metadataIndex, tuple);
     }
 
+    @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 {
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 f3cc811f6f..d5e01578fa 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 @@ public interface IMetadataManager extends 
IMetadataBootstrap {
      */
     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 a4f2ca7bdc..0d753d8978 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 @@ public interface IMetadataNode extends Remote, Serializable 
{
     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.

Reply via email to