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 e7f68a9fbefbe3ac7098930b0a5cfb16b308e9e9
Author: Murtadha Hubail <[email protected]>
AuthorDate: Fri Jan 29 20:16:38 2021 +0300

    [NO ISSUE][OTH] Extensible NCQueryServiceServlet Message
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    
    - Allow the message used in NCQueryServiceServlet message
      to be extended and override.
    
    Change-Id: If1ec0812c641768196e582a444080cde44f58c50
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9784
    Reviewed-by: Michael Blow <[email protected]>
    Tested-by: Michael Blow <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Integration-Tests: Jenkins <[email protected]>
---
 .../api/http/server/NCQueryServiceServlet.java      | 21 ++++++++++++++++-----
 .../app/message/ExecuteStatementRequestMessage.java | 10 ++++++----
 2 files changed, 22 insertions(+), 9 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
index 1b2b00d..99b6be1 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
@@ -85,11 +85,9 @@ public class NCQueryServiceServlet extends 
QueryServiceServlet {
             long timeout = param.getTimeout();
             int stmtCategoryRestrictionMask = 
org.apache.asterix.app.translator.RequestParameters
                     .getStatementCategoryRestrictionMask(param.isReadOnly());
-            ExecuteStatementRequestMessage requestMsg = new 
ExecuteStatementRequestMessage(ncCtx.getNodeId(),
-                    responseFuture.getFutureId(), queryLanguage, 
statementsText, sessionOutput.config(),
-                    resultProperties.getNcToCcResultProperties(), 
param.getClientContextID(), handleUrl,
-                    optionalParameters, statementParameters, 
param.isMultiStatement(), param.getProfileType(),
-                    stmtCategoryRestrictionMask, requestReference);
+            ExecuteStatementRequestMessage requestMsg = 
createRequestMessage(requestReference, statementsText,
+                    sessionOutput, resultProperties, param, 
optionalParameters, statementParameters, ncCtx,
+                    responseFuture, queryLanguage, handleUrl, 
stmtCategoryRestrictionMask, false);
             executionState.start();
             ncMb.sendMessageToPrimaryCC(requestMsg);
             try {
@@ -131,6 +129,19 @@ public class NCQueryServiceServlet extends 
QueryServiceServlet {
         buildResponseResults(responsePrinter, sessionOutput, 
responseMsg.getExecutionPlans(), warnings);
     }
 
+    protected ExecuteStatementRequestMessage 
createRequestMessage(IRequestReference requestReference,
+            String statementsText, SessionOutput sessionOutput, 
ResultProperties resultProperties,
+            QueryServiceRequestParameters param, Map<String, String> 
optionalParameters,
+            Map<String, byte[]> statementParameters, INCServiceContext ncCtx, 
MessageFuture responseFuture,
+            ILangExtension.Language queryLanguage, String handleUrl, int 
stmtCategoryRestrictionMask,
+            boolean forceDropDataset) {
+        return new ExecuteStatementRequestMessage(ncCtx.getNodeId(), 
responseFuture.getFutureId(), queryLanguage,
+                statementsText, sessionOutput.config(), 
resultProperties.getNcToCcResultProperties(),
+                param.getClientContextID(), handleUrl, optionalParameters, 
statementParameters,
+                param.isMultiStatement(), param.getProfileType(), 
stmtCategoryRestrictionMask, requestReference,
+                forceDropDataset);
+    }
+
     private void cancelQuery(INCMessageBroker messageBroker, String nodeId, 
String uuid, String clientContextID,
             Exception exception, boolean wait) {
         if (uuid == null && clientContextID == null) {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
index 2552040..66a6dde 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
@@ -65,8 +65,8 @@ import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-public final class ExecuteStatementRequestMessage implements 
ICcAddressedMessage {
-    private static final long serialVersionUID = 1L;
+public class ExecuteStatementRequestMessage implements ICcAddressedMessage {
+    private static final long serialVersionUID = 2L;
     private static final Logger LOGGER = LogManager.getLogger();
     //TODO: Make configurable: 
https://issues.apache.org/jira/browse/ASTERIXDB-2062
     public static final long DEFAULT_NC_TIMEOUT_MILLIS = 
TimeUnit.MILLISECONDS.toMillis(Long.MAX_VALUE);
@@ -86,12 +86,13 @@ public final class ExecuteStatementRequestMessage 
implements ICcAddressedMessage
     private final int statementCategoryRestrictionMask;
     private final ProfileType profileType;
     private final IRequestReference requestReference;
+    private final boolean forceDropDataset;
 
     public ExecuteStatementRequestMessage(String requestNodeId, long 
requestMessageId, ILangExtension.Language lang,
             String statementsText, SessionConfig sessionConfig, 
ResultProperties resultProperties,
             String clientContextID, String handleUrl, Map<String, String> 
optionalParameters,
             Map<String, byte[]> statementParameters, boolean multiStatement, 
ProfileType profileType,
-            int statementCategoryRestrictionMask, IRequestReference 
requestReference) {
+            int statementCategoryRestrictionMask, IRequestReference 
requestReference, boolean forceDropDataset) {
         this.requestNodeId = requestNodeId;
         this.requestMessageId = requestMessageId;
         this.lang = lang;
@@ -106,6 +107,7 @@ public final class ExecuteStatementRequestMessage 
implements ICcAddressedMessage
         this.statementCategoryRestrictionMask = 
statementCategoryRestrictionMask;
         this.profileType = profileType;
         this.requestReference = requestReference;
+        this.forceDropDataset = forceDropDataset;
     }
 
     @Override
@@ -150,7 +152,7 @@ public final class ExecuteStatementRequestMessage 
implements ICcAddressedMessage
             Map<String, IAObject> stmtParams = 
RequestParameters.deserializeParameterValues(statementParameters);
             final IRequestParameters requestParameters = new 
RequestParameters(requestReference, statementsText, null,
                     resultProperties, stats, statementProperties, outMetadata, 
clientContextID, optionalParameters,
-                    stmtParams, multiStatement, 
statementCategoryRestrictionMask);
+                    stmtParams, multiStatement, 
statementCategoryRestrictionMask, forceDropDataset);
             translator.compileAndExecute(ccApp.getHcc(), requestParameters);
             translator.getWarnings(warnings, maxWarnings - warnings.size());
             stats.updateTotalWarningsCount(parserTotalWarningsCount);

Reply via email to