You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ve...@apache.org on 2014/11/19 05:20:54 UTC

sqoop git commit: SQOOP-1764: Numeric Overflow when getting extent map (David Robson via Venkat Ranganathan)

Repository: sqoop
Updated Branches:
  refs/heads/trunk ad13ad081 -> eceff4c8f


SQOOP-1764: Numeric Overflow when getting extent map
(David Robson via Venkat Ranganathan)


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

Branch: refs/heads/trunk
Commit: eceff4c8f42df5a4f13ea5bf69eb33c3020f12a3
Parents: ad13ad0
Author: Venkat Ranganathan <ve...@hortonworks.com>
Authored: Tue Nov 18 20:20:29 2014 -0800
Committer: Venkat Ranganathan <ve...@hortonworks.com>
Committed: Tue Nov 18 20:20:29 2014 -0800

----------------------------------------------------------------------
 .../manager/oracle/OraOopOracleDataChunk.java   |  2 +-
 .../oracle/OraOopOracleDataChunkExtent.java     | 22 ++++++++++----------
 .../oracle/OraOopOracleDataChunkPartition.java  | 10 ++++-----
 .../manager/oracle/OraOopOracleQueries.java     |  6 +++---
 .../manager/oracle/OraOopOracleQueriesTest.java |  8 +++++++
 5 files changed, 28 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/eceff4c8/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunk.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunk.java b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunk.java
