>From Dmitry Lychagin <[email protected]>:

Dmitry Lychagin has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/16129 )


Change subject: [NO ISSUE][COMP] Do not execute DDLs in compile-only mode
......................................................................

[NO ISSUE][COMP] Do not execute DDLs in compile-only mode

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Do not execute DDL statements if "execute query"
  flag is set to false

Change-Id: I6c10bd099f7ec44218eccb38ca08ea9e24e04a55
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
1 file changed, 117 insertions(+), 9 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/29/16129/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 5e4b730..541b1c6 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
@@ -505,7 +505,9 @@
                     case EXTENSION:
                         final ExtensionStatement extStmt = 
(ExtensionStatement) stmt;
                         statementProperties.setName(extStmt.getName());
-                        extStmt.handle(hcc, this, requestParameters, 
metadataProvider, resultSetIdCounter);
+                        if (!isCompileOnly()) {
+                            extStmt.handle(hcc, this, requestParameters, 
metadataProvider, resultSetIdCounter);
+                        }
                         break;
                     default:
                         throw new 
CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, 
stmt.getSourceLocation(),
@@ -610,6 +612,9 @@
         CreateDataverseStatement stmtCreateDataverse = 
(CreateDataverseStatement) stmt;
         DataverseName dvName = stmtCreateDataverse.getDataverseName();
         metadataProvider.validateDataverseName(dvName, 
stmtCreateDataverse.getSourceLocation());
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createDataverseBegin(lockManager, 
metadataProvider.getLocks(), dvName);
         try {
             doCreateDataverseStatement(metadataProvider, stmtCreateDataverse, 
requestParameters);
@@ -713,6 +718,9 @@
         String compactionPolicy = dd.getCompactionPolicy();
         boolean defaultCompactionPolicy = compactionPolicy == null;

+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createDatasetBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, datasetName,
                 itemTypeDataverseName, itemTypeName, itemTypeAnonymous, 
metaItemTypeDataverseName, metaItemTypeName,
                 metaItemTypeAnonymous, nodegroupName, compactionPolicy, 
defaultCompactionPolicy, dd.getDatasetType(),
@@ -1061,6 +1069,9 @@
         
metadataProvider.validateDatabaseObjectName(stmtCreateIndex.getDataverseName(), 
indexName,
                 stmt.getSourceLocation());
         DataverseName dataverseName = 
getActiveDataverseName(stmtCreateIndex.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createIndexBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, datasetName,
                 fullTextConfigName);
         try {
@@ -1391,6 +1402,9 @@
                 stmt.getSourceLocation());
         DataverseName dataverseName = 
getActiveDataverseName(stmtCreateFilter.getDataverseName());

+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createFullTextFilterBegin(lockManager, 
metadataProvider.getLocks(), dataverseName, fullTextFilterName);
         try {
             doCreateFullTextFilter(metadataProvider, stmtCreateFilter, 
dataverseName);
@@ -1459,6 +1473,9 @@
         DataverseName dataverseName = 
getActiveDataverseName(stmtCreateConfig.getDataverseName());
         ImmutableList<String> filterNames = stmtCreateConfig.getFilterNames();

+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createFullTextConfigBegin(lockManager, 
metadataProvider.getLocks(), dataverseName, configName,
                 filterNames);
         try {
@@ -1824,6 +1841,9 @@
         String typeName = stmtCreateType.getIdent().getValue();
         
metadataProvider.validateDatabaseObjectName(stmtCreateType.getDataverseName(), 
typeName, sourceLoc);
         DataverseName dataverseName = 
getActiveDataverseName(stmtCreateType.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         lockUtil.createTypeBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, typeName);
@@ -1877,6 +1897,9 @@
             throw new CompilationException(ErrorCode.COMPILATION_ERROR, 
sourceLoc,
                     dataverseName + " " + dataverse() + " can't be dropped");
         }
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropDataverseBegin(lockManager, metadataProvider.getLocks(), 
dataverseName);
         try {
             doDropDataverse(stmtDropDataverse, metadataProvider, hcc, 
requestParameters);
@@ -2073,6 +2096,9 @@
         String datasetName = stmtDelete.getDatasetName().getValue();
         
metadataProvider.validateDatabaseObjectName(stmtDelete.getDataverseName(), 
datasetName, sourceLoc);
         DataverseName dataverseName = 
getActiveDataverseName(stmtDelete.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropDatasetBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, datasetName);
         try {
             doDropDataset(dataverseName, datasetName, metadataProvider, 
stmtDelete.getIfExists(), hcc,
@@ -2180,6 +2206,9 @@
                 stmtIndexDrop.getIndexName().getValue(), 
stmtIndexDrop.getSourceLocation());
         DataverseName dataverseName = 
getActiveDataverseName(stmtIndexDrop.getDataverseName());
         String datasetName = stmtIndexDrop.getDatasetName().getValue();
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropIndexBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, datasetName);
         try {
             doDropIndex(metadataProvider, stmtIndexDrop, dataverseName, 
datasetName, hcc, requestParameters);
@@ -2362,6 +2391,9 @@
         DataverseName dataverseName = 
getActiveDataverseName(stmtFilterDrop.getDataverseName());
         String fullTextFilterName = stmtFilterDrop.getFilterName();

+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropFullTextFilterBegin(lockManager, 
metadataProvider.getLocks(), dataverseName, fullTextFilterName);
         try {
             doDropFullTextFilter(metadataProvider, stmtFilterDrop, 
dataverseName, fullTextFilterName);
@@ -2402,6 +2434,9 @@
         DataverseName dataverseName = 
getActiveDataverseName(stmtConfigDrop.getDataverseName());
         String configName = stmtConfigDrop.getConfigName();

+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropFullTextConfigBegin(lockManager, 
metadataProvider.getLocks(), dataverseName, configName);
         try {
             doDropFullTextConfig(metadataProvider, stmtConfigDrop, hcc, 
requestParameters);
@@ -2451,6 +2486,9 @@
         String typeName = stmtTypeDrop.getTypeName().getValue();
         
metadataProvider.validateDatabaseObjectName(stmtTypeDrop.getDataverseName(), 
typeName, sourceLoc);
         DataverseName dataverseName = 
getActiveDataverseName(stmtTypeDrop.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         lockUtil.dropTypeBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, typeName);
@@ -2491,6 +2529,9 @@
         SourceLocation sourceLoc = stmtDelete.getSourceLocation();
         String nodegroupName = stmtDelete.getNodeGroupName().getValue();
         metadataProvider.validateDatabaseObjectName(null, nodegroupName, 
sourceLoc);
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         lockManager.acquireNodeGroupWriteLock(metadataProvider.getLocks(), 
nodegroupName);
@@ -2535,6 +2576,9 @@
             viewItemTypeAnonymous = false;
         }

+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createDatasetBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, viewName,
                 viewItemTypeDataverseName, viewItemTypeName, 
viewItemTypeAnonymous, null, null, false, null, null, true,
                 DatasetType.VIEW, null);
@@ -2726,6 +2770,9 @@
         String viewName = stmtDrop.getViewName().getValue();
         
metadataProvider.validateDatabaseObjectName(stmtDrop.getDataverseName(), 
viewName, sourceLoc);
         DataverseName dataverseName = 
getActiveDataverseName(stmtDrop.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropDatasetBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, viewName);
         try {
             doDropView(metadataProvider, stmtDrop, dataverseName, viewName);
@@ -2808,6 +2855,9 @@
             }
         }

+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createFunctionBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, signature.getName(),
                 libraryDataverseName, libraryName);
         try {
@@ -3057,6 +3107,9 @@
                 stmtDropFunction.getSourceLocation());
         DataverseName dataverseName = 
getActiveDataverseName(signature.getDataverseName());
         signature.setDataverseName(dataverseName);
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropFunctionBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, signature.getName());
         try {
             doDropFunction(metadataProvider, stmtDropFunction, signature, 
requestParameters);
@@ -3115,6 +3168,9 @@
             libraryDataverseName = dataverseName;
         }
         String libraryName = cas.getLibraryName();
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createAdapterBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, adapterName,
                 libraryDataverseName, libraryName);
         try {
@@ -3185,6 +3241,9 @@
         String adapterName = stmtDropAdapter.getAdapterName();
         
metadataProvider.validateDatabaseObjectName(stmtDropAdapter.getDataverseName(), 
adapterName, sourceLoc);
         DataverseName dataverseName = 
getActiveDataverseName(stmtDropAdapter.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropAdapterBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, adapterName);
         try {
             doDropAdapter(metadataProvider, stmtDropAdapter, dataverseName, 
adapterName);
@@ -3235,6 +3294,9 @@
         DataverseName dataverseName = 
getActiveDataverseName(cls.getDataverseName());
         String libraryName = cls.getLibraryName();
         String libraryHash = cls.getHash();
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createLibraryBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, libraryName);
         try {
             doCreateLibrary(metadataProvider, dataverseName, libraryName, 
libraryHash, cls, hcc, requestParameters);
@@ -3363,6 +3425,9 @@
         
metadataProvider.validateDatabaseObjectName(stmtDropLibrary.getDataverseName(), 
libraryName,
                 stmtDropLibrary.getSourceLocation());
         DataverseName dataverseName = 
getActiveDataverseName(stmtDropLibrary.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropLibraryBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, libraryName);
         try {
             doDropLibrary(metadataProvider, stmtDropLibrary, dataverseName, 
libraryName, hcc, requestParameters);
@@ -3457,6 +3522,9 @@
         DataverseName objectDataverseName =
                 css.getObjectDataverseName() != null ? 
css.getObjectDataverseName() : dataverseName;
         String objectName = css.getObjectName();
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createSynonymBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, synonymName);
         try {
             doCreateSynonym(metadataProvider, css, dataverseName, synonymName, 
objectDataverseName, objectName);
@@ -3504,6 +3572,9 @@
         
metadataProvider.validateDatabaseObjectName(stmtSynDrop.getDataverseName(), 
synonymName,
                 stmtSynDrop.getSourceLocation());
         DataverseName dataverseName = 
getActiveDataverseName(stmtSynDrop.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.dropSynonymBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, synonymName);
         try {
             doDropSynonym(metadataProvider, stmtSynDrop, dataverseName, 
synonymName);
@@ -3557,7 +3628,7 @@
             afterCompile();
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             bActiveTxn = false;
-            if (spec != null && sessionConfig.isExecuteQuery()) {
+            if (spec != null && !isCompileOnly()) {
                 runJob(hcc, spec);
             }
         } catch (Exception e) {
@@ -3602,7 +3673,7 @@
                         rewriteCompileInsertUpsert(hcc, metadataProvider, 
stmtInsertUpsert, stmtParams);
                 MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
                 bActiveTxn = false;
-                return !sessionConfig.isExecuteQuery() ? null : jobSpec;
+                return isCompileOnly() ? null : jobSpec;
             } catch (Exception e) {
                 if (bActiveTxn) {
                     abort(e, e, mdTxnCtx);
@@ -3653,7 +3724,7 @@
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             bActiveTxn = false;

-            if (jobSpec != null && sessionConfig.isExecuteQuery()) {
+            if (jobSpec != null && !isCompileOnly()) {
                 runJob(hcc, jobSpec);
             }
             return jobSpec;
@@ -3730,6 +3801,9 @@
         String feedName = cfs.getFeedName().getValue();
         metadataProvider.validateDatabaseObjectName(cfs.getDataverseName(), 
feedName, sourceLoc);
         DataverseName dataverseName = 
getActiveDataverseName(cfs.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         lockUtil.createFeedBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, feedName);
@@ -3769,6 +3843,9 @@
         String policyName = cfps.getPolicyName();
         metadataProvider.validateDatabaseObjectName(null, policyName, 
sourceLoc);
         DataverseName dataverseName = getActiveDataverseName(null);
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.createFeedPolicyBegin(lockManager, 
metadataProvider.getLocks(), dataverseName, policyName);
         try {
             mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
@@ -3830,6 +3907,9 @@
         String feedName = stmtFeedDrop.getFeedName().getValue();
         
metadataProvider.validateDatabaseObjectName(stmtFeedDrop.getDataverseName(), 
feedName, sourceLoc);
         DataverseName dataverseName = 
getActiveDataverseName(stmtFeedDrop.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         lockUtil.dropFeedBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, feedName);
@@ -3883,6 +3963,9 @@
         String policyName = stmtFeedPolicyDrop.getPolicyName().getValue();
         
metadataProvider.validateDatabaseObjectName(stmtFeedPolicyDrop.getDataverseName(),
 policyName, sourceLoc);
         DataverseName dataverseName = 
getActiveDataverseName(stmtFeedPolicyDrop.getDataverseName());
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         lockUtil.dropFeedPolicyBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, policyName);
@@ -3912,6 +3995,9 @@
         SourceLocation sourceLoc = sfs.getSourceLocation();
         DataverseName dataverseName = 
getActiveDataverseName(sfs.getDataverseName());
         String feedName = sfs.getFeedName().getValue();
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         boolean committed = false;
         lockUtil.startFeedBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, feedName);
@@ -3974,6 +4060,9 @@
             throw new CompilationException(ErrorCode.COMPILATION_ERROR, 
sourceLoc,
                     "Feed " + feedName + " is not started.");
         }
+        if (isCompileOnly()) {
+            return;
+        }
         lockUtil.stopFeedBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, feedName);
         try {
             listener.stop(metadataProvider);
@@ -3991,6 +4080,9 @@
         String datasetName = cfs.getDatasetName().getValue();
         String policyName = cfs.getPolicy();
         String whereClauseBody = cfs.getWhereClauseBody();
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         // TODO: Check whether we are connecting a change feed to a non-meta 
dataset
@@ -4046,6 +4138,9 @@
         DataverseName dataverseName = 
getActiveDataverseName(cfs.getDataverseName());
         String datasetName = cfs.getDatasetName().getValue();
         String feedName = cfs.getFeedName().getValue();
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         lockUtil.disconnectFeedBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, datasetName, feedName);
@@ -4091,6 +4186,9 @@
         SourceLocation sourceLoc = compactStatement.getSourceLocation();
         DataverseName dataverseName = 
getActiveDataverseName(compactStatement.getDataverseName());
         String datasetName = compactStatement.getDatasetName().getValue();
+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         boolean bActiveTxn = true;
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
@@ -4194,7 +4292,7 @@
                 afterCompile();
                 MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
                 bActiveTxn = false;
-                return query.isExplain() || !sessionConfig.isExecuteQuery() ? 
null : jobSpec;
+                return query.isExplain() || isCompileOnly() ? null : jobSpec;
             } catch (Exception e) {
                 LOGGER.log(Level.INFO, e.getMessage(), e);
                 if (bActiveTxn) {
@@ -4364,6 +4462,9 @@
         String ngName = stmtCreateNodegroup.getNodegroupName().getValue();
         metadataProvider.validateDatabaseObjectName(null, ngName, sourceLoc);

+        if (isCompileOnly()) {
+            return;
+        }
         MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
         metadataProvider.setMetadataTxnContext(mdTxnCtx);
         lockManager.acquireNodeGroupWriteLock(metadataProvider.getLocks(), 
ngName);
@@ -4398,9 +4499,6 @@
         DataverseName dataverseName = 
getActiveDataverseName(stmtRefresh.getDataverseName());
         String datasetName = stmtRefresh.getDatasetName().getValue();
         TransactionState transactionState = TransactionState.COMMIT;
-        MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
-        boolean bActiveTxn = true;
-        metadataProvider.setMetadataTxnContext(mdTxnCtx);
         JobSpecification spec = null;
         Dataset ds = null;
         List<ExternalFile> metadataFiles = null;
@@ -4411,6 +4509,12 @@
         Dataset transactionDataset = null;
         boolean lockAquired = false;
         boolean success = false;
+        if (isCompileOnly()) {
+            return;
+        }
+        MetadataTransactionContext mdTxnCtx = 
MetadataManager.INSTANCE.beginTransaction();
+        metadataProvider.setMetadataTxnContext(mdTxnCtx);
+        boolean bActiveTxn = true;
         lockUtil.refreshDatasetBegin(lockManager, metadataProvider.getLocks(), 
dataverseName, datasetName);
         try {
             ds = metadataProvider.findDataset(dataverseName, datasetName);
@@ -4745,7 +4849,7 @@

     private Map<VarIdentifier, IAObject> 
createExternalVariables(IReturningStatement stmt,
             Map<String, IAObject> stmtParams) throws CompilationException {
-        if (sessionConfig.isExecuteQuery()) {
+        if (!isCompileOnly()) {
             if (stmtParams == null || stmtParams.isEmpty()) {
                 return Collections.emptyMap();
             }
@@ -4770,6 +4874,10 @@
         }
     }

+    protected boolean isCompileOnly() {
+        return !sessionConfig.isExecuteQuery();
+    }
+
     protected void validateDatasetState(MetadataProvider metadataProvider, 
Dataset dataset, SourceLocation sourceLoc)
             throws Exception {
         
validateIfResourceIsActiveInFeed(metadataProvider.getApplicationContext(), 
dataset, sourceLoc);

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/16129
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: I6c10bd099f7ec44218eccb38ca08ea9e24e04a55
Gerrit-Change-Number: 16129
Gerrit-PatchSet: 1
Gerrit-Owner: Dmitry Lychagin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to