You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by la...@apache.org on 2019/07/16 22:42:22 UTC
[phoenix] branch 4.x-HBase-1.3 updated: PHOENIX-5290 HashJoinMoreIT
is flapping.
This is an automated email from the ASF dual-hosted git repository.
larsh pushed a commit to branch 4.x-HBase-1.3
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/4.x-HBase-1.3 by this push:
new 9364a94 PHOENIX-5290 HashJoinMoreIT is flapping.
9364a94 is described below
commit 9364a9431d604d072ca78932c39edbc85d5aaf3d
Author: Lars Hofhansl <la...@apache.org>
AuthorDate: Tue Jul 16 15:42:58 2019 -0700
PHOENIX-5290 HashJoinMoreIT is flapping.
---
.../phoenix/end2end/RowValueConstructorIT.java | 32 ++++++++++++++++++++++
.../org/apache/phoenix/compile/WhereOptimizer.java | 8 ++++--
.../org/apache/phoenix/schema/types/PVarchar.java | 2 +-
3 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RowValueConstructorIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RowValueConstructorIT.java
index fb04261..390d831 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RowValueConstructorIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RowValueConstructorIT.java
@@ -51,6 +51,7 @@ import java.sql.Timestamp;
import java.util.List;
import java.util.Properties;
+import org.apache.phoenix.jdbc.PhoenixPreparedStatement;
import org.apache.phoenix.util.DateUtil;
import org.apache.phoenix.util.PhoenixRuntime;
import org.apache.phoenix.util.PropertiesUtil;
@@ -1691,6 +1692,37 @@ public class RowValueConstructorIT extends ParallelStatsDisabledIT {
}
}
+ @Test
+ public void testTrailingSeparator() throws Exception {
+ Connection conn = null;
+ try {
+ conn = DriverManager.getConnection(getUrl());
+ conn.createStatement().execute("CREATE TABLE test2961 (\n"
+ + "ACCOUNT_ID VARCHAR NOT NULL,\n" + "BUCKET_ID VARCHAR NOT NULL,\n"
+ + "OBJECT_ID VARCHAR NOT NULL,\n" + "OBJECT_VERSION VARCHAR NOT NULL,\n"
+ + "LOC VARCHAR,\n"
+ + "CONSTRAINT PK PRIMARY KEY (ACCOUNT_ID, BUCKET_ID, OBJECT_ID, OBJECT_VERSION DESC))");
+
+ String sql = "SELECT OBJ.ACCOUNT_ID from test2961 as OBJ where "
+ + "(OBJ.ACCOUNT_ID, OBJ.BUCKET_ID, OBJ.OBJECT_ID, OBJ.OBJECT_VERSION) IN "
+ + "((?,?,?,?),(?,?,?,?))";
+
+ PhoenixPreparedStatement statement = conn.prepareStatement(sql)
+ .unwrap(PhoenixPreparedStatement.class);
+ statement.setString(1, new String(new char[] { (char) 3 }));
+ statement.setString(2, new String(new char[] { (char) 55 }));
+ statement.setString(3, new String(new char[] { (char) 39 }));
+ statement.setString(4, new String(new char[] { (char) 0 }));
+ statement.setString(5, new String(new char[] { (char) 83 }));
+ statement.setString(6, new String(new char[] { (char) 15 }));
+ statement.setString(7, new String(new char[] { (char) 55 }));
+ statement.setString(8, new String(new char[] { (char) 147 }));
+ statement.optimizeQuery(sql);
+ } finally {
+ conn.close();
+ }
+ }
+
private StringBuilder generateQueryToTest(int numItemsInClause, String fullViewName) {
StringBuilder querySb =
new StringBuilder("SELECT OBJECT_ID,OBJECT_DATA2,OBJECT_DATA FROM " + fullViewName);
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
index b845a09..0964d9d 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
@@ -347,7 +347,9 @@ public class WhereOptimizer {
byte[] lowerRange = KeyRange.UNBOUND;
boolean lowerInclusive = false;
// Lower range of trailing part of RVC must be true, so we can form a new range to intersect going forward
- if (!range.lowerUnbound() && Bytes.startsWith(range.getLowerRange(), clippedResult.getLowerRange())) {
+ if (!range.lowerUnbound()
+ && range.getLowerRange().length > clippedResult.getLowerRange().length
+ && Bytes.startsWith(range.getLowerRange(), clippedResult.getLowerRange())) {
lowerRange = range.getLowerRange();
int offset = clippedResult.getLowerRange().length + separatorLength;
ptr.set(lowerRange, offset, lowerRange.length - offset);
@@ -356,7 +358,9 @@ public class WhereOptimizer {
}
byte[] upperRange = KeyRange.UNBOUND;
boolean upperInclusive = false;
- if (!range.upperUnbound() && Bytes.startsWith(range.getUpperRange(), clippedResult.getUpperRange())) {
+ if (!range.upperUnbound()
+ && range.getUpperRange().length > clippedResult.getUpperRange().length
+ && Bytes.startsWith(range.getUpperRange(), clippedResult.getUpperRange())) {
upperRange = range.getUpperRange();
int offset = clippedResult.getUpperRange().length + separatorLength;
ptr.set(upperRange, offset, upperRange.length - offset);
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/types/PVarchar.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/types/PVarchar.java
index a99925c..bee0d56 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/types/PVarchar.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/types/PVarchar.java
@@ -175,7 +175,7 @@ public class PVarchar extends PDataType<String> {
sampleChars = new char[length];
}
for (int i = 0; i < length; i++) {
- sampleChars[i] = (char) RANDOM.get().nextInt(Byte.MAX_VALUE);
+ sampleChars[i] = (char) (RANDOM.get().nextInt(Byte.MAX_VALUE-2) + 1);
}
return new String(sampleChars);
}