diff --git beeline/src/java/org/apache/hive/beeline/BeeLine.java beeline/src/java/org/apache/hive/beeline/BeeLine.java index bc2f4d8..0eeb63d 100644 --- beeline/src/java/org/apache/hive/beeline/BeeLine.java +++ beeline/src/java/org/apache/hive/beeline/BeeLine.java @@ -758,19 +758,27 @@ boolean dispatch(String line) { for (int i = 0; i < commandHandlers.length; i++) { String match = commandHandlers[i].matches(line); if (match != null) { - cmdMap.put(match, commandHandlers[i]); + CommandHandler prev = cmdMap.put(match, commandHandlers[i]); + if (prev != null) { + return error(loc("multiple-matches", + Arrays.asList(prev.getName(), commandHandlers[i].getName()))); + } } } if (cmdMap.size() == 0) { return error(loc("unknown-command", line)); - } else if (cmdMap.size() > 1) { - return error(loc("multiple-matches", - cmdMap.keySet().toString())); - } else { - return cmdMap.values().iterator().next() - .execute(line); } + if (cmdMap.size() > 1) { + // any exact match? + CommandHandler handler = cmdMap.get(line); + if (handler == null) { + return error(loc("multiple-matches", cmdMap.keySet().toString())); + } + return handler.execute(line); + } + return cmdMap.values().iterator().next() + .execute(line); } else { return commands.sql(line); } diff --git beeline/src/java/org/apache/hive/beeline/Commands.java beeline/src/java/org/apache/hive/beeline/Commands.java index d2d7fd3..b5bb07b 100644 --- beeline/src/java/org/apache/hive/beeline/Commands.java +++ beeline/src/java/org/apache/hive/beeline/Commands.java @@ -801,8 +801,8 @@ public boolean close(String line) { try { if (beeLine.getDatabaseConnection().getConnection() != null && !(beeLine.getDatabaseConnection().getConnection().isClosed())) { - beeLine.info(beeLine.loc("closing", - beeLine.getDatabaseConnection().getConnection().getClass().getName())); + int index = beeLine.getDatabaseConnections().getIndex(); + beeLine.info(beeLine.loc("closing", index, beeLine.getDatabaseConnection())); beeLine.getDatabaseConnection().getConnection().close(); } else { beeLine.info(beeLine.loc("already-closed")); diff --git beeline/src/main/resources/BeeLine.properties beeline/src/main/resources/BeeLine.properties index 9947007..c549a3f 100644 --- beeline/src/main/resources/BeeLine.properties +++ beeline/src/main/resources/BeeLine.properties @@ -79,7 +79,7 @@ scanning: Scanning {0}... no-such-method: No such method "{0}" possible-methods: Possible methods: -closing: Closing: {0} +closing: Closing: {0}: {1} already-closed: Connection is already closed. error-setting: Error setting configuration: {0}: {1} no-method: No method matching "{0}" was found in {1}.