You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2015/09/09 09:59:28 UTC

tajo git commit: TAJO-1782: Check ON_ERROR_STOP flag in TSQL when error is occured.

Repository: tajo
Updated Branches:
  refs/heads/master 1cdd018d9 -> 745818b7f


TAJO-1782: Check ON_ERROR_STOP flag in TSQL when error is occured.

Closes #711

Signed-off-by: Jihoon Son <ji...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/745818b7
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/745818b7
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/745818b7

Branch: refs/heads/master
Commit: 745818b7f921b2b3bc400cdc272526e132ec4ac9
Parents: 1cdd018
Author: Dongkyu Hwangbo <dkhwangbo>
Authored: Wed Sep 9 16:59:07 2015 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Wed Sep 9 16:59:07 2015 +0900

----------------------------------------------------------------------
 CHANGES                                         |  3 ++
 .../java/org/apache/tajo/cli/tsql/TajoCli.java  | 13 ++++----
 .../org/apache/tajo/cli/tsql/TestTajoCli.java   | 35 ++++++++++++++++++++
 3 files changed, 44 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/745818b7/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 303dbe3..cb85512 100644
--- a/CHANGES
+++ b/CHANGES
@@ -255,6 +255,9 @@ Release 0.11.0 - unreleased
 
   BUG FIXES
 
+    TAJO-1782: Check ON_ERROR_STOP flag in TSQL when error is occured. 
+    (Contributed by Dongkyu Hwangbo, Committed by jihoon)
+
     TAJO-1829: Fix DelimitedTextFileAppender NPE in negative tests. (jinho)
 
     TAJO-1674: Validation of CTAS schema mismatch. (hyunsik)

http://git-wip-us.apache.org/repos/asf/tajo/blob/745818b7/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
----------------------------------------------------------------------
diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
index affd128..f17ec80 100644
--- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
+++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
@@ -36,7 +36,6 @@ import org.apache.tajo.conf.TajoConf.ConfVars;
 import org.apache.tajo.exception.ExceptionUtil;
 import org.apache.tajo.exception.ReturnStateUtil;
 import org.apache.tajo.exception.TajoException;
-import org.apache.tajo.exception.DefaultTajoException;
 import org.apache.tajo.ipc.ClientProtos;
 import org.apache.tajo.service.ServiceTrackerFactory;
 import org.apache.tajo.util.FileUtil;
@@ -405,7 +404,7 @@ public class TajoCli {
     sout.write("Try \\? for help.\n");
 
     SimpleParser parser = new SimpleParser();
-    
+
     try {
       while((line = reader.readLine(currentPrompt + "> ")) != null) {
         if (line.equals("")) {
@@ -427,19 +426,19 @@ public class TajoCli {
           latestState = parser.getState();
           currentPrompt = updatePrompt(latestState);
 
-          // if at least one failed
-          if (exitCode != 0) {
+          // If the ON_ERROR_STOP flag is set, Cli should stop on query failure.
+          if (exitCode != 0 && context.getBool(SessionVars.ON_ERROR_STOP)) {
             return exitCode;
           }
         }
       }
     } catch (Exception e) {
-      System.err.println(ERROR_PREFIX + "Exception was thrown. Casued by " + e.getMessage());
-      
+      System.err.println(ERROR_PREFIX + "Exception was thrown. Caused by " + e.getMessage());
+
       if (client != null) {
         client.close();
       }
-      
+
       throw e;
     }
     return 0;

http://git-wip-us.apache.org/repos/asf/tajo/blob/745818b7/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java
index 5005670..8ddef09 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java
@@ -362,6 +362,41 @@ public class TestTajoCli {
   }
 
   @Test
+  public void testRunWhenError() throws Exception {
+    Thread t = new Thread() {
+      public void run() {
+        try {
+          PipedOutputStream po = new PipedOutputStream();
+          InputStream is = new PipedInputStream(po);
+          ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+          TajoConf tajoConf = new TajoConf();
+          setVar(tajoCli, SessionVars.CLI_FORMATTER_CLASS, TajoCliOutputTestFormatter.class.getName());
+          TajoCli tc = new TajoCli(tajoConf, new String[]{}, is, out);
+
+          tc.executeMetaCommand("\\set ON_ERROR_STOP false");
+          assertSessionVar(tc, SessionVars.ON_ERROR_STOP.keyname(), "false");
+
+          po.write(new String("asdf;\nqwe;\nzxcv;\n").getBytes());
+
+          tc.runShell();
+        } catch (Exception e) {
+          throw new RuntimeException("Cannot run thread in testRunWhenError", e);
+        }
+      }
+    };
+
+    t.start();
+    Thread.sleep(1000);
+    if(!t.isAlive()) {
+      fail("TSQL should be alive");
+    } else {
+      t.interrupt();
+      t.join();
+    }
+  }
+
+  @Test
   public void testHelpSessionVars() throws Exception {
     tajoCli.executeMetaCommand("\\help set");
     assertOutputResult(new String(out.toByteArray()));