You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ka...@apache.org on 2013/05/15 06:52:06 UTC

git commit: SQOOP-1046: Sqoop2: Importing single row using decimal splitter will not import anything

Updated Branches:
  refs/heads/sqoop2 c0a43d436 -> 2941fa666


SQOOP-1046: Sqoop2: Importing single row using decimal splitter will not import anything

(Jarek Jarcec Cecho via Kate Ting)


Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/2941fa66
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/2941fa66
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/2941fa66

Branch: refs/heads/sqoop2
Commit: 2941fa666c7ac111776b8cbfb47001f7ff2d2431
Parents: c0a43d4
Author: Kate Ting <ka...@apache.org>
Authored: Wed May 15 00:51:28 2013 -0400
Committer: Kate Ting <ka...@apache.org>
Committed: Wed May 15 00:51:28 2013 -0400

----------------------------------------------------------------------
 .../jdbc/GenericJdbcImportPartitioner.java         |   18 +++++++++++++-
 .../connector/jdbc/TestImportPartitioner.java      |   19 +++++++++++++++
 2 files changed, 36 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/2941fa66/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcImportPartitioner.java
----------------------------------------------------------------------
diff --git a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcImportPartitioner.java b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcImportPartitioner.java
index 6d1a9fd..f80f30d 100644
--- a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcImportPartitioner.java
+++ b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcImportPartitioner.java
@@ -169,7 +169,7 @@ public class GenericJdbcImportPartitioner extends Partitioner<ConnectionConfigur
   protected List<Partition> partitionNumericColumn() {
     List<Partition> partitions = new LinkedList<Partition>();
 
-    // All null valeus will result in single partition
+    // All null values will result in single partition
     if (partitionMinValue == null && partitionMaxValue == null) {
       GenericJdbcImportPartition partition = new GenericJdbcImportPartition();
       partition.setConditions(partitionColumnName + "IS NULL");
@@ -185,6 +185,13 @@ public class GenericJdbcImportPartitioner extends Partitioner<ConnectionConfigur
     BigDecimal minValue = new BigDecimal(partitionMinValue);
     BigDecimal maxValue = new BigDecimal(partitionMaxValue);
 
+    // Having one single value means that we can create only one single split
+    if(minValue.equals(maxValue)) {
+      GenericJdbcImportPartition partition = new GenericJdbcImportPartition();
+      partition.setConditions(constructConditions(minValue));
+      partitions.add(partition);
+    }
+
     // Get all the split points together.
     List<BigDecimal> splitPoints = new LinkedList<BigDecimal>();
 
@@ -240,4 +247,13 @@ public class GenericJdbcImportPartitioner extends Partitioner<ConnectionConfigur
     conditions.append(upperBound);
     return conditions.toString();
   }
+
+  protected String constructConditions(Object value) {
+    return new StringBuilder()
+      .append(partitionColumnName)
+      .append(" = ")
+      .append(value)
+      .toString()
+     ;
+  }
 }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/2941fa66/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestImportPartitioner.java
----------------------------------------------------------------------
diff --git a/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestImportPartitioner.java b/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestImportPartitioner.java
index 3150e7c..ee314d0 100644
--- a/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestImportPartitioner.java
+++ b/connector/connector-generic-jdbc/src/test/java/org/apache/sqoop/connector/jdbc/TestImportPartitioner.java
@@ -238,6 +238,25 @@ public class TestImportPartitioner extends TestCase {
     });
   }
 
+  public void testNumericSinglePartition() throws Exception {
+    MutableContext context = new MutableMapContext();
+    context.setString(GenericJdbcConnectorConstants.CONNECTOR_JDBC_PARTITION_COLUMNNAME, "DCOL");
+    context.setString(GenericJdbcConnectorConstants.CONNECTOR_JDBC_PARTITION_COLUMNTYPE, String.valueOf(Types.NUMERIC));
+    context.setString(GenericJdbcConnectorConstants.CONNECTOR_JDBC_PARTITION_MINVALUE, String.valueOf(new BigDecimal(START)));
+    context.setString(GenericJdbcConnectorConstants.CONNECTOR_JDBC_PARTITION_MAXVALUE, String.valueOf(new BigDecimal(START)));
+
+    ConnectionConfiguration connConf = new ConnectionConfiguration();
+    ImportJobConfiguration jobConf = new ImportJobConfiguration();
+
+    Partitioner partitioner = new GenericJdbcImportPartitioner();
+    PartitionerContext partitionerContext = new PartitionerContext(context, 3);
+    List<Partition> partitions = partitioner.getPartitions(partitionerContext, connConf, jobConf);
+
+    verifyResult(partitions, new String[]{
+      "DCOL = -5",
+    });
+  }
+
   private void verifyResult(List<Partition> partitions,
       String[] expected) {
     assertEquals(expected.length, partitions.size());