>From Hussain Towaileb <[email protected]>:
Hussain Towaileb has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20953?usp=email )
Change subject: [NO ISSUE][EXT]: Make catalog methods extendable
......................................................................
[NO ISSUE][EXT]: Make catalog methods extendable
Ext-ref: MB-70760
Change-Id: Ie4328e05b951500da6272bb6a013fd3a7a0dcd19
---
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/handlers/IcebergCatalogStatementHandler.java
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
M
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
4 files changed, 31 insertions(+), 15 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/53/20953/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 de65cb0..807425e 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
@@ -1073,7 +1073,7 @@
ExternalDataUtils.normalize(properties);
ExternalDataUtils.validate(properties);
ExternalDataUtils.validateType(properties, (ARecordType)
itemType);
- validateIfIcebergTable(metadataProvider, properties,
mdTxnCtx, sourceLoc);
+ validateIfIcebergTable(metadataProvider,
requestParameters, properties, mdTxnCtx, sourceLoc);
validateExternalDatasetProperties(externalDetails,
properties, dd.getSourceLocation(), mdTxnCtx,
appCtx, metadataProvider);
datasetDetails = new
ExternalDatasetDetails(externalDetails.getAdapter(), properties, new Date(),
@@ -1186,8 +1186,9 @@
return Optional.of(dataset);
}
- protected void validateIfIcebergTable(MetadataProvider metadataProvider,
Map<String, String> properties,
- MetadataTransactionContext mdTxnCtx, SourceLocation srcLoc) throws
AlgebricksException {
+ protected void validateIfIcebergTable(MetadataProvider metadataProvider,
IRequestParameters requestParameters,
+ Map<String, String> properties, MetadataTransactionContext
mdTxnCtx, SourceLocation srcLoc)
+ throws AlgebricksException {
IcebergStatementValidationHelper.validateIfIcebergTable(appCtx,
metadataProvider, mdTxnCtx, properties, srcLoc);
}
@@ -5885,8 +5886,8 @@
protected void handleCatalogStatement(Statement.Kind kind,
MetadataProvider metadataProvider, Statement stmt,
IHyracksClientConnection hcc, IRequestParameters
requestParameters) throws Exception {
- IcebergCatalogStatementHandler statement = new
IcebergCatalogStatementHandler(kind, metadataProvider, stmt,
- Creator.DEFAULT_CREATOR, sessionConfig, lockUtil, lockManager);
+ IcebergCatalogStatementHandler statement = new
IcebergCatalogStatementHandler(appCtx, kind, metadataProvider,
+ stmt, Creator.DEFAULT_CREATOR, sessionConfig, lockUtil,
lockManager, requestParameters);
statement.handle();
}
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/handlers/IcebergCatalogStatementHandler.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/handlers/IcebergCatalogStatementHandler.java
index e0e9d02..03454ef 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/handlers/IcebergCatalogStatementHandler.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/handlers/IcebergCatalogStatementHandler.java
@@ -19,12 +19,14 @@
package org.apache.asterix.app.translator.handlers;
import static org.apache.asterix.app.translator.QueryTranslator.abort;
+import static org.apache.asterix.common.exceptions.ErrorCode.UNKNOWN_CATALOG;
import java.util.HashMap;
import java.util.Map;
import org.apache.asterix.common.api.IMetadataLockManager;
import org.apache.asterix.common.config.CatalogConfig;
+import org.apache.asterix.common.dataflow.ICcApplicationContext;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.metadata.IMetadataLockUtil;
@@ -47,22 +49,26 @@
import org.apache.asterix.metadata.entities.IcebergCatalogDetails;
import org.apache.asterix.metadata.utils.Creator;
import org.apache.asterix.object.base.AdmObjectNode;
+import org.apache.asterix.translator.IRequestParameters;
import org.apache.asterix.translator.SessionConfig;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
public class IcebergCatalogStatementHandler {
+ protected final ICcApplicationContext appCtx;
+ protected final MetadataProvider metadataProvider;
private final Statement.Kind kind;
- private final MetadataProvider metadataProvider;
private final CatalogStatement statement;
private final Creator creator;
private final SessionConfig sessionConfig;
private final IMetadataLockUtil lockUtil;
private final IMetadataLockManager lockManager;
+ protected IRequestParameters requestParameters;
- public IcebergCatalogStatementHandler(Statement.Kind kind,
MetadataProvider metadataProvider, Statement statement,
- Creator creator, SessionConfig sessionConfig, IMetadataLockUtil
lockUtil,
- IMetadataLockManager lockManager) {
+ public IcebergCatalogStatementHandler(ICcApplicationContext ccAppCtx,
Statement.Kind kind,
+ MetadataProvider metadataProvider, Statement statement, Creator
creator, SessionConfig sessionConfig,
+ IMetadataLockUtil lockUtil, IMetadataLockManager lockManager,
IRequestParameters requestParameters) {
+ this.appCtx = ccAppCtx;
this.kind = kind;
this.metadataProvider = metadataProvider;
this.statement = (CatalogStatement) statement;
@@ -70,6 +76,7 @@
this.sessionConfig = sessionConfig;
this.lockUtil = lockUtil;
this.lockManager = lockManager;
+ this.requestParameters = requestParameters;
}
public void handle() throws Exception {
@@ -99,7 +106,7 @@
}
}
- private boolean doHandleCreate(CatalogCreateStatement statement) throws
Exception {
+ protected boolean doHandleCreate(CatalogCreateStatement statement) throws
Exception {
MetadataTransactionContext mdTxnCtx =
MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
try {
@@ -137,17 +144,26 @@
}
lockUtil.dropCatalogBegin(lockManager, metadataProvider.getLocks(),
catalogName);
try {
- doDropCatalog(dropStatement);
+ doHandleDrop(dropStatement);
} finally {
metadataProvider.getLocks().unlock();
}
}
- private boolean doDropCatalog(CatalogDropStatement statement) throws
Exception {
+ protected boolean doHandleDrop(CatalogDropStatement statement) throws
Exception {
MetadataTransactionContext mdTxnCtx =
MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
try {
String catalogName = statement.getCatalogName();
+ Catalog catalog = MetadataManager.INSTANCE.getCatalog(mdTxnCtx,
catalogName);
+ if (catalog == null) {
+ if (statement.getIfExists()) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return false;
+ } else {
+ throw CompilationException.create(UNKNOWN_CATALOG,
catalogName);
+ }
+ }
MetadataManager.INSTANCE.dropCatalog(mdTxnCtx, catalogName);
beforeDropTxnCommit(metadataProvider, creator,
EntityDetails.newCatalog(catalogName));
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index 23105fd..b08750c 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -285,7 +285,7 @@
private static final String CONFIG = "CONFIG";
private static final String STATISTICS = "STATISTICS";
private static final String ADVISE = "ADVISE";
- private static final String CATALOG = "CATALOG";
+ protected static final String CATALOG = "CATALOG";
private static final String SOURCE = "SOURCE";
private static final String CASCADE = "CASCADE";
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 6060d94..fa7db2f 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
@@ -3198,8 +3198,7 @@
try {
Catalog catalog = getCatalog(txnId, catalogName);
if (catalog == null) {
- throw new
CompilationException(org.apache.asterix.common.exceptions.ErrorCode.UNKNOWN_CATALOG,
- catalogName);
+ throw CompilationException.create(UNKNOWN_CATALOG,
catalogName);
}
confirmCatalogIsUnusedByCollections(txnId, catalogName);
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20953?usp=email
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: lumina
Gerrit-Change-Id: Ie4328e05b951500da6272bb6a013fd3a7a0dcd19
Gerrit-Change-Number: 20953
Gerrit-PatchSet: 1
Gerrit-Owner: Hussain Towaileb <[email protected]>