diff --git a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputFormat.java b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputFormat.java index 8a0a26a..14c5a77 100644 --- a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputFormat.java +++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputFormat.java @@ -132,7 +132,7 @@ intervals.get(intervals.size()-1).setRight(null); splits = new InputSplit[intervals.size()]; for (int i = 0; i < intervals.size(); i++) { - splits[i] = new JdbcInputSplit(partitionColumn, intervals.get(i).getLeft(), intervals.get(i).getRight()); + splits[i] = new JdbcInputSplit(partitionColumn, intervals.get(i).getLeft(), intervals.get(i).getRight(), tablePaths[0]); } } else { int numRecords = dbAccessor.getTotalNumberOfRecords(job); diff --git a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputSplit.java b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputSplit.java index a10ed75..e591413 100644 --- a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputSplit.java +++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputSplit.java @@ -32,7 +32,6 @@ private String lowerBound = null; private String upperBound = null; - public JdbcInputSplit() { super(null, 0, 0, EMPTY_ARRAY); this.limit = -1; @@ -51,14 +50,8 @@ public JdbcInputSplit(int limit, int offset, Path dummyPath) { this.offset = offset; } - public JdbcInputSplit(int limit, int offset) { - super(null, 0, 0, EMPTY_ARRAY); - this.limit = limit; - this.offset = offset; - } - - public JdbcInputSplit(String partitionColumn, String lowerBound, String upperBound) { - super(null, 0, 0, EMPTY_ARRAY); + public JdbcInputSplit(String partitionColumn, String lowerBound, String upperBound, Path dummyPath) { + super(dummyPath, 0, 0, EMPTY_ARRAY); this.partitionColumn = partitionColumn; this.lowerBound = lowerBound; this.upperBound = upperBound; @@ -72,7 +65,17 @@ public void write(DataOutput out) throws IOException { if (partitionColumn != null) { out.writeBoolean(true); out.writeUTF(partitionColumn); + } else { + out.writeBoolean(false); + } + if (lowerBound != null) { + out.writeBoolean(true); out.writeUTF(lowerBound); + } else { + out.writeBoolean(false); + } + if (upperBound != null) { + out.writeBoolean(true); out.writeUTF(upperBound); } else { out.writeBoolean(false); @@ -88,7 +91,13 @@ public void readFields(DataInput in) throws IOException { boolean partitionColumnExists = in.readBoolean(); if (partitionColumnExists) { partitionColumn = in.readUTF(); + } + boolean lowerBoundExists = in.readBoolean(); + if (lowerBoundExists) { lowerBound = in.readUTF(); + } + boolean upperBoundExists = in.readBoolean(); + if (upperBoundExists) { upperBound = in.readUTF(); } }