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

tdsilva pushed a commit to branch 4.14-HBase-1.2
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.14-HBase-1.2 by this push:
     new 6bb66eb  PhoenixResultSet#next() closes the result set if scanner 
returns null
6bb66eb is described below

commit 6bb66eb5565466a20ba09490cd082c144743c051
Author: s.kadam <s.ka...@salesforce.com>
AuthorDate: Thu Apr 18 14:05:21 2019 -0700

    PhoenixResultSet#next() closes the result set if scanner returns null
---
 .../org/apache/phoenix/end2end/QueryLoggerIT.java  | 193 +++++++++++----------
 .../org/apache/phoenix/jdbc/PhoenixResultSet.java  |   4 +-
 2 files changed, 102 insertions(+), 95 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryLoggerIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryLoggerIT.java
index 618d7d9..08cb0c1 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryLoggerIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryLoggerIT.java
@@ -101,44 +101,47 @@ public class QueryLoggerIT extends 
BaseUniqueNamesOwnClusterIT {
         Connection conn = DriverManager.getConnection(getUrl(),props);
         
assertEquals(conn.unwrap(PhoenixConnection.class).getLogLevel(),LogLevel.DEBUG);
         String query = "SELECT * FROM " + tableName;
-        ResultSet rs = conn.createStatement().executeQuery(query);
-        StatementContext context = ((PhoenixResultSet)rs).getContext();
-        String queryId = context.getQueryLogger().getQueryId();
-        while (rs.next()) {
-            rs.getString(1);
-            rs.getString(2);
+        StatementContext context;
+        try (ResultSet rs = conn.createStatement().executeQuery(query)) {
+            context = ((PhoenixResultSet) rs).getContext();
+            while (rs.next()) {
+                rs.getString(1);
+                rs.getString(2);
+            }
         }
-        ResultSet explainRS = conn.createStatement().executeQuery("Explain " + 
query);
+        String queryId = context.getQueryLogger().getQueryId();
 
         String logQuery = "SELECT * FROM " + SYSTEM_CATALOG_SCHEMA + ".\"" + 
SYSTEM_LOG_TABLE + "\"";
         int delay = 5000;
 
         // sleep for sometime to let query log committed
         Thread.sleep(delay);
-        rs = conn.createStatement().executeQuery(logQuery);
-        boolean foundQueryLog = false;
+        try (ResultSet explainRS = 
conn.createStatement().executeQuery("Explain " + query);
+             ResultSet rs = conn.createStatement().executeQuery(logQuery)) {
+            boolean foundQueryLog = false;
 
-        while (rs.next()) {
-            if (rs.getString(QUERY_ID).equals(queryId)) {
-                foundQueryLog = true;
-                assertEquals(rs.getString(BIND_PARAMETERS), null);
-                assertEquals(rs.getString(USER), 
System.getProperty("user.name"));
-                assertEquals(rs.getString(CLIENT_IP), 
InetAddress.getLocalHost().getHostAddress());
-                assertEquals(rs.getString(EXPLAIN_PLAN), 
QueryUtil.getExplainPlan(explainRS));
-                assertEquals(rs.getString(GLOBAL_SCAN_DETAILS), 
context.getScan().toJSON());
-                assertEquals(rs.getLong(NO_OF_RESULTS_ITERATED), 10);
-                assertEquals(rs.getString(QUERY), query);
-                assertEquals(rs.getString(QUERY_STATUS), 
QueryStatus.COMPLETED.toString());
-                assertEquals(rs.getString(TENANT_ID), null);
-                assertTrue(rs.getString(SCAN_METRICS_JSON)==null);
-                assertEquals(rs.getString(EXCEPTION_TRACE),null);
-            }else{
-                //confirm we are not logging system queries
-                
assertFalse(rs.getString(QUERY).toString().contains(SYSTEM_CATALOG_SCHEMA));
+            while (rs.next()) {
+                if (rs.getString(QUERY_ID).equals(queryId)) {
+                    foundQueryLog = true;
+                    assertEquals(rs.getString(BIND_PARAMETERS), null);
+                    assertEquals(rs.getString(USER), 
System.getProperty("user.name"));
+                    assertEquals(rs.getString(CLIENT_IP), 
InetAddress.getLocalHost().getHostAddress());
+                    assertEquals(rs.getString(EXPLAIN_PLAN), 
QueryUtil.getExplainPlan(explainRS));
+                    assertEquals(rs.getString(GLOBAL_SCAN_DETAILS), 
context.getScan().toJSON());
+                    assertEquals(rs.getLong(NO_OF_RESULTS_ITERATED), 10);
+                    assertEquals(rs.getString(QUERY), query);
+                    assertEquals(rs.getString(QUERY_STATUS), 
QueryStatus.COMPLETED.toString());
+                    assertEquals(rs.getString(TENANT_ID), null);
+                    assertTrue(rs.getString(SCAN_METRICS_JSON) == null);
+                    assertEquals(rs.getString(EXCEPTION_TRACE), null);
+                } else {
+                    //confirm we are not logging system queries
+                    
assertFalse(rs.getString(QUERY).toString().contains(SYSTEM_CATALOG_SCHEMA));
+                }
             }
+            assertTrue(foundQueryLog);
+            conn.close();
         }
-        assertTrue(foundQueryLog);
-        conn.close();
     }
     
     @Test
@@ -153,12 +156,12 @@ public class QueryLoggerIT extends 
BaseUniqueNamesOwnClusterIT {
         String query = "SELECT * FROM " + tableName;
         int count=100;
         for (int i = 0; i < count; i++) {
-            ResultSet rs = conn.createStatement().executeQuery(query);
-            while(rs.next()){
-                
+            try (ResultSet rs = conn.createStatement().executeQuery(query)) {
+                while (rs.next()) {
+
+                }
             }
         }
-        
         String logQuery = "SELECT * FROM " + SYSTEM_CATALOG_SCHEMA + ".\"" + 
SYSTEM_LOG_TABLE + "\"";
         ResultSet rs = conn.createStatement().executeQuery(logQuery);
         int delay = 5000;
@@ -184,37 +187,39 @@ public class QueryLoggerIT extends 
BaseUniqueNamesOwnClusterIT {
         Connection conn = DriverManager.getConnection(getUrl(),props);
         
assertEquals(conn.unwrap(PhoenixConnection.class).getLogLevel(),LogLevel.INFO);
         String query = "SELECT * FROM " + tableName;
-        
-        ResultSet rs = conn.createStatement().executeQuery(query);
-        StatementContext context = ((PhoenixResultSet)rs).getContext();
-        String queryId = context.getQueryLogger().getQueryId();
-        while (rs.next()) {
-            rs.getString(1);
-            rs.getString(2);
+        StatementContext context;
+        try (ResultSet rs = conn.createStatement().executeQuery(query)) {
+            context = ((PhoenixResultSet) rs).getContext();
+            while (rs.next()) {
+                rs.getString(1);
+                rs.getString(2);
+            }
         }
+        String queryId = context.getQueryLogger().getQueryId();
 
         String logQuery = "SELECT * FROM " + SYSTEM_CATALOG_SCHEMA + ".\"" + 
SYSTEM_LOG_TABLE + "\"";
         int delay = 5000;
 
         // sleep for sometime to let query log committed
         Thread.sleep(delay);
-        rs = conn.createStatement().executeQuery(logQuery);
-        boolean foundQueryLog = false;
-        while (rs.next()) {
-            if (rs.getString(QUERY_ID).equals(queryId)) {
-                foundQueryLog = true;
-                assertEquals(rs.getString(USER), 
System.getProperty("user.name"));
-                assertEquals(rs.getString(CLIENT_IP), 
InetAddress.getLocalHost().getHostAddress());
-                assertEquals(rs.getString(EXPLAIN_PLAN), null);
-                assertEquals(rs.getString(GLOBAL_SCAN_DETAILS),null);
-                assertEquals(rs.getLong(NO_OF_RESULTS_ITERATED), 10);
-                assertEquals(rs.getString(QUERY), query);
-                
assertEquals(rs.getString(QUERY_STATUS),QueryStatus.COMPLETED.toString());
-                assertEquals(rs.getString(TENANT_ID), null);
+        try (ResultSet rs = conn.createStatement().executeQuery(logQuery)) {
+            boolean foundQueryLog = false;
+            while (rs.next()) {
+                if (rs.getString(QUERY_ID).equals(queryId)) {
+                    foundQueryLog = true;
+                    assertEquals(rs.getString(USER), 
System.getProperty("user.name"));
+                    assertEquals(rs.getString(CLIENT_IP), 
InetAddress.getLocalHost().getHostAddress());
+                    assertEquals(rs.getString(EXPLAIN_PLAN), null);
+                    assertEquals(rs.getString(GLOBAL_SCAN_DETAILS), null);
+                    assertEquals(rs.getLong(NO_OF_RESULTS_ITERATED), 10);
+                    assertEquals(rs.getString(QUERY), query);
+                    assertEquals(rs.getString(QUERY_STATUS), 
QueryStatus.COMPLETED.toString());
+                    assertEquals(rs.getString(TENANT_ID), null);
+                }
             }
+            assertTrue(foundQueryLog);
+            conn.close();
         }
-        assertTrue(foundQueryLog);
-        conn.close();
     }
     
     @Test
@@ -272,46 +277,50 @@ public class QueryLoggerIT extends 
BaseUniqueNamesOwnClusterIT {
         final MyClock clock = new MyClock(100);
         EnvironmentEdgeManager.injectEdge(clock);
         try{
-        String query = "SELECT * FROM " + tableName +" where V = ?";
-        
-        PreparedStatement pstmt = conn.prepareStatement(query);
-        pstmt.setString(1, "value5");
-        ResultSet rs = pstmt.executeQuery();
-        StatementContext context = ((PhoenixResultSet)rs).getContext();
-        String queryId = context.getQueryLogger().getQueryId();
-        while (rs.next()) {
-            rs.getString(1);
-            rs.getString(2);
-        }
-        ResultSet explainRS = conn.createStatement()
-                .executeQuery("Explain " + "SELECT * FROM " + tableName + " 
where V = 'value5'");
-        String logQuery = "SELECT * FROM " + SYSTEM_CATALOG_SCHEMA + ".\"" + 
SYSTEM_LOG_TABLE + "\"";
-        int delay = 5000;
+            String query = "SELECT * FROM " + tableName +" where V = ?";
+            StatementContext context;
+            PreparedStatement pstmt = conn.prepareStatement(query);
+            pstmt.setString(1, "value5");
+            try (ResultSet rs = pstmt.executeQuery()) {
+                 context = ((PhoenixResultSet) rs).getContext();
+                while (rs.next()) {
+                    rs.getString(1);
+                    rs.getString(2);
+                }
+            }
+            String queryId = context.getQueryLogger().getQueryId();
 
-        // sleep for sometime to let query log committed
-        Thread.sleep(delay);
-        rs = conn.createStatement().executeQuery(logQuery);
-        boolean foundQueryLog = false;
-        while (rs.next()) {
-            if (rs.getString(QUERY_ID).equals(queryId)) {
-                foundQueryLog = true;
-                assertEquals(rs.getString(BIND_PARAMETERS), loglevel == 
LogLevel.TRACE ? "value5" : null);
-                assertEquals(rs.getString(USER), 
System.getProperty("user.name"));
-                assertEquals(rs.getString(CLIENT_IP), 
InetAddress.getLocalHost().getHostAddress());
-                assertEquals(rs.getString(EXPLAIN_PLAN), 
QueryUtil.getExplainPlan(explainRS));
-                assertEquals(rs.getString(GLOBAL_SCAN_DETAILS), 
context.getScan().toJSON());
-                assertEquals(rs.getLong(NO_OF_RESULTS_ITERATED), 1);
-                assertEquals(rs.getString(QUERY), query);
-                assertEquals(rs.getString(QUERY_STATUS), 
QueryStatus.COMPLETED.toString());
-                assertTrue(LogLevel.TRACE == loglevel ? 
rs.getString(SCAN_METRICS_JSON).contains("scanMetrics")
-                        : rs.getString(SCAN_METRICS_JSON) == null);
-                assertEquals(rs.getTimestamp(START_TIME).getTime(),100);
-                assertEquals(rs.getString(TENANT_ID), null);
+            String logQuery = "SELECT * FROM " + SYSTEM_CATALOG_SCHEMA + ".\"" 
+ SYSTEM_LOG_TABLE + "\"";
+            int delay = 5000;
+
+            // sleep for sometime to let query log committed
+            Thread.sleep(delay);
+            String explainQuery = "Explain " + "SELECT * FROM " + tableName + 
" where V = 'value5'";
+            try (ResultSet explainRS = conn.createStatement()
+                    .executeQuery(explainQuery);
+                 ResultSet rs = conn.createStatement().executeQuery(logQuery)) 
{
+                boolean foundQueryLog = false;
+                while (rs.next()) {
+                    if (rs.getString(QUERY_ID).equals(queryId)) {
+                        foundQueryLog = true;
+                        assertEquals(rs.getString(BIND_PARAMETERS), loglevel 
== LogLevel.TRACE ? "value5" : null);
+                        assertEquals(rs.getString(USER), 
System.getProperty("user.name"));
+                        assertEquals(rs.getString(CLIENT_IP), 
InetAddress.getLocalHost().getHostAddress());
+                        assertEquals(rs.getString(EXPLAIN_PLAN), 
QueryUtil.getExplainPlan(explainRS));
+                        assertEquals(rs.getString(GLOBAL_SCAN_DETAILS), 
context.getScan().toJSON());
+                        assertEquals(rs.getLong(NO_OF_RESULTS_ITERATED), 1);
+                        assertEquals(rs.getString(QUERY), query);
+                        assertEquals(rs.getString(QUERY_STATUS), 
QueryStatus.COMPLETED.toString());
+                        assertTrue(LogLevel.TRACE == loglevel ? 
rs.getString(SCAN_METRICS_JSON).contains("scanMetrics")
+                                : rs.getString(SCAN_METRICS_JSON) == null);
+                        assertEquals(rs.getTimestamp(START_TIME).getTime(), 
100);
+                        assertEquals(rs.getString(TENANT_ID), null);
+                    }
+                }
+                assertTrue(foundQueryLog);
+                conn.close();
             }
-        }
-        assertTrue(foundQueryLog);
-        conn.close();
-        }finally{
+        }finally {
             EnvironmentEdgeManager.injectEdge(null);
         }
     }
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSet.java 
b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSet.java
index 84816a0..2712205 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSet.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSet.java
@@ -803,9 +803,7 @@ public class PhoenixResultSet implements ResultSet, 
SQLCloseable {
                 overAllQueryMetrics.startResultSetWatch();
             }
             currentRow = scanner.next();
-            if (currentRow == null) {
-                close();
-            }else{
+            if (currentRow != null) {
                 count++;
             }
             rowProjector.reset();

Reply via email to