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

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

commit 49c645601e62b4c876f1b77e9c8179506760d001
Author: Ali Alsuliman <[email protected]>
AuthorDate: Tue Aug 26 21:13:54 2025 -0700

    [NO ISSUE][OTH] Add extensions for drop transaction pre-commit
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Ext-ref: MB-67991
    
    Change-Id: I419f53c25631377b4aeec55355aca7da3b8fc557
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20277
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Michael Blow <[email protected]>
---
 .../apache/asterix/app/translator/QueryTranslator.java  | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

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 f921ff023d..2b75477c6e 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
@@ -2149,6 +2149,7 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
 
             validateDatasetsStateAfterNamespaceDrop(mdProvider, mdTxnCtx, 
datasets);
 
+            beforeDropTxnCommit(mdProvider, mdTxnCtx, 
EntityDetails.newDatabase(databaseName));
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             return true;
         } catch (Exception e) {
@@ -2334,6 +2335,7 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
             }
 
             validateDatasetsStateAfterNamespaceDrop(metadataProvider, 
mdTxnCtx, datasets);
+            beforeDropTxnCommit(metadataProvider, mdTxnCtx, 
EntityDetails.newDataverse(databaseName, dataverseName));
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             return true;
         } catch (Exception e) {
@@ -2537,6 +2539,8 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
             ds.drop(metadataProvider, mdTxnCtx, jobsToExecute, bActiveTxn, 
progress, hcc, dropCorrespondingNodeGroup,
                     sourceLoc, EnumSet.of(DropOption.IF_EXISTS), 
requestParameters.isForceDropDataset());
 
+            beforeDropTxnCommit(metadataProvider, mdTxnCtx.getValue(),
+                    EntityDetails.newDataset(databaseName, dataverseName, 
datasetName));
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx.getValue());
             return true;
         } catch (Exception e) {
@@ -2656,6 +2660,8 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
                 // #. finally, delete the existing index
                 MetadataManager.INSTANCE.dropIndex(mdTxnCtx, databaseName, 
dataverseName, datasetName, indexName);
             }
+            beforeDropTxnCommit(metadataProvider, mdTxnCtx,
+                    EntityDetails.newIndex(databaseName, dataverseName, 
indexName));
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             return true;
         } catch (Exception e) {
@@ -3170,6 +3176,8 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
                 MetadataManager.INSTANCE.dropDatatype(mdTxnCtx, 
itemTypeDatabaseName,
                         dataset.getItemTypeDataverseName(), 
dataset.getItemTypeName());
             }
+            beforeDropTxnCommit(metadataProvider, mdTxnCtx,
+                    EntityDetails.newView(databaseName, dataverseName, 
viewName));
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             return true;
         } catch (Exception e) {
@@ -3600,6 +3608,8 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
                 MetadataManager.INSTANCE.dropDatatype(mdTxnCtx, 
inlineType.getDatabaseName(),
                         inlineType.getDataverseName(), inlineType.getName());
             }
+            beforeDropTxnCommit(metadataProvider, mdTxnCtx,
+                    EntityDetails.newFunction(databaseName, dataverseName, 
signature.getName(), signature.getArity()));
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             return true;
         } catch (Exception e) {
@@ -4083,6 +4093,8 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
                 throw new CompilationException(ErrorCode.UNKNOWN_SYNONYM, 
stmtSynDrop.getSourceLocation(), synonymName);
             }
             MetadataManager.INSTANCE.dropSynonym(mdTxnCtx, databaseName, 
dataverseName, synonymName);
+            beforeDropTxnCommit(metadataProvider, mdTxnCtx,
+                    EntityDetails.newSynonym(databaseName, dataverseName, 
synonymName));
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             return true;
         } catch (Exception e) {
@@ -6048,6 +6060,11 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
         //no op
     }
 
+    protected void beforeDropTxnCommit(MetadataProvider mdProvider, 
MetadataTransactionContext mdTxnCtx,
+            EntityDetails entityDetails) throws AlgebricksException {
+        //no op
+    }
+
     protected enum CreateResult {
         NOOP,
         CREATED,

Reply via email to