Index: cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java =================================================================== --- cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java (revision 1188369) +++ cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java (working copy) @@ -78,7 +78,9 @@ public static String prompt = "hive"; public static String prompt2 = " "; // when ';' is not yet seen public static final int LINES_TO_FETCH = 40; // number of lines to fetch in batch from remote hive server - + public static final int EXPLAIN_FAILED_CODE = 517; + public static final List COMMANDS_WITHOUT_EXPLAIN_SUPPORT = Arrays.asList("quit", "exit", + "source", "!", "set", "dfs", "add", "delete"); public static final String HIVERCFILE = ".hiverc"; private final LogHelper console; @@ -97,6 +99,17 @@ String[] tokens = tokenizeCmd(cmd_trimmed); int ret = 0; + if (tokens[0].equalsIgnoreCase("explain")) { + if (tokens.length < 2) { + console.printError("FAILED: Explain requires a query as an argument"); + return EXPLAIN_FAILED_CODE; + } else if (COMMANDS_WITHOUT_EXPLAIN_SUPPORT.contains(tokens[1].toLowerCase())) { + console.printError("FAILED: Explain not supported for command: " + + cmd_trimmed.substring("explain".length()).trim()); + return EXPLAIN_FAILED_CODE; + } + } + if (cmd_trimmed.toLowerCase().equals("quit") || cmd_trimmed.toLowerCase().equals("exit")) { // if we have come this far - either the previous commands