Repository: sqoop Updated Branches: refs/heads/sqoop2 6be57ae7e -> a70975c66
SQOOP-2445. Sqoop2: Generic JDBC: Prevent use of tableColumns and sql at the same time (Jarcec via Hari) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/a70975c6 Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/a70975c6 Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/a70975c6 Branch: refs/heads/sqoop2 Commit: a70975c6694a3fd09c70ac267f345fe6bd33aa99 Parents: 6be57ae Author: Hari Shreedharan <[email protected]> Authored: Thu Sep 24 14:55:42 2015 -0700 Committer: Hari Shreedharan <[email protected]> Committed: Thu Sep 24 14:55:42 2015 -0700 ---------------------------------------------------------------------- .../jdbc/GenericJdbcFromInitializer.java | 21 ++------ .../jdbc/configuration/FromJobConfig.java | 5 +- .../connector/jdbc/TestFromInitializer.java | 57 -------------------- 3 files changed, 7 insertions(+), 76 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/a70975c6/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java ---------------------------------------------------------------------- diff --git a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java index cddbb04..5a357bd 100644 --- a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java +++ b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java @@ -285,25 +285,10 @@ public class GenericJdbcFromInitializer extends Initializer<LinkConfiguration, F } } else { assert tableSql.contains(GenericJdbcConnectorConstants.SQL_CONDITIONS_TOKEN); + dataSql = tableSql; - if (tableColumns == null) { - dataSql = tableSql; - - String[] queryColumns = executor.getQueryColumns(dataSql.replace(GenericJdbcConnectorConstants.SQL_CONDITIONS_TOKEN, "1 = 0")); - fieldNames = executor.columnList(queryColumns); - } else { - StringBuilder builder = new StringBuilder(); - builder.append("SELECT "); - builder.append(tableColumns); - builder.append(" FROM "); - builder.append("("); - builder.append(tableSql); - builder.append(") "); - builder.append(GenericJdbcConnectorConstants.SUBQUERY_ALIAS); - dataSql = builder.toString(); - - fieldNames = tableColumns; - } + String[] queryColumns = executor.getQueryColumns(dataSql.replace(GenericJdbcConnectorConstants.SQL_CONDITIONS_TOKEN, "1 = 0")); + fieldNames = executor.columnList(queryColumns); } LOG.info("Using dataSql: " + dataSql); http://git-wip-us.apache.org/repos/asf/sqoop/blob/a70975c6/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/configuration/FromJobConfig.java ---------------------------------------------------------------------- diff --git a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/configuration/FromJobConfig.java b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/configuration/FromJobConfig.java index ec1c3b7..adbd457 100644 --- a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/configuration/FromJobConfig.java +++ b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/configuration/FromJobConfig.java @@ -64,7 +64,10 @@ public class FromJobConfig { addMessage(Status.ERROR, "Both schema name and SQL cannot be specified"); } if (config.sql != null && config.partitionColumn == null) { - addMessage(Status.ERROR, "Partition column is required on query based import."); + addMessage(Status.ERROR, "Partition column is required on query based import"); + } + if(config.sql != null && config.columns != null) { + addMessage(Status.ERROR, "Can't use sql import and specify columns at the same time"); } } } http://git-wip-us.apache.org/repos/asf/sqoop/blob/a70975c6/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestFromInitializer.java ---------------------------------------------------------------------- diff --git a/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestFromInitializer.java b/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestFromInitializer.java index 31fafb1..ab31932 100644 --- a/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestFromInitializer.java +++ b/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestFromInitializer.java @@ -314,34 +314,6 @@ public class TestFromInitializer { @Test @SuppressWarnings("unchecked") - public void testTableSqlWithTableColumns() throws Exception { - LinkConfiguration linkConfig = new LinkConfiguration(); - FromJobConfiguration jobConfig = new FromJobConfiguration(); - - linkConfig.linkConfig.jdbcDriver = GenericJdbcTestConstants.DRIVER; - linkConfig.linkConfig.connectionString = GenericJdbcTestConstants.URL; - jobConfig.fromJobConfig.sql = schemalessTableSql; - jobConfig.fromJobConfig.columns = tableColumns; - jobConfig.fromJobConfig.partitionColumn = "DCOL"; - - MutableContext context = new MutableMapContext(); - InitializerContext initializerContext = new InitializerContext(context); - - @SuppressWarnings("rawtypes") - Initializer initializer = new GenericJdbcFromInitializer(); - initializer.initialize(initializerContext, linkConfig, jobConfig); - - verifyResult(context, - "SELECT ICOL,VCOL FROM (" + schemalessTableSql + ") SQOOP_SUBQUERY_ALIAS", - tableColumns, - "\"DCOL\"", - String.valueOf(Types.DOUBLE), - String.valueOf((double)START), - String.valueOf((double)(START+NUMBER_OF_ROWS-1))); - } - - @Test - @SuppressWarnings("unchecked") public void testTableNameWithSchema() throws Exception { LinkConfiguration linkConfig = new LinkConfiguration(); FromJobConfiguration jobConfig = new FromJobConfiguration(); @@ -473,35 +445,6 @@ public class TestFromInitializer { assertEquals(getSchema("Query"), schema); } - @Test - @SuppressWarnings("unchecked") - public void testTableSqlWithTableColumnsWithSchema() throws Exception { - LinkConfiguration linkConfig = new LinkConfiguration(); - FromJobConfiguration jobConfig = new FromJobConfiguration(); - - linkConfig.linkConfig.jdbcDriver = GenericJdbcTestConstants.DRIVER; - linkConfig.linkConfig.connectionString = GenericJdbcTestConstants.URL; - jobConfig.fromJobConfig.schemaName = schemaName; - jobConfig.fromJobConfig.sql = tableSql; - jobConfig.fromJobConfig.columns = tableColumns; - jobConfig.fromJobConfig.partitionColumn = "DCOL"; - - MutableContext context = new MutableMapContext(); - InitializerContext initializerContext = new InitializerContext(context); - - @SuppressWarnings("rawtypes") - Initializer initializer = new GenericJdbcFromInitializer(); - initializer.initialize(initializerContext, linkConfig, jobConfig); - - verifyResult(context, - "SELECT ICOL,VCOL FROM (" + tableSql + ") SQOOP_SUBQUERY_ALIAS", - tableColumns, - "\"DCOL\"", - String.valueOf(Types.DOUBLE), - String.valueOf((double)START), - String.valueOf((double)(START+NUMBER_OF_ROWS-1))); - } - /** * Asserts expected content inside the generated context. *
