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());