You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sa...@apache.org on 2015/10/15 20:25:38 UTC
phoenix git commit: NullPointerException when parsing a query with
hints in UNION ALL (Alicia Ying Shu)
Repository: phoenix
Updated Branches:
refs/heads/4.x-HBase-1.0 194a4a387 -> 094f85549
NullPointerException when parsing a query with hints in UNION ALL (Alicia Ying Shu)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/094f8554
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/094f8554
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/094f8554
Branch: refs/heads/4.x-HBase-1.0
Commit: 094f85549d4e2ddc0c4da555a31be930e9b2d282
Parents: 194a4a3
Author: Samarth <sa...@apache.org>
Authored: Thu Oct 15 11:25:23 2015 -0700
Committer: Samarth <sa...@apache.org>
Committed: Thu Oct 15 11:25:23 2015 -0700
----------------------------------------------------------------------
.../org/apache/phoenix/end2end/UnionAllIT.java | 34 ++++++++++++++++++++
.../apache/phoenix/execute/AggregatePlan.java | 10 ++++--
.../org/apache/phoenix/execute/ScanPlan.java | 11 +++++--
.../phoenix/iterate/BaseResultIterators.java | 10 ++++--
.../phoenix/iterate/UnionResultIterators.java | 11 +++++--
5 files changed, 68 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/094f8554/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java
index 1d4055a..6531129 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UnionAllIT.java
@@ -645,4 +645,38 @@ public class UnionAllIT extends BaseOwnClusterHBaseManagedTimeIT {
conn.close();
}
}
+
+ @Test
+ public void testBug2295() throws Exception {
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ conn.setAutoCommit(false);
+
+ try {
+ String ddl = "CREATE TABLE table1(" +
+ "id BIGINT, col1 VARCHAR, col2 integer, CONSTRAINT pk PRIMARY KEY (id)) IMMUTABLE_ROWS=true";
+ createTestTable(getUrl(), ddl);
+
+ ddl = "CREATE TABLE table2(" +
+ "id BIGINT, col1 VARCHAR, col2 integer, CONSTRAINT pk PRIMARY KEY (id)) IMMUTABLE_ROWS=true";
+ createTestTable(getUrl(), ddl);
+
+ ddl = "CREATE index idx_table1_col1 on table1(col1)";
+ createTestTable(getUrl(), ddl);
+
+ ddl = "CREATE index idx_table2_col1 on table2(col1)";
+ createTestTable(getUrl(), ddl);
+
+ ddl = "Explain SELECT /*+ INDEX(table1 idx_table1_col1) */ col1, col2 from table1 where col1='123' " +
+ "union all SELECT /*+ INDEX(table2 idx_table2_col1) */ col1, col2 from table2 where col1='123'";
+ ResultSet rs = conn.createStatement().executeQuery(ddl);
+ assertTrue(rs.next());
+ } finally {
+ String ddl = "drop table table1";
+ conn.createStatement().execute(ddl);
+ ddl = "drop table table2";
+ conn.createStatement().execute(ddl);
+ conn.close();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/094f8554/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java
index 9a415b9..e4f0fbe 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java
@@ -95,12 +95,18 @@ public class AggregatePlan extends BaseQueryPlan {
@Override
public List<KeyRange> getSplits() {
- return splits;
+ if (splits == null)
+ return Collections.emptyList();
+ else
+ return splits;
}
@Override
public List<List<Scan>> getScans() {
- return scans;
+ if (scans == null)
+ return Collections.emptyList();
+ else
+ return scans;
}
private static class OrderingResultIteratorFactory implements ParallelIteratorFactory {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/094f8554/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
index 9f7e482..3098980 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
@@ -19,6 +19,7 @@ package org.apache.phoenix.execute;
import java.sql.SQLException;
+import java.util.Collections;
import java.util.List;
import org.apache.hadoop.hbase.HTableDescriptor;
@@ -156,12 +157,18 @@ public class ScanPlan extends BaseQueryPlan {
@Override
public List<KeyRange> getSplits() {
- return splits;
+ if (splits == null)
+ return Collections.emptyList();
+ else
+ return splits;
}
@Override
public List<List<Scan>> getScans() {
- return scans;
+ if (scans == null)
+ return Collections.emptyList();
+ else
+ return scans;
}
@Override
http://git-wip-us.apache.org/repos/asf/phoenix/blob/094f8554/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java b/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java
index 341bd57..ec961d5 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java
@@ -305,12 +305,18 @@ public abstract class BaseResultIterators extends ExplainTable implements Result
@Override
public List<KeyRange> getSplits() {
- return splits;
+ if (splits == null)
+ return Collections.emptyList();
+ else
+ return splits;
}
@Override
public List<List<Scan>> getScans() {
- return scans;
+ if (scans == null)
+ return Collections.emptyList();
+ else
+ return scans;
}
private static List<byte[]> toBoundaries(List<HRegionLocation> regionLocations) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/094f8554/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java b/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java
index 2296982..5018dad 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java
@@ -18,6 +18,7 @@
package org.apache.phoenix.iterate;
import java.sql.SQLException;
+import java.util.Collections;
import java.util.List;
import org.apache.hadoop.hbase.client.Scan;
@@ -66,7 +67,10 @@ public class UnionResultIterators implements ResultIterators {
@Override
public List<KeyRange> getSplits() {
- return splits;
+ if (splits == null)
+ return Collections.emptyList();
+ else
+ return splits;
}
@Override
@@ -113,7 +117,10 @@ public class UnionResultIterators implements ResultIterators {
@Override
public List<List<Scan>> getScans() {
- return scans;
+ if (scans == null)
+ return Collections.emptyList();
+ else
+ return scans;
}
@Override