[28/50] [abbrv] phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2018-01-19 Thread tdsilva
PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/system-catalog
Commit: 72bc8190272480fae17475398ef492a3071a3a44
Parents: d6e61af
Author: Samarth Jain 
Authored: Fri Dec 8 14:40:22 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:40:22 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/72bc8190/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index bfc6819..49efa97 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/72bc8190/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 eb09813..bd67fa8 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
@@ -607,11 +607,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



[1/2] phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-22 Thread jamestaylor
Repository: phoenix
Updated Branches:
  refs/heads/4.x-cdh5.11.2 d200c984e -> e2c06b06f


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/4.x-cdh5.11.2
Commit: ae72d0524446d403da93b5e754f101211cb9a227
Parents: d200c98
Author: Samarth Jain 
Authored: Fri Dec 8 14:40:22 2017 -0800
Committer: James Taylor 
Committed: Fri Dec 22 11:07:09 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/ae72d052/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index bfc6819..49efa97 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/ae72d052/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 eb09813..bd67fa8 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
@@ -607,11 +607,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-08 Thread samarth
Repository: phoenix
Updated Branches:
  refs/heads/4.13-HBase-0.98 9ab3bbe61 -> 455d0a6e4


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/4.13-HBase-0.98
Commit: 455d0a6e4b94f67d44caa228f5fe2aef12082271
Parents: 9ab3bbe
Author: Samarth Jain 
Authored: Fri Dec 8 14:46:24 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:46:24 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/455d0a6e/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index a662986..c15641d 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/455d0a6e/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 f397c8a..f9b90b4 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
@@ -609,11 +609,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-08 Thread samarth
Repository: phoenix
Updated Branches:
  refs/heads/4.13-HBase-1.1 3634aac10 -> 7cf1c7661


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/4.13-HBase-1.1
Commit: 7cf1c766100e60fe9d32863faf2de79fc78dc91f
Parents: 3634aac
Author: Samarth Jain 
Authored: Fri Dec 8 14:46:08 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:46:08 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/7cf1c766/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index bfc6819..49efa97 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/7cf1c766/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 eb09813..bd67fa8 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
@@ -607,11 +607,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-08 Thread samarth
Repository: phoenix
Updated Branches:
  refs/heads/4.13-HBase-1.2 bfec658d0 -> 59180b817


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/4.13-HBase-1.2
Commit: 59180b8176c96b722a677782a6494356ef9a97af
Parents: bfec658
Author: Samarth Jain 
Authored: Fri Dec 8 14:45:54 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:45:54 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/59180b81/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index bfc6819..49efa97 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/59180b81/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 eb09813..bd67fa8 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
@@ -607,11 +607,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-08 Thread samarth
Repository: phoenix
Updated Branches:
  refs/heads/4.13-HBase-1.3 17fa65486 -> cc3b2754f


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/4.13-HBase-1.3
Commit: cc3b2754fee43a0ac23abc3ad7ba5c958d68853c
Parents: 17fa654
Author: Samarth Jain 
Authored: Fri Dec 8 14:45:33 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:45:33 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/cc3b2754/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index bfc6819..49efa97 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cc3b2754/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 eb09813..bd67fa8 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
@@ -607,11 +607,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-08 Thread samarth
Repository: phoenix
Updated Branches:
  refs/heads/5.x-HBase-2.0 385c42372 -> 8dc47e807


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/5.x-HBase-2.0
Commit: 8dc47e807624db31fe5112085005f089ae0482ab
Parents: 385c423
Author: Samarth Jain 
Authored: Fri Dec 8 14:44:31 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:44:31 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/8dc47e80/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index 74f4f34..1608d85 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1069,4 +1069,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/8dc47e80/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 e710c82..05d3d9e 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
@@ -607,11 +607,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-08 Thread samarth
Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-1.2 bfec658d0 -> 3f1784ffe


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/4.x-HBase-1.2
Commit: 3f1784ffebf48b813d43dd676bd8b1575e17656b
Parents: bfec658
Author: Samarth Jain 
Authored: Fri Dec 8 14:43:44 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:43:44 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/3f1784ff/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index bfc6819..49efa97 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/3f1784ff/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 eb09813..bd67fa8 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
@@ -607,11 +607,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-08 Thread samarth
Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-1.1 3634aac10 -> ba0bc11e5


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/4.x-HBase-1.1
Commit: ba0bc11e576975df4fa96a8c5b2c7a94de34c308
Parents: 3634aac
Author: Samarth Jain 
Authored: Fri Dec 8 14:43:25 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:43:25 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/ba0bc11e/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index bfc6819..49efa97 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/ba0bc11e/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 eb09813..bd67fa8 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
@@ -607,11 +607,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-08 Thread samarth
Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-0.98 65263e479 -> c14857374


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/4.x-HBase-0.98
Commit: c14857374f0da31fc110a8d2e7e081c78beda6f0
Parents: 65263e4
Author: Samarth Jain 
Authored: Fri Dec 8 14:42:36 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:42:36 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/c1485737/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index a662986..c15641d 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/c1485737/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 f397c8a..f9b90b4 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
@@ -609,11 +609,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }



phoenix git commit: PHOENIX-4397 Incorrect query results when with stats are disabled on a salted table

2017-12-08 Thread samarth
Repository: phoenix
Updated Branches:
  refs/heads/master d6e61af80 -> 72bc81902


PHOENIX-4397 Incorrect query results when with stats are disabled on a salted 
table


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

Branch: refs/heads/master
Commit: 72bc8190272480fae17475398ef492a3071a3a44
Parents: d6e61af
Author: Samarth Jain 
Authored: Fri Dec 8 14:40:22 2017 -0800
Committer: Samarth Jain 
Committed: Fri Dec 8 14:40:22 2017 -0800

--
 .../end2end/ExplainPlanWithStatsEnabledIT.java  | 36 
 .../phoenix/iterate/BaseResultIterators.java|  6 +---
 2 files changed, 37 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/phoenix/blob/72bc8190/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
--
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
index bfc6819..49efa97 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
@@ -1068,4 +1068,40 @@ public class ExplainPlanWithStatsEnabledIT extends 
ParallelStatsEnabledIT {
 .getQueryPlan().getScans().get(0).size());
 }
 }
+
+@Test
+public void testQueryingWithUseStatsForParallelizationOnOff() throws 
SQLException {
+testUseStatsForParallelizationOnSaltedTable(true, true);
+testUseStatsForParallelizationOnSaltedTable(true, false);
+testUseStatsForParallelizationOnSaltedTable(false, true);
+testUseStatsForParallelizationOnSaltedTable(false, false);
+}
+
+private void testUseStatsForParallelizationOnSaltedTable(boolean 
useStatsFlag, boolean salted)
+throws SQLException {
+String tableName = generateUniqueName();
+Connection conn = DriverManager.getConnection(getUrl());
+conn.createStatement().execute(
+"create table " + tableName + "(k varchar not null primary key, v 
varchar) "
++ (salted ? " SALT_BUCKETS=2," : "") + " 
USE_STATS_FOR_PARALLELIZATION="
++ useStatsFlag);
+conn.createStatement().execute("upsert into " + tableName + " values 
('1', 'B')");
+conn.createStatement().execute("upsert into " + tableName + " values 
('2', 'A')");
+conn.commit();
+String query = "SELECT V FROM " + tableName + " ORDER BY V";
+ResultSet rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+
+// Collect stats and make sure query still works correctly
+conn.createStatement().execute("UPDATE STATISTICS " + tableName);
+rs = conn.createStatement().executeQuery(query);
+assertTrue(rs.next());
+assertEquals("A", rs.getString(1));
+assertTrue(rs.next());
+assertEquals("B", rs.getString(1));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/72bc8190/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 eb09813..bd67fa8 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
@@ -607,11 +607,7 @@ public abstract class BaseResultIterators extends 
ExplainTable implements Result
 estimate.bytesEstimate += gpsBytes;
 }
 }
-if (startNewScan && !scans.isEmpty() && useStatsForParallelization) {
-/*
- * Note that even if region boundary was crossed, if we are not 
using stats for
- * parallelization, nothing gets added to the parallel scans.
- */
+if (startNewScan && !scans.isEmpty()) {
 parallelScans.add(scans);
 scans = Lists.newArrayListWithExpectedSize(1);
 }