index bc94abd..eb67fd2 100644
--- a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunk.java
+++ b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunk.java
@@ -29,7 +29,7 @@ public abstract class OraOopOracleDataChunk implements Writable {
 
   private String id;
 
-  public abstract int getNumberOfBlocks();
+  public abstract long getNumberOfBlocks();
 
   public String getWhereClause() {
     return "1=1";

http://git-wip-us.apache.org/repos/asf/sqoop/blob/eceff4c8/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkExtent.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkExtent.java b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkExtent.java
index 5262d0e..20b39ee 100644
--- a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkExtent.java
+++ b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkExtent.java
@@ -30,15 +30,16 @@ public class OraOopOracleDataChunkExtent extends OraOopOracleDataChunk {
 
   private int oracleDataObjectId;
   private int relativeDatafileNumber;
-  private int startBlockNumber;
-  private int finishBlockNumber;
+  private long startBlockNumber;
+  private long finishBlockNumber;
 
   OraOopOracleDataChunkExtent() {
 
   }
 
   OraOopOracleDataChunkExtent(String id, int oracleDataObjectId,
-      int relativeDatafileNumber, int startBlockNumber, int finishBlockNumber) {
+      int relativeDatafileNumber, long startBlockNumber,
+      long finishBlockNumber) {
 
     this.setId(id);
     this.oracleDataObjectId = oracleDataObjectId;
@@ -67,8 +68,8 @@ public class OraOopOracleDataChunkExtent extends OraOopOracleDataChunk {
     Text.writeString(output, this.getId());
     output.writeInt(this.oracleDataObjectId);
     output.writeInt(this.relativeDatafileNumber);
-    output.writeInt(this.startBlockNumber);
-    output.writeInt(this.finishBlockNumber);
+    output.writeLong(this.startBlockNumber);
+    output.writeLong(this.finishBlockNumber);
   }
 
   @Override
@@ -76,17 +77,16 @@ public class OraOopOracleDataChunkExtent extends OraOopOracleDataChunk {
     this.setId(Text.readString(input));
     this.oracleDataObjectId = input.readInt();
     this.relativeDatafileNumber = input.readInt();
-    this.startBlockNumber = input.readInt();
-    this.finishBlockNumber = input.readInt();
+    this.startBlockNumber = input.readLong();
+    this.finishBlockNumber = input.readLong();
   }
 
   @Override
-  public int getNumberOfBlocks() {
-
-    if (this.finishBlockNumber == 0 && this.startBlockNumber == 0) {
+  public long getNumberOfBlocks() {
+    if (this.finishBlockNumber == 0L && this.startBlockNumber == 0L) {
       return 0;
     } else {
-      return (this.finishBlockNumber - this.startBlockNumber) + 1;
+      return (this.finishBlockNumber - this.startBlockNumber) + 1L;
     }
   }
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/eceff4c8/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkPartition.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkPartition.java b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkPartition.java
index fbd8a16..59889b8 100644
--- a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkPartition.java
+++ b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleDataChunkPartition.java
@@ -30,21 +30,21 @@ import org.apache.hadoop.io.Text;
 public class OraOopOracleDataChunkPartition extends OraOopOracleDataChunk {
 
   private boolean isSubPartition;
-  private int blocks;
+  private long blocks;
 
   OraOopOracleDataChunkPartition() {
 
   }
 
   OraOopOracleDataChunkPartition(String partitionName, boolean isSubPartition,
-      int blocks) {
+      long blocks) {
     this.setId(partitionName);
     this.isSubPartition = isSubPartition;
     this.blocks = blocks;
   }
 
   @Override
-  public int getNumberOfBlocks() {
+  public long getNumberOfBlocks() {
     return this.blocks;
   }
 
@@ -52,14 +52,14 @@ public class OraOopOracleDataChunkPartition extends OraOopOracleDataChunk {
   public void write(DataOutput output) throws IOException {
     Text.writeString(output, this.getId());
     output.writeBoolean(this.isSubPartition);
-    output.writeInt(this.blocks);
+    output.writeLong(this.blocks);
   }
 
   @Override
   public void readFields(DataInput input) throws IOException {
     this.setId(Text.readString(input));
     this.isSubPartition = input.readBoolean();
-    this.blocks = input.readInt();
+    this.blocks = input.readLong();
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/sqoop/blob/eceff4c8/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java
index b65d009..ea64c6d 100644
--- a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java
+++ b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java
@@ -324,7 +324,7 @@ public final class OraOopOracleQueries {
       OraOopOracleDataChunkPartition dataChunk =
           new OraOopOracleDataChunkPartition(resultSet
               .getString("partition_name"), resultSet
-              .getBoolean("is_subpartition"), resultSet.getInt("blocks"));
+              .getBoolean("is_subpartition"), resultSet.getLong("blocks"));
       result.add(dataChunk);
     }
     resultSet.close();
@@ -417,8 +417,8 @@ public final class OraOopOracleQueries {
       OraOopOracleDataChunkExtent dataChunk =
           new OraOopOracleDataChunkExtent(dataChunkId, resultSet
               .getInt("data_object_id"), resultSet.getInt("relative_fno"),
-              resultSet.getInt("start_block_id"), resultSet
-                  .getInt("end_block_id"));
+              resultSet.getLong("start_block_id"), resultSet
+                  .getLong("end_block_id"));
       result.add(dataChunk);
     }
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/eceff4c8/src/test/org/apache/sqoop/manager/oracle/OraOopOracleQueriesTest.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/sqoop/manager/oracle/OraOopOracleQueriesTest.java b/src/test/org/apache/sqoop/manager/oracle/OraOopOracleQueriesTest.java
index 09314da..abd3329 100644
--- a/src/test/org/apache/sqoop/manager/oracle/OraOopOracleQueriesTest.java
+++ b/src/test/org/apache/sqoop/manager/oracle/OraOopOracleQueriesTest.java
@@ -51,4 +51,12 @@ public class OraOopOracleQueriesTest extends OraOopTestCase {
     }
   }
 
+  @Test
+  public void testLongBlockId() {
+    OraOopOracleDataChunkExtent chunk =
+        new OraOopOracleDataChunkExtent("1", 100, 1, 2147483648L, 4294967295L);
+    String whereClause = chunk.getWhereClause();
+    Assert.assertNotNull(whereClause);
+  }
+
 }