You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by hy...@apache.org on 2014/05/20 20:46:29 UTC
[31/48] git commit: TAJO-812: Some methods of TajoDatabaseMetaData
should result in an empty tuple list instead of
SQLFeatureNotSupportedException.
TAJO-812: Some methods of TajoDatabaseMetaData should result in an empty tuple list instead of SQLFeatureNotSupportedException.
This closes #6
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/3ffb4ee2
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/3ffb4ee2
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/3ffb4ee2
Branch: refs/heads/window_function
Commit: 3ffb4ee24499865720eef518d8ccb1948c274d65
Parents: 3c204f4
Author: Hyunsik Choi <hy...@apache.org>
Authored: Wed May 7 14:47:29 2014 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Wed May 7 15:07:53 2014 +0900
----------------------------------------------------------------------
pom.xml | 1 +
.../java/org/apache/tajo/client/TajoClient.java | 4 +
.../apache/tajo/jdbc/TajoDatabaseMetaData.java | 138 ++++++++++---------
.../apache/tajo/jdbc/TajoMetaDataResultSet.java | 16 ++-
.../apache/tajo/jdbc/TajoPreparedStatement.java | 2 +-
.../site/resources/releases/0.8.0/relnotes.html | 20 ++-
.../org/apache/tajo/rpc/NettyClientBase.java | 19 +++
.../org/apache/tajo/rpc/NettyServerBase.java | 2 -
8 files changed, 129 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/3ffb4ee2/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5105584..47643e4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -377,6 +377,7 @@
<exclude>**/sphinx_rtd_theme/**/*</exclude>
<!-- tajo-doc -->
<exclude>**/*.rst</exclude>
+ <exclude>**/resources/*</exclude>
</excludes>
</configuration>
</plugin>
http://git-wip-us.apache.org/repos/asf/tajo/blob/3ffb4ee2/tajo-client/src/main/java/org/apache/tajo/client/TajoClient.java
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/java/org/apache/tajo/client/TajoClient.java b/tajo-client/src/main/java/org/apache/tajo/client/TajoClient.java
index 9662424..d981917 100644
--- a/tajo-client/src/main/java/org/apache/tajo/client/TajoClient.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/TajoClient.java
@@ -105,6 +105,10 @@ public class TajoClient implements Closeable {
this.baseDatabase = baseDatabase != null ? baseDatabase : null;
}
+ public void setSessionId(TajoIdProtos.SessionIdProto sessionId) {
+ this.sessionId = sessionId;
+ }
+
public boolean isConnected() {
try {
return connPool.getConnection(tajoMasterAddr, TajoMasterClientProtocol.class, false).isConnected();
http://git-wip-us.apache.org/repos/asf/tajo/blob/3ffb4ee2/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java
----------------------------------------------------------------------
diff --git a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java
index c06014d..1b73047 100644
--- a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java
+++ b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java
@@ -21,10 +21,7 @@ import com.google.common.collect.Lists;
import com.google.protobuf.ServiceException;
import org.apache.tajo.TajoConstants;
import org.apache.tajo.annotation.Nullable;
-import org.apache.tajo.catalog.CatalogConstants;
-import org.apache.tajo.catalog.CatalogUtil;
-import org.apache.tajo.catalog.Column;
-import org.apache.tajo.catalog.TableDesc;
+import org.apache.tajo.catalog.*;
import org.apache.tajo.client.ResultSetUtil;
import org.apache.tajo.client.TajoClient;
import org.apache.tajo.common.TajoDataTypes.Type;
@@ -350,64 +347,58 @@ public class TajoDatabaseMetaData implements DatabaseMetaData {
@Override
public ResultSet getTables(@Nullable String catalog, @Nullable String schemaPattern,
@Nullable String tableNamePattern, @Nullable String [] types) throws SQLException {
- try {
- final List<MetaDataTuple> resultTables = new ArrayList<MetaDataTuple>();
- String regtableNamePattern = convertPattern(tableNamePattern == null ? null : tableNamePattern);
-
- List<String> targetCatalogs = Lists.newArrayList();
- if (catalog != null) {
- targetCatalogs.add(catalog);
- }
-
- try {
- TajoClient tajoClient = conn.getTajoClient();
+ final List<MetaDataTuple> resultTables = new ArrayList<MetaDataTuple>();
+ String regtableNamePattern = convertPattern(tableNamePattern == null ? null : tableNamePattern);
- // if catalog is null, all databases are targets.
- if (targetCatalogs.isEmpty()) {
- targetCatalogs.addAll(tajoClient.getAllDatabaseNames());
- }
+ List<String> targetCatalogs = Lists.newArrayList();
+ if (catalog != null) {
+ targetCatalogs.add(catalog);
+ }
- for (String databaseName : targetCatalogs) {
- List<String> tableNames = tajoClient.getTableList(databaseName);
- for (String eachTableName: tableNames) {
- if (eachTableName.matches(regtableNamePattern)) {
- MetaDataTuple tuple = new MetaDataTuple(5);
+ try {
+ TajoClient tajoClient = conn.getTajoClient();
- int index = 0;
- tuple.put(index++, new TextDatum(databaseName)); // TABLE_CAT
- tuple.put(index++, new TextDatum(DEFAULT_SCHEMA_NAME)); // TABLE_SCHEM
- tuple.put(index++, new TextDatum(eachTableName)); // TABLE_NAME
- tuple.put(index++, new TextDatum("TABLE")); // TABLE_TYPE
- tuple.put(index++, NullDatum.get()); // REMARKS
+ // if catalog is null, all databases are targets.
+ if (targetCatalogs.isEmpty()) {
+ targetCatalogs.addAll(tajoClient.getAllDatabaseNames());
+ }
- resultTables.add(tuple);
- }
+ for (String databaseName : targetCatalogs) {
+ List<String> tableNames = tajoClient.getTableList(databaseName);
+ for (String eachTableName: tableNames) {
+ if (eachTableName.matches(regtableNamePattern)) {
+ MetaDataTuple tuple = new MetaDataTuple(5);
+
+ int index = 0;
+ tuple.put(index++, new TextDatum(databaseName)); // TABLE_CAT
+ tuple.put(index++, new TextDatum(DEFAULT_SCHEMA_NAME)); // TABLE_SCHEM
+ tuple.put(index++, new TextDatum(eachTableName)); // TABLE_NAME
+ tuple.put(index++, new TextDatum("TABLE")); // TABLE_TYPE
+ tuple.put(index++, NullDatum.get()); // REMARKS
+
+ resultTables.add(tuple);
}
}
- Collections.sort(resultTables, new Comparator<MetaDataTuple> () {
- @Override
- public int compare(MetaDataTuple table1, MetaDataTuple table2) {
- int compVal = table1.getText(1).compareTo(table2.getText(1));
- if (compVal == 0) {
- compVal = table1.getText(2).compareTo(table2.getText(2));
- }
- return compVal;
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- throw new SQLException(e);
}
- TajoMetaDataResultSet result = new TajoMetaDataResultSet(
- Arrays.asList("TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "TABLE_TYPE", "REMARKS"),
- Arrays.asList(Type.VARCHAR, Type.VARCHAR, Type.VARCHAR, Type.VARCHAR, Type.VARCHAR),
- resultTables);
-
- return result;
- } catch (Exception e) {
- e.printStackTrace();
- throw new SQLException(e.getMessage(), e);
+ Collections.sort(resultTables, new Comparator<MetaDataTuple> () {
+ @Override
+ public int compare(MetaDataTuple table1, MetaDataTuple table2) {
+ int compVal = table1.getText(1).compareTo(table2.getText(1));
+ if (compVal == 0) {
+ compVal = table1.getText(2).compareTo(table2.getText(2));
+ }
+ return compVal;
+ }
+ });
+ } catch (Throwable e) {
+ throw new SQLException(e);
}
+ TajoMetaDataResultSet result = new TajoMetaDataResultSet(
+ Arrays.asList("TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "TABLE_TYPE", "REMARKS"),
+ Arrays.asList(Type.VARCHAR, Type.VARCHAR, Type.VARCHAR, Type.VARCHAR, Type.VARCHAR),
+ resultTables);
+
+ return result;
}
@Override
@@ -551,8 +542,7 @@ public class TajoDatabaseMetaData implements DatabaseMetaData {
, Type.INT4, Type.INT4, Type.VARCHAR, Type.VARCHAR, Type.VARCHAR
, Type.VARCHAR, Type.INT4)
, columns);
- } catch (Exception e) {
- e.printStackTrace();
+ } catch (Throwable e) {
throw new SQLException(e);
}
}
@@ -582,28 +572,44 @@ public class TajoDatabaseMetaData implements DatabaseMetaData {
}
@Override
- public ResultSet getPrimaryKeys(String catalog, String schema, String table)
- throws SQLException {
- throw new SQLFeatureNotSupportedException("primary keys not supported");
+ public ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException {
+ return new TajoMetaDataResultSet(
+ Arrays.asList("TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "COLUMN_NAME", "KEY_SEQ", "PK_NAME")
+ , Arrays.asList(Type.VARCHAR, Type.VARCHAR, Type.VARCHAR, Type.VARCHAR, Type.INT4, Type.VARCHAR)
+ , new ArrayList<MetaDataTuple>());
}
+ private final static Schema importedExportedSchema = new Schema()
+ .addColumn("PKTABLE_CAT", Type.VARCHAR) // 0
+ .addColumn("PKTABLE_SCHEM", Type.VARCHAR) // 1
+ .addColumn("PKTABLE_NAME", Type.VARCHAR) // 2
+ .addColumn("PKCOLUMN_NAME", Type.VARCHAR) // 3
+ .addColumn("FKTABLE_CAT", Type.VARCHAR) // 4
+ .addColumn("FKTABLE_SCHEM", Type.VARCHAR) // 5
+ .addColumn("FKTABLE_NAME", Type.VARCHAR) // 6
+ .addColumn("FKCOLUMN_NAME", Type.VARCHAR) // 7
+ .addColumn("KEY_SEQ", Type.INT2) // 8
+ .addColumn("UPDATE_RULE", Type.INT2) // 9
+ .addColumn("DELETE_RULE", Type.INT2) // 10
+ .addColumn("FK_NAME", Type.VARCHAR) // 11
+ .addColumn("PK_NAME", Type.VARCHAR) // 12
+ .addColumn("DEFERRABILITY", Type.INT2); // 13
+
@Override
- public ResultSet getImportedKeys(String catalog, String schema, String table)
- throws SQLException {
- throw new SQLFeatureNotSupportedException("imported keys not supported");
+ public ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException {
+ return new TajoMetaDataResultSet(importedExportedSchema, new ArrayList<MetaDataTuple>());
}
@Override
- public ResultSet getExportedKeys(String catalog, String schema, String table)
- throws SQLException {
- throw new SQLFeatureNotSupportedException("exported keys not supported");
+ public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException {
+ return new TajoMetaDataResultSet(importedExportedSchema, new ArrayList<MetaDataTuple>());
}
@Override
public ResultSet getCrossReference(String parentCatalog, String parentSchema, String parentTable,
String foreignCatalog, String foreignSchema, String foreignTable)
throws SQLException {
- throw new SQLFeatureNotSupportedException("cross reference not supported");
+ return new TajoMetaDataResultSet(importedExportedSchema, new ArrayList<MetaDataTuple>());
}
@Override
http://git-wip-us.apache.org/repos/asf/tajo/blob/3ffb4ee2/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java
----------------------------------------------------------------------
diff --git a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java
index fb0a834..faa058d 100644
--- a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java
+++ b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java
@@ -1,4 +1,4 @@
-package org.apache.tajo.jdbc; /**
+/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -16,6 +16,8 @@ package org.apache.tajo.jdbc; /**
* limitations under the License.
*/
+package org.apache.tajo.jdbc;
+
import org.apache.tajo.catalog.Schema;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
@@ -28,6 +30,12 @@ import java.util.List;
public class TajoMetaDataResultSet extends TajoResultSetBase {
private List<MetaDataTuple> values;
+ public TajoMetaDataResultSet(Schema schema, List<MetaDataTuple> values) {
+ init();
+ this.schema = schema;
+ setDataTuples(values);
+ }
+
public TajoMetaDataResultSet(List<String> columns, List<Type> types, List<MetaDataTuple> values) {
init();
schema = new Schema();
@@ -38,8 +46,12 @@ public class TajoMetaDataResultSet extends TajoResultSetBase {
schema.addColumn(columnName, types.get(index++));
}
}
+ setDataTuples(values);
+ }
+
+ protected void setDataTuples(List<MetaDataTuple> values) {
this.values = values;
- totalRow = values == null ? 0 : values.size();
+ this.totalRow = values == null ? 0 : values.size();
}
@Override
http://git-wip-us.apache.org/repos/asf/tajo/blob/3ffb4ee2/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoPreparedStatement.java
----------------------------------------------------------------------
diff --git a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoPreparedStatement.java b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoPreparedStatement.java
index c1d0ad2..bc7d0b0 100644
--- a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoPreparedStatement.java
+++ b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoPreparedStatement.java
@@ -60,7 +60,7 @@ public class TajoPreparedStatement implements PreparedStatement {
/**
* keep the current ResultRet update count
*/
- private final int updateCount = 0;
+ private int updateCount = 0;
/**
*
http://git-wip-us.apache.org/repos/asf/tajo/blob/3ffb4ee2/tajo-project/src/site/resources/releases/0.8.0/relnotes.html
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/resources/releases/0.8.0/relnotes.html b/tajo-project/src/site/resources/releases/0.8.0/relnotes.html
index 3eae925..892db47 100644
--- a/tajo-project/src/site/resources/releases/0.8.0/relnotes.html
+++ b/tajo-project/src/site/resources/releases/0.8.0/relnotes.html
@@ -1,5 +1,21 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
-<!-- saved from url=(0073)http://people.apache.org/~hyunsik/tajo-0.8.0-rc0/RELEASE_NOTES_0.8.0.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Apache Tajo 0.8.0 Release Notes</title>
</head>
@@ -769,4 +785,4 @@
</ul>
-<iframe id="rdbIndicator" width="100%" height="270" border="0" src="./Apache Tajo 0.8.0 Release Notes_files/indicator.html" style="display: none; border: 0; position: fixed; left: 0; top: 0; z-index: 2147483647"></iframe></body></html>
\ No newline at end of file
+<iframe id="rdbIndicator" width="100%" height="270" border="0" src="./Apache Tajo 0.8.0 Release Notes_files/indicator.html" style="display: none; border: 0; position: fixed; left: 0; top: 0; z-index: 2147483647"></iframe></body></html>
http://git-wip-us.apache.org/repos/asf/tajo/blob/3ffb4ee2/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyClientBase.java
----------------------------------------------------------------------
diff --git a/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyClientBase.java b/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyClientBase.java
index fa4b941..fe41267 100644
--- a/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyClientBase.java
+++ b/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyClientBase.java
@@ -24,15 +24,19 @@ import org.apache.tajo.util.NetUtils;
import org.jboss.netty.bootstrap.ClientBootstrap;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelFuture;
+import org.jboss.netty.channel.ChannelFutureListener;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.socket.ClientSocketChannelFactory;
import java.io.Closeable;
import java.io.IOException;
import java.net.InetSocketAddress;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
public abstract class NettyClientBase implements Closeable {
private static Log LOG = LogFactory.getLog(NettyClientBase.class);
+ private static final int CLIENT_CONNECTION_TIMEOUT_SEC = 60;
protected ClientBootstrap bootstrap;
private ChannelFuture channelFuture;
@@ -71,6 +75,21 @@ public abstract class NettyClientBase implements Closeable {
}
this.channelFuture = bootstrap.connect(addr);
this.channelFuture.awaitUninterruptibly();
+
+ final CountDownLatch latch = new CountDownLatch(1);
+ this.channelFuture.addListener(new ChannelFutureListener() {
+ @Override
+ public void operationComplete(ChannelFuture future) throws Exception {
+ latch.countDown();
+ }
+ });
+
+ try {
+ latch.await(CLIENT_CONNECTION_TIMEOUT_SEC, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ }
+
+
if (!channelFuture.isSuccess()) {
throw new RuntimeException(channelFuture.getCause());
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/3ffb4ee2/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java
----------------------------------------------------------------------
diff --git a/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java b/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java
index 9ee098d..e75418d 100644
--- a/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java
+++ b/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java
@@ -68,8 +68,6 @@ public class NettyServerBase {
public void init(ChannelPipelineFactory pipeline, int workerNum) {
ChannelFactory factory = RpcChannelFactory.createServerChannelFactory(serviceName, workerNum);
- DefaultChannelFuture.setUseDeadLockChecker(false);
-
pipelineFactory = pipeline;
bootstrap = new ServerBootstrap(factory);
bootstrap.setPipelineFactory(pipelineFactory);