diff --git a/beeline/src/java/org/apache/hive/beeline/HiveSchemaHelper.java b/beeline/src/java/org/apache/hive/beeline/HiveSchemaHelper.java index 5dda36c..a21fa65 100644 --- a/beeline/src/java/org/apache/hive/beeline/HiveSchemaHelper.java +++ b/beeline/src/java/org/apache/hive/beeline/HiveSchemaHelper.java @@ -21,6 +21,7 @@ public class HiveSchemaHelper { public static final String DB_DERBY = "derby"; + public static final String DB_MSSQL = "mssql"; public static final String DB_MYSQL = "mysql"; public static final String DB_POSTGRACE = "postgres"; public static final String DB_ORACLE = "oracle"; @@ -251,9 +252,29 @@ public boolean isNestedScript(String dbCommand) { } } + //MSSQL specific parser + public static class MSSQLCommandParser extends AbstractCommandParser { + private static String MSSQL_NESTING_TOKEN = ":r"; + @Override + public String getScriptName(String dbCommand) throws IllegalArgumentException { + String[] tokens = dbCommand.split(" "); + if (tokens.length != 2) { + throw new IllegalArgumentException("Couldn't parse line " + dbCommand); + } + return tokens[1]; + } + + @Override + public boolean isNestedScript(String dbCommand) { + return dbCommand.startsWith(MSSQL_NESTING_TOKEN); + } + } + public static NestedScriptParser getDbCommandParser(String dbName) { if (dbName.equalsIgnoreCase(DB_DERBY)) { return new DerbyCommandParser(); + } else if (dbName.equalsIgnoreCase(DB_MSSQL)) { + return new MSSQLCommandParser(); } else if (dbName.equalsIgnoreCase(DB_MYSQL)) { return new MySqlCommandParser(); } else if (dbName.equalsIgnoreCase(DB_POSTGRACE)) { diff --git a/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java b/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java index 9c8cd18..de3ad4e 100644 --- a/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java +++ b/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java @@ -454,6 +454,7 @@ public static void main(String[] args) { if (line.hasOption("dbType")) { dbType = line.getOptionValue("dbType"); if ((!dbType.equalsIgnoreCase(HiveSchemaHelper.DB_DERBY) && + !dbType.equalsIgnoreCase(HiveSchemaHelper.DB_MSSQL) && !dbType.equalsIgnoreCase(HiveSchemaHelper.DB_MYSQL) && !dbType.equalsIgnoreCase(HiveSchemaHelper.DB_POSTGRACE) && !dbType .equalsIgnoreCase(HiveSchemaHelper.DB_ORACLE))) {