You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2015/04/07 02:45:48 UTC
[1/2] incubator-calcite git commit: [CALCITE-641] Implement logging
throughout Avatica server (Nick Dimiduk)
Repository: incubator-calcite
Updated Branches:
refs/heads/master 7d522dc93 -> 5f57f7892
[CALCITE-641] Implement logging throughout Avatica server (Nick Dimiduk)
Close apache/incubator-calcite#73
Project: http://git-wip-us.apache.org/repos/asf/incubator-calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/d4d7ab99
Tree: http://git-wip-us.apache.org/repos/asf/incubator-calcite/tree/d4d7ab99
Diff: http://git-wip-us.apache.org/repos/asf/incubator-calcite/diff/d4d7ab99
Branch: refs/heads/master
Commit: d4d7ab996e12763b65b397459a882a6b8a03021b
Parents: 7d522dc
Author: Nick Dimiduk <nd...@gmail.com>
Authored: Mon Apr 6 13:39:36 2015 -0700
Committer: Julian Hyde <jh...@apache.org>
Committed: Mon Apr 6 15:06:47 2015 -0700
----------------------------------------------------------------------
.../apache/calcite/avatica/jdbc/JdbcMeta.java | 10 +++
.../calcite/avatica/server/AvaticaHandler.java | 11 ++++
.../calcite/avatica/server/HttpServer.java | 64 +++++++++++---------
3 files changed, 57 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/d4d7ab99/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
----------------------------------------------------------------------
diff --git a/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java b/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
index f9d783d..276dd71 100644
--- a/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
+++ b/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
@@ -516,6 +516,10 @@ public class JdbcMeta implements Meta {
public MetaResultSet getBestRowIdentifier(String catalog, String schema,
String table, int scope, boolean nullable) {
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("getBestRowIdentifier catalog:" + catalog + " schema:" + schema
+ + " table:" + table + " scope:" + scope + " nullable:" + nullable);
+ }
try {
return JdbcResultSet.create(DEFAULT_CONN_ID, -1,
connection.getMetaData().getBestRowIdentifier(catalog, schema,
@@ -527,6 +531,9 @@ public class JdbcMeta implements Meta {
public MetaResultSet getVersionColumns(String catalog, String schema,
String table) {
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("getVersionColumns catalog:" + catalog + " schema:" + schema + " table:" + table);
+ }
try {
return JdbcResultSet.create(DEFAULT_CONN_ID, -1,
connection.getMetaData().getVersionColumns(catalog, schema, table));
@@ -537,6 +544,9 @@ public class JdbcMeta implements Meta {
public MetaResultSet getPrimaryKeys(String catalog, String schema,
String table) {
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("getPrimaryKeys catalog:" + catalog + " schema:" + schema + " table:" + table);
+ }
try {
return JdbcResultSet.create(DEFAULT_CONN_ID, -1,
connection.getMetaData().getPrimaryKeys(catalog, schema, table));
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/d4d7ab99/avatica-server/src/main/java/org/apache/calcite/avatica/server/AvaticaHandler.java
----------------------------------------------------------------------
diff --git a/avatica-server/src/main/java/org/apache/calcite/avatica/server/AvaticaHandler.java b/avatica-server/src/main/java/org/apache/calcite/avatica/server/AvaticaHandler.java
index bb4605f..63c6c9f 100644
--- a/avatica-server/src/main/java/org/apache/calcite/avatica/server/AvaticaHandler.java
+++ b/avatica-server/src/main/java/org/apache/calcite/avatica/server/AvaticaHandler.java
@@ -19,6 +19,9 @@ package org.apache.calcite.avatica.server;
import org.apache.calcite.avatica.remote.JsonHandler;
import org.apache.calcite.avatica.remote.Service;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
@@ -31,6 +34,8 @@ import javax.servlet.http.HttpServletResponse;
* Jetty handler that executes Avatica JSON request-responses.
*/
public class AvaticaHandler extends AbstractHandler {
+ private static final Log LOG = LogFactory.getLog(AvaticaHandler.class);
+
final JsonHandler jsonHandler;
public AvaticaHandler(Service service) {
@@ -44,7 +49,13 @@ public class AvaticaHandler extends AbstractHandler {
response.setStatus(HttpServletResponse.SC_OK);
if (request.getMethod().equals("POST")) {
final String jsonRequest = request.getHeader("request");
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("request: " + jsonRequest);
+ }
final String jsonResponse = jsonHandler.apply(jsonRequest);
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("response: " + jsonResponse);
+ }
baseRequest.setHandled(true);
response.getWriter().println(jsonResponse);
}
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/d4d7ab99/avatica-server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java
----------------------------------------------------------------------
diff --git a/avatica-server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java b/avatica-server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java
index 4aa0f24..ccfb629 100644
--- a/avatica-server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java
+++ b/avatica-server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java
@@ -16,6 +16,9 @@
*/
package org.apache.calcite.avatica.server;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
@@ -28,6 +31,8 @@ import org.eclipse.jetty.util.thread.QueuedThreadPool;
* Avatica HTTP server.
*/
public class HttpServer {
+ private static final Log LOG = LogFactory.getLog(HttpServer.class);
+
private Server server;
private int port = -1;
private final Handler handler;
@@ -40,42 +45,45 @@ public class HttpServer {
public void start() {
if (server != null) {
throw new RuntimeException("Server is already started");
- } else {
- QueuedThreadPool threadPool = new QueuedThreadPool();
- threadPool.setDaemon(true);
- server = new Server(threadPool);
- server.manage(threadPool);
+ }
+
+ final QueuedThreadPool threadPool = new QueuedThreadPool();
+ threadPool.setDaemon(true);
+ server = new Server(threadPool);
+ server.manage(threadPool);
- final ServerConnector connector = new ServerConnector(server);
- connector.setIdleTimeout(60 * 1000);
- connector.setSoLingerTime(-1);
- connector.setPort(port);
- server.setConnectors(new Connector[] { connector });
+ final ServerConnector connector = new ServerConnector(server);
+ connector.setIdleTimeout(60 * 1000);
+ connector.setSoLingerTime(-1);
+ connector.setPort(port);
+ server.setConnectors(new Connector[] { connector });
- final HandlerList handlerList = new HandlerList();
- handlerList.setHandlers(new Handler[] {handler, new DefaultHandler()});
- server.setHandler(handlerList);
- try {
- server.start();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- port = connector.getLocalPort();
+ final HandlerList handlerList = new HandlerList();
+ handlerList.setHandlers(new Handler[] { handler, new DefaultHandler() });
+ server.setHandler(handlerList);
+ try {
+ server.start();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
+ port = connector.getLocalPort();
+
+ LOG.info("Service listening on port " + getPort() + ".");
}
public void stop() {
if (server == null) {
throw new RuntimeException("Server is already stopped");
- } else {
- try {
- final Server server1 = server;
- port = -1;
- server = null;
- server1.stop();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
+ }
+
+ LOG.info("Service terminating.");
+ try {
+ final Server server1 = server;
+ port = -1;
+ server = null;
+ server1.stop();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
}
[2/2] incubator-calcite git commit: [CALCITE-670]
AvaticaPreparedStatement should support execute() and executeUpdate() (Nick
Dimiduk)
Posted by jh...@apache.org.
[CALCITE-670] AvaticaPreparedStatement should support execute() and executeUpdate() (Nick Dimiduk)
Close apache/incubator-calcite#74
Project: http://git-wip-us.apache.org/repos/asf/incubator-calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/5f57f789
Tree: http://git-wip-us.apache.org/repos/asf/incubator-calcite/tree/5f57f789
Diff: http://git-wip-us.apache.org/repos/asf/incubator-calcite/diff/5f57f789
Branch: refs/heads/master
Commit: 5f57f78927a38939be56325fa9b6f44693b29cc9
Parents: d4d7ab9
Author: Nick Dimiduk <nd...@gmail.com>
Authored: Mon Apr 6 15:48:54 2015 -0700
Committer: Julian Hyde <jh...@apache.org>
Committed: Mon Apr 6 16:17:51 2015 -0700
----------------------------------------------------------------------
.../apache/calcite/avatica/jdbc/JdbcMeta.java | 14 +++++--
.../calcite/avatica/RemoteDriverTest.java | 42 ++++++++++++++++++++
.../avatica/AvaticaPreparedStatement.java | 8 +++-
3 files changed, 59 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/5f57f789/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
----------------------------------------------------------------------
diff --git a/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java b/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
index 276dd71..3b241de 100644
--- a/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
+++ b/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
@@ -184,6 +184,9 @@ public class JdbcMeta implements Meta {
*/
protected static List<ColumnMetaData>
columns(ResultSetMetaData metaData) throws SQLException {
+ if (metaData == null) {
+ return Collections.emptyList();
+ }
final List<ColumnMetaData> columns = new ArrayList<>();
for (int i = 1; i <= metaData.getColumnCount(); i++) {
final Type javaType =
@@ -805,10 +808,15 @@ public class JdbcMeta implements Meta {
preparedStatement.setObject(i + 1, o);
}
}
- statementInfo.resultSet = preparedStatement.executeQuery();
+ if (preparedStatement.execute()) {
+ statementInfo.resultSet = preparedStatement.getResultSet();
+ }
+ }
+ if (statementInfo.resultSet == null) {
+ return Frame.EMPTY;
+ } else {
+ return JdbcResultSet.frame(statementInfo.resultSet, offset, fetchMaxRowCount);
}
- return JdbcResultSet.frame(statementInfo.resultSet, offset,
- fetchMaxRowCount);
} catch (SQLException e) {
throw propagate(e);
}
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/5f57f789/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java
----------------------------------------------------------------------
diff --git a/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java b/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java
index f23e2fc..1c0e7d9 100644
--- a/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java
+++ b/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverTest.java
@@ -195,6 +195,48 @@ public class RemoteDriverTest {
connection.close();
}
+ @Test public void testStatementExecuteLocal() throws Exception {
+ checkStatementExecute(ljs(), false);
+ }
+
+ @Test public void testPrepareExecuteLocal() throws Exception {
+ checkStatementExecute(ljs(), true);
+ }
+
+ private void checkStatementExecute(Connection connection, boolean prepare) throws SQLException {
+ final String sql = "select * from (\n"
+ + " values (1, 'a'), (null, 'b'), (3, 'c')) as t (c1, c2)";
+ final Statement statement;
+ final ResultSet resultSet;
+ final ParameterMetaData parameterMetaData;
+ if (prepare) {
+ final PreparedStatement ps = connection.prepareStatement(sql);
+ statement = ps;
+ parameterMetaData = ps.getParameterMetaData();
+ assertTrue(ps.execute());
+ resultSet = ps.getResultSet();
+ } else {
+ statement = connection.createStatement();
+ parameterMetaData = null;
+ assertTrue(statement.execute(sql));
+ resultSet = statement.getResultSet();
+ }
+ if (parameterMetaData != null) {
+ assertThat(parameterMetaData.getParameterCount(), equalTo(0));
+ }
+ final ResultSetMetaData metaData = resultSet.getMetaData();
+ assertEquals(2, metaData.getColumnCount());
+ assertEquals("C1", metaData.getColumnName(1));
+ assertEquals("C2", metaData.getColumnName(2));
+ assertTrue(resultSet.next());
+ assertTrue(resultSet.next());
+ assertTrue(resultSet.next());
+ assertFalse(resultSet.next());
+ resultSet.close();
+ statement.close();
+ connection.close();
+ }
+
@Test public void testCreateInsertUpdateDrop() throws Exception {
final String drop = "drop table TEST_TABLE if exists";
final String create = "create table TEST_TABLE("
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/5f57f789/avatica/src/main/java/org/apache/calcite/avatica/AvaticaPreparedStatement.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaPreparedStatement.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaPreparedStatement.java
index 9324db7..f85dcc1 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaPreparedStatement.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaPreparedStatement.java
@@ -90,7 +90,8 @@ public abstract class AvaticaPreparedStatement
}
public int executeUpdate() throws SQLException {
- throw new UnsupportedOperationException(); // TODO:
+ getConnection().executeQueryInternal(this, signature, null);
+ return updateCount;
}
public void setNull(int parameterIndex, int sqlType) throws SQLException {
@@ -186,7 +187,10 @@ public abstract class AvaticaPreparedStatement
}
public boolean execute() throws SQLException {
- throw new UnsupportedOperationException();
+ getConnection().executeQueryInternal(this, signature, null);
+ // Result set is null for DML or DDL.
+ // Result set is closed if user cancelled the query.
+ return openResultSet != null && !openResultSet.isClosed();
}
public void addBatch() throws SQLException {