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.