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 cddbb045..5a357bd7 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 @@ private void configureTableProperties(MutableContext context, LinkConfiguration } } 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); 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 ec1c3b73..adbd457b 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 void validate(FromJobConfig config) { 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"); } } } 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 31fafb15..ab319323 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 @@ -312,34 +312,6 @@ public void testIncrementalTableSqlFromZero() throws Exception { assertEquals(String.valueOf(START+NUMBER_OF_ROWS-1), context.getString(GenericJdbcConnectorConstants.CONNECTOR_JDBC_LAST_INCREMENTAL_VALUE)); } - @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 { @@ -473,35 +445,6 @@ public void testGetSchemaForSql() throws Exception { 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. *