You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2018/09/24 15:28:39 UTC
[34/50] [abbrv] phoenix git commit: PHOENIX-4864 Fix
NullPointerException while Logging some DDL Statements
PHOENIX-4864 Fix NullPointerException while Logging some DDL Statements
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/46f50d29
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/46f50d29
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/46f50d29
Branch: refs/heads/omid2
Commit: 46f50d29435e29d35dc5cca0f9c68711b22c8308
Parents: 79e8337
Author: Ashutosh Parekh <pa...@gmail.com>
Authored: Thu Aug 23 12:11:23 2018 -0700
Committer: Karan Mehta <ka...@gmail.com>
Committed: Fri Aug 24 17:35:46 2018 -0700
----------------------------------------------------------------------
.../monitoring/PhoenixLoggingMetricsIT.java | 42 +++++++++++++++++++-
.../jdbc/LoggingPhoenixPreparedStatement.java | 5 ++-
.../phoenix/jdbc/LoggingPhoenixStatement.java | 5 ++-
3 files changed, 49 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/46f50d29/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixLoggingMetricsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixLoggingMetricsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixLoggingMetricsIT.java
index 7e56902..5d5524c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixLoggingMetricsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/monitoring/PhoenixLoggingMetricsIT.java
@@ -20,6 +20,7 @@ package org.apache.phoenix.monitoring;
import com.google.common.collect.Maps;
import org.apache.phoenix.jdbc.LoggingPhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixMetricsLog;
+import org.apache.phoenix.jdbc.LoggingPhoenixResultSet;
import org.junit.Before;
import org.junit.Test;
@@ -69,6 +70,35 @@ public class PhoenixLoggingMetricsIT extends BasePhoenixMetricsIT {
}
@Test
+ public void testResultSetTypeForQueries() throws Exception {
+ String tableName3 = generateUniqueName();
+
+ String create = "CREATE TABLE " + tableName3 + " (K INTEGER PRIMARY KEY)";
+ assertTrue(executeAndGetResultSet(create) == null);
+
+ String upsert = "UPSERT INTO " + tableName3 + " VALUES (42)";
+ assertTrue(executeAndGetResultSet(upsert) == null);
+
+ String select = "SELECT * FROM " + tableName3;
+ assertTrue(executeAndGetResultSet(select) instanceof LoggingPhoenixResultSet);
+
+ String createView = "CREATE VIEW TEST_VIEW (K INTEGER) AS SELECT * FROM " + tableName3;
+ assertTrue(executeAndGetResultSet(createView) == null);
+
+ String createIndex = "CREATE INDEX TEST_INDEX ON " + tableName3 + " (K)";
+ assertTrue(executeAndGetResultSet(createIndex) == null);
+
+ String dropIndex = "DROP INDEX TEST_INDEX ON " + tableName3;
+ assertTrue(executeAndGetResultSet(dropIndex) == null);
+
+ String dropView = "DROP VIEW TEST_VIEW";
+ assertTrue(executeAndGetResultSet(dropView) == null);
+
+ String dropTable = "DROP TABLE " + tableName3;
+ assertTrue(executeAndGetResultSet(dropTable) == null);
+ }
+
+ @Test
public void testPhoenixMetricsLoggedOnCommit() throws Exception {
// run SELECT to verify read metrics are logged
String query = "SELECT * FROM " + tableName1;
@@ -134,12 +164,22 @@ public class PhoenixLoggingMetricsIT extends BasePhoenixMetricsIT {
mutationReadMetricsMap.size() == 0);
}
+ private ResultSet executeAndGetResultSet(String query) throws Exception {
+ Statement stmt = loggedConn.createStatement();
+ stmt.execute(query);
+ return stmt.getResultSet();
+ }
+
private void verifyQueryLevelMetricsLogging(String query) throws SQLException {
Statement stmt = loggedConn.createStatement();
ResultSet rs = stmt.executeQuery(query);
+ assertTrue(rs instanceof LoggingPhoenixResultSet);
+ int rowsRetrievedCounter = 0;
while (rs.next()) {
+ rowsRetrievedCounter++;
}
rs.close();
+ assertTrue(rowsRetrievedCounter == NUM_ROWS);
assertTrue("Read metrics for not found for " + tableName1,
requestReadMetricsMap.get(tableName1).size() > 0);
assertTrue("Logged query doesn't match actual query", loggedSql.equals(query));
@@ -192,4 +232,4 @@ public class PhoenixLoggingMetricsIT extends BasePhoenixMetricsIT {
}
});
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/46f50d29/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixPreparedStatement.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixPreparedStatement.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixPreparedStatement.java
index 952e3fd..dbeea0d 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixPreparedStatement.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixPreparedStatement.java
@@ -45,7 +45,10 @@ public class LoggingPhoenixPreparedStatement extends DelegatePreparedStatement {
@Override
public ResultSet getResultSet() throws SQLException {
- return new LoggingPhoenixResultSet(super.getResultSet(), phoenixMetricsLog, sql);
+ // Re-use the cached ResultSet value since call to getResultSet() is not idempotent
+ ResultSet resultSet = super.getResultSet();
+ return (resultSet == null) ? null : new LoggingPhoenixResultSet(resultSet,
+ phoenixMetricsLog, sql);
}
@Override
http://git-wip-us.apache.org/repos/asf/phoenix/blob/46f50d29/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixStatement.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixStatement.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixStatement.java
index f9abe6a..de33893 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixStatement.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/LoggingPhoenixStatement.java
@@ -51,7 +51,10 @@ public class LoggingPhoenixStatement extends DelegateStatement {
@Override
public ResultSet getResultSet() throws SQLException {
- return new LoggingPhoenixResultSet(super.getResultSet(), phoenixMetricsLog, this.sql);
+ // Re-use the cached ResultSet value since call to getResultSet() is not idempotent
+ ResultSet resultSet = super.getResultSet();
+ return (resultSet == null) ? null : new LoggingPhoenixResultSet(resultSet,
+ phoenixMetricsLog, sql);
}
@Override