This is an automated email from the ASF dual-hosted git repository.

pboado pushed a commit to branch 5.x-cdh6
in repository https://gitbox.apache.org/repos/asf/phoenix.git

commit 30b73ed2f2d796fc9113f7b8847046b36124bc49
Author: Gokcen Iskender <gisken...@salesforce.com>
AuthorDate: Wed Apr 24 21:16:34 2019 +0100

    PHOENIX-5168 IndexScrutinyTool to output to Table when that option is given
---
 .../phoenix/end2end/IndexScrutinyToolIT.java       | 38 ++++++++++++++--------
 .../phoenix/mapreduce/index/IndexScrutinyTool.java |  4 ++-
 2 files changed, 27 insertions(+), 15 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexScrutinyToolIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexScrutinyToolIT.java
index 046c3f0..72857e7 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexScrutinyToolIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexScrutinyToolIT.java
@@ -10,6 +10,7 @@
  */
 package org.apache.phoenix.end2end;
 
+import static 
org.apache.phoenix.mapreduce.index.IndexScrutinyTableOutput.OUTPUT_TABLE_NAME;
 import static 
org.apache.phoenix.mapreduce.index.PhoenixScrutinyJobCounters.BAD_COVERED_COL_VAL_COUNT;
 import static 
org.apache.phoenix.mapreduce.index.PhoenixScrutinyJobCounters.BATCHES_PROCESSED_COUNT;
 import static 
org.apache.phoenix.mapreduce.index.PhoenixScrutinyJobCounters.INVALID_ROW_COUNT;
@@ -172,6 +173,14 @@ public class IndexScrutinyToolIT {
         protected long getCounterValue(Counters counters, 
Enum<PhoenixScrutinyJobCounters> counter) {
             return counters.findCounter(counter).getValue();
         }
+
+        protected int countRows(Connection conn, String tableFullName) throws 
SQLException {
+            ResultSet count = conn.createStatement().executeQuery("select 
count(*) from " + tableFullName);
+            count.next();
+            int numRows = count.getInt(1);
+            return numRows;
+        }
+
     }
 
     @RunWith(Parameterized.class) public static class 
IndexScrutinyToolNonTenantIT extends SharedIndexToolIT {
@@ -247,8 +256,8 @@ public class IndexScrutinyToolIT {
             upsertRow(dataTableUpsertStmt, 2, "name-2", 95123);
             conn.commit();
 
-            int numDataRows = countRows(dataTableFullName);
-            int numIndexRows = countRows(indexTableFullName);
+            int numDataRows = countRows(conn, dataTableFullName);
+            int numIndexRows = countRows(conn, indexTableFullName);
 
             // scrutiny should report everything as ok
             List<Job> completedJobs = runScrutiny(schemaName, dataTableName, 
indexTableName);
@@ -259,8 +268,8 @@ public class IndexScrutinyToolIT {
             assertEquals(0, getCounterValue(counters, INVALID_ROW_COUNT));
 
             // make sure row counts weren't modified by scrutiny
-            assertEquals(numDataRows, countRows(dataTableFullName));
-            assertEquals(numIndexRows, countRows(indexTableFullName));
+            assertEquals(numDataRows, countRows(conn, dataTableFullName));
+            assertEquals(numIndexRows, countRows(conn, indexTableFullName));
         }
 
         /**
@@ -405,7 +414,7 @@ public class IndexScrutinyToolIT {
                 deleteRow(indexTableFullName, "WHERE \":ID\"=" + idToDelete);
             }
             conn.commit();
-            int numRows = countRows(indexTableFullName);
+            int numRows = countRows(conn, indexTableFullName);
             int numDeleted = numTestRows - numRows;
 
             // run scrutiny with batch size of 10
@@ -683,13 +692,6 @@ public class IndexScrutinyToolIT {
             indexTableFullName = SchemaUtil.getTableName(schemaName, 
indexTableName);
         }
 
-        private int countRows(String tableFullName) throws SQLException {
-            ResultSet count = conn.createStatement().executeQuery("select 
count(*) from " + tableFullName);
-            count.next();
-            int numRows = count.getInt(1);
-            return numRows;
-        }
-
         private void upsertIndexRow(String name, int id, int zip) throws 
SQLException {
             indexTableUpsertStmt.setString(1, name);
             indexTableUpsertStmt.setInt(2, id); // id
@@ -898,9 +900,17 @@ public class IndexScrutinyToolIT {
         * Add 3 rows to Tenant view.
         * Empty index table and observe they are not equal.
         * Use data table as source and output to file.
-        * Output to table doesn't work for tenantid connection because it 
can't create the scrutiny table as tenant.
         **/
         @Test public void testWithEmptyIndexTableOutputToFile() throws 
Exception{
+            testWithOutput(OutputFormat.FILE);
+        }
+
+        @Test public void testWithEmptyIndexTableOutputToTable() throws 
Exception{
+            testWithOutput(OutputFormat.TABLE);
+            assertEquals(3, countRows(connGlobal, OUTPUT_TABLE_NAME));
+        }
+
+        private void testWithOutput(OutputFormat outputFormat) throws 
Exception {
             connTenant.createStatement()
                     .execute(String.format(upsertQueryStr, tenantViewName, 
tenantId, 1, "x"));
             connTenant.createStatement()
@@ -919,7 +929,7 @@ public class IndexScrutinyToolIT {
 
             String[]
                     argValues =
-                    getArgValues("", tenantViewName, indexNameTenant, 10L, 
SourceTable.DATA_TABLE_SOURCE, true, OutputFormat.FILE, null,
+                    getArgValues("", tenantViewName, indexNameTenant, 10L, 
SourceTable.DATA_TABLE_SOURCE, true, outputFormat, null,
                             tenantId, 
EnvironmentEdgeManager.currentTimeMillis());
             List<Job> completedJobs = runScrutiny(argValues);
 
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java
index 26d7336..39df6ac 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java
@@ -428,7 +428,9 @@ public class IndexScrutinyTool extends Configured 
implements Tool {
 
             if (outputInvalidRows && OutputFormat.TABLE.equals(outputFormat)) {
                 // create the output table if it doesn't exist
-                try (Connection outputConn = 
ConnectionUtil.getOutputConnection(configuration)) {
+                Configuration outputConfiguration = 
HBaseConfiguration.create(configuration);
+                outputConfiguration.unset(PhoenixRuntime.TENANT_ID_ATTRIB);
+                try (Connection outputConn = 
ConnectionUtil.getOutputConnection(outputConfiguration)) {
                     
outputConn.createStatement().execute(IndexScrutinyTableOutput.OUTPUT_TABLE_DDL);
                     outputConn.createStatement()
                             
.execute(IndexScrutinyTableOutput.OUTPUT_METADATA_DDL);

Reply via email to