diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/CancellationTestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/CancellationTestExecutor.java
index 766a9d4..b4b7352 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/CancellationTestExecutor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/CancellationTestExecutor.java
@@ -20,6 +20,7 @@
 package org.apache.asterix.test.common;
 
 import static org.apache.asterix.api.http.server.QueryServiceRequestParameters.Parameter.CLIENT_ID;
+import static org.apache.asterix.test.common.ComparisonException.Type.DIFFERENT_RESULT;
 
 import java.io.InputStream;
 import java.net.URI;
@@ -110,6 +111,10 @@
             SqlppExecutionWithCancellationTest.numCancelledQueries++;
             queryCount.increment();
             return false;
+        } else if (e instanceof ComparisonException
+                && ((ComparisonException) e).getExceptionType() == DIFFERENT_RESULT) {
+            // for this test, ignore ComparisonException for completed requests since the goal is not to compare results
+            return false;
         } else {
             System.err.println(
                     "Expected to find one of the following in error text:\n+++++\n" + expectedErrors + "\n+++++");
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ComparisonException.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ComparisonException.java
index cb437f0..ec3cabf 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ComparisonException.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ComparisonException.java
@@ -19,13 +19,40 @@
 package org.apache.asterix.test.common;
 
 public class ComparisonException extends Exception {
-    private static final long serialVersionUID = 1L;
 
-    public ComparisonException(String message) {
-        super(message);
+    enum Type {
+        DIFFERENT_RESULT,
+        MALFORMED_RESULT,
+        NO_RESULT
     }
 
-    public ComparisonException(String message, Throwable cause) {
+    private static final long serialVersionUID = 1L;
+
+    private final Type exceptionType;
+
+    private ComparisonException(String message, Type type) {
+        super(message);
+        exceptionType = type;
+    }
+
+    private ComparisonException(String message, Throwable cause, Type type) {
         super(message, cause);
+        exceptionType = type;
+    }
+
+    public static ComparisonException noResult(String message) {
+        return new ComparisonException(message, Type.NO_RESULT);
+    }
+
+    public static ComparisonException differentResult(String message) {
+        return new ComparisonException(message, Type.DIFFERENT_RESULT);
+    }
+
+    public static ComparisonException malformedResult(String message, Throwable cause) {
+        return new ComparisonException(message, cause, Type.MALFORMED_RESULT);
+    }
+
+    public Type getExceptionType() {
+        return exceptionType;
     }
 }
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
index e906039..3d39ef4 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
@@ -424,18 +424,18 @@
 
     public static ComparisonException createLineChangedException(File scriptFile, String lineExpected,
             String lineActual, int num) {
-        return new ComparisonException("Result for " + canonicalize(scriptFile) + " changed at line " + num
+        return ComparisonException.differentResult("Result for " + canonicalize(scriptFile) + " changed at line " + num
                 + ":\nexpected < " + truncateIfLong(lineExpected) + "\nactual   > " + truncateIfLong(lineActual));
     }
 
     public static ComparisonException createLineNotFoundException(File scriptFile, String lineExpected, int num) {
-        return new ComparisonException("Result for " + canonicalize(scriptFile) + " expected line at " + num
+        return ComparisonException.differentResult("Result for " + canonicalize(scriptFile) + " expected line at " + num
                 + " not found: " + truncateIfLong(lineExpected));
     }
 
     private ComparisonException createExpectedLinesNotReturnedException(File scriptFile, List<String> expectedLines) {
-        return new ComparisonException("Result for " + canonicalize(scriptFile) + " expected lines not returned:\n"
-                + String.join("\n", expectedLines));
+        return ComparisonException.differentResult("Result for " + canonicalize(scriptFile)
+                + " expected lines not returned:\n" + String.join("\n", expectedLines));
     }
 
     private static String truncateIfLong(String string) {
@@ -621,20 +621,20 @@
         try {
             expectedJson = SINGLE_JSON_NODE_READER.readTree(readerExpected);
         } catch (JsonProcessingException e) {
-            throw new ComparisonException("Invalid expected JSON for: " + scriptFile, e);
+            throw ComparisonException.malformedResult("Invalid expected JSON for: " + scriptFile, e);
         }
         try {
             actualJson = SINGLE_JSON_NODE_READER.readTree(readerActual);
         } catch (JsonProcessingException e) {
-            throw new ComparisonException("Invalid actual JSON for: " + scriptFile, e);
+            throw ComparisonException.malformedResult("Invalid actual JSON for: " + scriptFile, e);
         }
         if (expectedJson == null) {
-            throw new ComparisonException("No expected result for: " + scriptFile);
+            throw ComparisonException.noResult("No expected result for: " + scriptFile);
         } else if (actualJson == null) {
-            throw new ComparisonException("No actual result for: " + scriptFile);
+            throw ComparisonException.noResult("No actual result for: " + scriptFile);
         }
         if (!TestHelper.equalJson(expectedJson, actualJson, compareUnorderedArray, ignoreExtraFields, false, null)) {
-            throw new ComparisonException("Result for " + scriptFile + " didn't match the expected JSON"
+            throw ComparisonException.differentResult("Result for " + scriptFile + " didn't match the expected JSON"
                     + "\nexpected result:\n" + expectedJson + "\nactual result:\n" + actualJson);
         }
     }
@@ -650,35 +650,35 @@
         int i = 0;
         for (String expectedLine : expectedLines) {
             if (actualLines.size() <= i) {
-                throw new ComparisonException("Result for " + canonicalize(scriptFile) + " expected json line at " + i
-                        + " not found: " + truncateIfLong(expectedLine));
+                throw ComparisonException.differentResult("Result for " + canonicalize(scriptFile)
+                        + " expected json line at " + i + " not found: " + truncateIfLong(expectedLine));
             }
             String actualLine = actualLines.get(i);
             i += 1;
             try {
                 expectedJson = SINGLE_JSON_NODE_READER.readTree(expectedLine);
             } catch (JsonProcessingException e) {
-                throw new ComparisonException("Invalid expected JSON for: " + scriptFile, e);
+                throw ComparisonException.malformedResult("Invalid expected JSON for: " + scriptFile, e);
             }
             try {
                 actualJson = SINGLE_JSON_NODE_READER.readTree(actualLine);
             } catch (JsonProcessingException e) {
-                throw new ComparisonException("Invalid actual JSON for: " + scriptFile, e);
+                throw ComparisonException.malformedResult("Invalid actual JSON for: " + scriptFile, e);
             }
             if (expectedJson == null) {
-                throw new ComparisonException("No expected result for: " + scriptFile);
+                throw ComparisonException.noResult("No expected result for: " + scriptFile);
             } else if (actualJson == null) {
-                throw new ComparisonException("No actual result for: " + scriptFile);
+                throw ComparisonException.noResult("No actual result for: " + scriptFile);
             }
             if (!TestHelper.equalJson(expectedJson, actualJson, compareUnorderedArray, ignoreExtraFields, false,
                     null)) {
-                throw new ComparisonException("Result for " + scriptFile + " didn't match the expected JSON"
+                throw ComparisonException.differentResult("Result for " + scriptFile + " didn't match the expected JSON"
                         + "\nexpected result:\n" + expectedJson + "\nactual result:\n" + actualJson);
             }
         }
         if (actualLines.size() > i) {
-            throw new ComparisonException("Result for " + canonicalize(scriptFile) + " extra json line at " + i
-                    + " found: " + truncateIfLong(actualLines.get(i)));
+            throw ComparisonException.differentResult("Result for " + canonicalize(scriptFile) + " extra json line at "
+                    + i + " found: " + truncateIfLong(actualLines.get(i)));
         }
     }
 
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java
index 7effe9d..b8f6698 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java
@@ -99,8 +99,8 @@
                 try {
                     if (queryCount >= expectedResultFileCtxs.size()
                             && !cUnit.getOutputDir().getValue().equals("none")) {
-                        throw new ComparisonException("no result file for " + canonicalize(testFile) + "; queryCount: "
-                                + queryCount + ", filectxs.size: " + expectedResultFileCtxs.size());
+                        throw ComparisonException.noResult("no result file for " + canonicalize(testFile)
+                                + "; queryCount: " + queryCount + ", filectxs.size: " + expectedResultFileCtxs.size());
                     }
 
                     // Runs the test query.
