You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by to...@apache.org on 2016/08/24 19:18:45 UTC
kudu git commit: KUDU-1157. Don't use array reference equality for
EMPTY_ARRAY
Repository: kudu
Updated Branches:
refs/heads/master df3d070e5 -> d911b304d
KUDU-1157. Don't use array reference equality for EMPTY_ARRAY
It seems like the only way that the user can specify these byte[] bounds
is some deprecated 'raw bounds' APIs. So, this isn't likely a fix for
any real bugs. However, it's quite bad form to compare reference
equality on arrays.
Change-Id: I30163098926822aafbf23b03ba4c9e26a7c91349
Reviewed-on: http://gerrit.cloudera.org:8080/4101
Tested-by: Kudu Jenkins
Reviewed-by: Dan Burkert <da...@cloudera.com>
Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/d911b304
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/d911b304
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/d911b304
Branch: refs/heads/master
Commit: d911b304d7f4e2c345a01d4e6a7637cf71835a4a
Parents: df3d070
Author: Todd Lipcon <to...@apache.org>
Authored: Tue Aug 23 15:53:51 2016 -0700
Committer: Todd Lipcon <to...@apache.org>
Committed: Wed Aug 24 19:17:04 2016 +0000
----------------------------------------------------------------------
.../kudu/client/AbstractKuduScannerBuilder.java | 4 ++--
.../java/org/apache/kudu/client/AsyncKuduScanner.java | 14 ++++++--------
.../java/org/apache/kudu/client/KuduScanToken.java | 14 ++++++--------
3 files changed, 14 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kudu/blob/d911b304/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java b/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
index 47a391a..9b648c3 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
@@ -274,7 +274,7 @@ public abstract class AbstractKuduScannerBuilder
*/
@Deprecated
public S lowerBoundRaw(byte[] startPrimaryKey) {
- if (lowerBoundPrimaryKey == AsyncKuduClient.EMPTY_ARRAY ||
+ if (lowerBoundPrimaryKey.length == 0 ||
Bytes.memcmp(startPrimaryKey, lowerBoundPrimaryKey) > 0) {
this.lowerBoundPrimaryKey = startPrimaryKey;
}
@@ -299,7 +299,7 @@ public abstract class AbstractKuduScannerBuilder
*/
@Deprecated
public S exclusiveUpperBoundRaw(byte[] endPrimaryKey) {
- if (upperBoundPrimaryKey == AsyncKuduClient.EMPTY_ARRAY ||
+ if (upperBoundPrimaryKey.length == 0 ||
Bytes.memcmp(endPrimaryKey, upperBoundPrimaryKey) < 0) {
this.upperBoundPrimaryKey = endPrimaryKey;
}
http://git-wip-us.apache.org/repos/asf/kudu/blob/d911b304/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
index b80e765..20cf9f2 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
@@ -268,8 +268,8 @@ public final class AsyncKuduScanner {
this.batchSizeBytes = batchSizeBytes;
if (!table.getPartitionSchema().isSimpleRangePartitioning() &&
- (startPrimaryKey != AsyncKuduClient.EMPTY_ARRAY ||
- endPrimaryKey != AsyncKuduClient.EMPTY_ARRAY) &&
+ (startPrimaryKey.length != 0 ||
+ endPrimaryKey.length != 0) &&
PARTITION_PRUNE_WARN.getAndSet(false)) {
LOG.warn("Starting full table scan. " +
"In the future this scan may be automatically optimized with partition pruning.");
@@ -458,7 +458,7 @@ public final class AsyncKuduScanner {
// Stop scanning if the non-covered range is past the end partition key.
if (ncre.getNonCoveredRangeEnd().length == 0
- || (endPartitionKey != AsyncKuduClient.EMPTY_ARRAY
+ || (endPartitionKey.length != 0
&& Bytes.memcmp(endPartitionKey, ncre.getNonCoveredRangeEnd()) <= 0)) {
hasMore = false;
closed = true; // the scanner is closed on the other side at this point
@@ -550,7 +550,7 @@ public final class AsyncKuduScanner {
Partition partition = tablet.getPartition();
// Stop scanning if we have scanned until or past the end partition key.
if (partition.isEndPartition()
- || (this.endPartitionKey != AsyncKuduClient.EMPTY_ARRAY
+ || (this.endPartitionKey.length != 0
&& Bytes.memcmp(this.endPartitionKey, partition.getPartitionKeyEnd()) <= 0)) {
hasMore = false;
closed = true; // the scanner is closed on the other side at this point
@@ -778,13 +778,11 @@ public final class AsyncKuduScanner {
newBuilder.setSnapTimestamp(AsyncKuduScanner.this.getSnapshotTimestamp());
}
- if (AsyncKuduScanner.this.startPrimaryKey != AsyncKuduClient.EMPTY_ARRAY &&
- AsyncKuduScanner.this.startPrimaryKey.length > 0) {
+ if (AsyncKuduScanner.this.startPrimaryKey.length > 0) {
newBuilder.setStartPrimaryKey(ZeroCopyLiteralByteString.copyFrom(startPrimaryKey));
}
- if (AsyncKuduScanner.this.endPrimaryKey != AsyncKuduClient.EMPTY_ARRAY &&
- AsyncKuduScanner.this.endPrimaryKey.length > 0) {
+ if (AsyncKuduScanner.this.endPrimaryKey.length > 0) {
newBuilder.setStopPrimaryKey(ZeroCopyLiteralByteString.copyFrom(endPrimaryKey));
}
http://git-wip-us.apache.org/repos/asf/kudu/blob/d911b304/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
index cfecb67..6b121b2 100644
--- a/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
+++ b/java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
@@ -213,8 +213,8 @@ public class KuduScanToken implements Comparable<KuduScanToken> {
@Override
public List<KuduScanToken> build() {
- if (lowerBoundPartitionKey != AsyncKuduClient.EMPTY_ARRAY ||
- upperBoundPartitionKey != AsyncKuduClient.EMPTY_ARRAY) {
+ if (lowerBoundPartitionKey.length != 0 ||
+ upperBoundPartitionKey.length != 0) {
throw new IllegalArgumentException(
"Partition key bounds may not be set on KuduScanTokenBuilder");
}
@@ -254,18 +254,16 @@ public class KuduScanToken implements Comparable<KuduScanToken> {
proto.addColumnPredicates(predicate.toPB());
}
- if (lowerBoundPrimaryKey != AsyncKuduClient.EMPTY_ARRAY && lowerBoundPrimaryKey.length > 0) {
+ if (lowerBoundPrimaryKey.length > 0) {
proto.setLowerBoundPrimaryKey(ZeroCopyLiteralByteString.copyFrom(lowerBoundPrimaryKey));
}
- if (upperBoundPrimaryKey != AsyncKuduClient.EMPTY_ARRAY && upperBoundPrimaryKey.length > 0) {
+ if (upperBoundPrimaryKey.length > 0) {
proto.setUpperBoundPrimaryKey(ZeroCopyLiteralByteString.copyFrom(upperBoundPrimaryKey));
}
- if (lowerBoundPartitionKey != AsyncKuduClient.EMPTY_ARRAY &&
- lowerBoundPartitionKey.length > 0) {
+ if (lowerBoundPartitionKey.length > 0) {
proto.setLowerBoundPartitionKey(ZeroCopyLiteralByteString.copyFrom(lowerBoundPartitionKey));
}
- if (upperBoundPartitionKey != AsyncKuduClient.EMPTY_ARRAY &&
- upperBoundPartitionKey.length > 0) {
+ if (upperBoundPartitionKey.length > 0) {
proto.setUpperBoundPartitionKey(ZeroCopyLiteralByteString.copyFrom(upperBoundPartitionKey));
}